mbed library sources

Fork of mbed-src by mbed official

Files at this revision

API Documentation at this revision

Comitter:
mbed_official
Date:
Fri Oct 17 14:15:08 2014 +0100
Parent:
356:1c135c664c6b
Child:
358:9d7ef901f004
Commit message:
Synchronized with git revision 74cc430faad92b2df0cd91d78a074ec315ad7533

Full URL: https://github.com/mbedmicro/mbed/commit/74cc430faad92b2df0cd91d78a074ec315ad7533/

updating to v7.1.0 of the Nordic soft-device.

Changed in this revision

targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/doc/ble_api.dox Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/ble.h Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/ble_err.h Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/ble_gap.h Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/ble_gatt.h Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/ble_gattc.h Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/ble_gatts.h Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/ble_hci.h Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/ble_l2cap.h Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/ble_ranges.h Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/ble_types.h Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/nrf_error.h Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/nrf_error_sdm.h Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/nrf_error_soc.h Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/nrf_mbr.h Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/nrf_sdm.h Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/nrf_soc.h Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/nrf_svc.h Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/softdevice_assert.h Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_licence_agreement.pdf Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_migration-document.pdf Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_readme.txt Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_releasenotes.pdf Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_softdevice.hex Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/doc/ble_api.dox Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/ble.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/ble_err.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/ble_gap.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/ble_gatt.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/ble_gattc.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/ble_gatts.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/ble_hci.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/ble_l2cap.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/ble_ranges.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/ble_types.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/nrf_error.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/nrf_error_sdm.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/nrf_error_soc.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/nrf_mbr.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/nrf_sdm.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/nrf_soc.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/nrf_svc.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/softdevice_assert.h Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_licence_agreement.pdf Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_readme.txt Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_releasenotes.pdf Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_softdevice.hex Show annotated file Show diff for this revision Revisions of this file
--- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/doc/ble_api.dox	Fri Oct 17 14:00:07 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1334 +0,0 @@
-/**
- * @addtogroup BLE_COMMON 
- * @{
- * @defgroup BLE_COMMON_MSC Message Sequence Charts
- * @{
- * @defgroup BLE_COMMON_IRQ_EVT_MSC Interrupt-driven Event Retrieval
- * @msc
- * hscale = "1.5";
- * APP,SD;
- * |||;
- * APP=>SD [label = "sd_softdevice_enable(clock, assertion_handler);"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * APP=>SD [label = "sd_nvic_EnableIRQ(SD_EVENT_IRQn)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * |||;
- * APP rbox SD [label="Application runs and uses SD API"];
- * |||;
- * SD rbox SD [label="Event Available for the App"];
- * |||;
- * APP<-SD [label = "SD_EVENT_IRQn", textcolor="#800080", linecolor="#800080"];
- * APP=>APP [label = "SD_EVENT_IRQHandler()"];
- * APP=>SD [label = "sd_ble_evt_get(buffer);"];
- * APP<<SD [label = "{NRF_SUCCESS, event}"];
- * |||;
- * @endmsc
- *
- * @defgroup BLE_COMMON_THREAD_EVT_MSC Thread Mode Event Retrieval
- * @msc
- * hscale = "1.5";
- * APP,SD;
- * |||;
- * APP=>SD [label = "sd_softdevice_enable(clock, assertion_handler);"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * |||;
- * APP=>SD [label = "sd_app_evt_wait(void);"];
- * APP rbox APP [label="App Thread Mode blocked, CPU in low power mode"];
- * |||;
- * ...;
- * |||;
- * SD rbox SD [label="Event Available for the App"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * APP=>SD [label = "sd_ble_evt_get(buffer);"];
- * APP<<SD [label = "{NRF_SUCCESS, event}"];
- * APP=>SD [label = "sd_app_evt_wait(void);"];
- * APP rbox APP [label="App Thread Mode blocked, CPU in low power mode"];
- * |||;
- * ...;
- * |||;
- * SD rbox SD [label="Event Available for the App"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * APP=>SD [label = "sd_ble_evt_get(buffer);"];
- * APP<<SD [label = "{NRF_SUCCESS, event}"];
- * APP=>SD [label = "sd_app_evt_wait(void);"];
- * APP rbox APP [label="App Thread Mode blocked, CPU in low power mode"];
- * |||;
- * ...;
- * |||;
- * @endmsc
- *
- * @defgroup BLE_COMMON_APP_BUFF_MSC App Buffer Management
- * @msc
- * hscale = "1.5";
- * APP,SD,PEER;
- * |||;
- * APP=>SD [label = "sd_ble_tx_buffer_count_get();"];
- * APP<<SD [label = "{NRF_SUCCESS, N}"];
- * APP rbox APP [label="available = N"];
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * APP=>SD [label = "sd_ble_gattc_write(handle, value)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * APP rbox APP [label="available--"];
- * SD:>PEER [label = "ATT Write Command", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_EVT_TX_COMPLETE {1}"];
- * APP rbox APP [label="available += 1"];
- * |||;
- * ...;
- * |||;
- * APP=>SD [label = "sd_ble_gatts_hvx(NOTIFICATION, app_value)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * APP rbox APP [label="available--"];
- * SD:>PEER [label = "ATT Handle Value Notification", textcolor="#000080", linecolor="#000080"];
- * APP=>SD [label = "sd_ble_gatts_hvx(NOTIFICATION, app_value)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * APP rbox APP [label="available--"];
- * SD:>PEER [label = "ATT Handle Value Notification", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_EVT_TX_COMPLETE {2}"];
- * APP rbox APP [label="available += 2"];
- * |||;
- * ...;
- * |||;
- * APP rbox PEER [label="Terminate Connection"];
- * |||;
- * APP rbox APP [label="available = N"];
- * |||;
- * @endmsc
- * @}
- * @}
- */
-
-/**
- * @addtogroup BLE_GAP 
- * @{
- * @defgroup BLE_GAP_MSC Message Sequence Charts
- * @{
- * @defgroup BLE_GAP_ADV_MSC GAP Advertisement
- * @msc
- * hscale = "1.5";
- * APP,SD,SCANNERS;
- * |||;
- * APP=>SD [label = "sd_ble_gap_address_set(addr)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * APP=>SD [label = "sd_ble_gap_adv_data_set(adv, sr)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * APP=>SD [label = "sd_ble_gap_adv_start(params)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * |||;
- * SD->SCANNERS [label = "ADV packet", textcolor="#000080", linecolor="#000080"];
- * SD->SCANNERS [label = "ADV packet", textcolor="#000080", linecolor="#000080"];
- * SD->SCANNERS [label = "ADV packet", textcolor="#000080", linecolor="#000080"];
- * ...;
- * SD->SCANNERS [label = "ADV packet", textcolor="#000080", linecolor="#000080"];
- * |||;
- * --- [label = " Variant #1 App Stops Advertisement "];
- * APP=>SD [label = "sd_ble_gap_adv_stop()"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * |||;
- * --- [label = " Variant #2 Advertisement Timeout "];
- * APP<<=SD [label = "BLE_GAP_EVT_TIMEOUT"];
- * @endmsc
- *
- * @defgroup BLE_GAP_CONN_MSC GAP Connection Establishment and Termination
- * @msc
- * hscale = "1.5";
- * APP,SD,CENTRAL;
- * |||;
- * APP rbox CENTRAL [label="Start Advertising"];
- * |||;
- * SD<:>CENTRAL [label = "Connection Establishment", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_CONNECTED"];
- * |||;
- * --- [label = " Variant #1 Local Disconnection "];
- * APP=>SD [label = "sd_ble_gap_disconnect(reason)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>CENTRAL [label = "Connection Termination", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_DISCONNECTED {reason}"];
- * |||;
- * --- [label = " Variant #2 Remote Disconnection "];
- * SD<:CENTRAL [label = "Connection Termination", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_DISCONNECTED {reason}"];
- * @endmsc
- *
- * @defgroup BLE_GAP_CPU_MSC GAP Connection Parameter Update
- * @msc
- * hscale = "1.5";
- * APP,SD,CENTRAL;
- * |||;
- * APP rbox CENTRAL [label="Connection Established with conn. params. CP#1"];
- * |||;
- * APP=>SD [label = "sd_ble_gap_conn_param_update(CP#2)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>CENTRAL [label = "L2CAP CPU Request", textcolor="#000080", linecolor="#000080"];
- * |||;
- * --- [label = " Variant #1 Central Accepts "];
- * |||;
- * SD<:CENTRAL [label = "L2CAP CPU Response: Accepted", textcolor="#000080", linecolor="#000080"];
- * |||;
- * SD<:CENTRAL [label = "Connection Update", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_CONN_PARAM_UPDATE {CP#2}"];
- * |||;
- * --- [label = " Variant #2 Central Rejects "];
- * |||;
- * SD<:CENTRAL [label = "L2CAP CPU Response: Rejected", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_CONN_PARAM_UPDATE {CP#1}"];
- * --- [label = " Variant #3 Central Ignores "];
- * |||;
- * ...;
- * |||;
- * SD box SD [label="Timeout"];
- * APP<<=SD [label = "BLE_GAP_EVT_CONN_PARAM_UPDATE {CP#1}"];
- * @endmsc
- *
- * @defgroup BLE_GAP_RSSI_MSC GAP RSSI
- * @msc
- * hscale = "1.5";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * APP=>SD [label = "sd_ble_gap_rssi_start()"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * |||;
- * SD<-PEER [label = "RSSI Sample", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_RSSI_CHANGED {RSSI#1}"];
- * |||;
- * SD<-PEER [label = "RSSI Sample", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_RSSI_CHANGED {RSSI#2}"];
- * |||;
- * SD<-PEER [label = "RSSI Sample", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_RSSI_CHANGED {RSSI#3}"];
- * |||;
- * APP=>SD [label = "sd_ble_gap_rssi_stop()"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * @endmsc
- *
- * @defgroup BLE_GAP_PAIRING_JW_MSC GAP Pairing: Just Works
- * @msc
- * hscale = "2";
- * APP,SD,CENTRAL;
- * |||;
- * APP rbox CENTRAL [label="Connection Established"];
- * |||;
- * SD<:CENTRAL [label = "SMP Pairing Request", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_SEC_PARAMS_REQUEST {central_params: no_bond, no_mitm, no_io_caps}"];
- * APP=>SD [label = "sd_ble_gap_sec_params_reply(SUCCESS, periph_params: no_bond, no_mitm, no_io_caps)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>CENTRAL [label = "SMP Pairing Response", textcolor="#000080", linecolor="#000080"];
- * |||;
- * SD abox CENTRAL [label="SMP Pairing Phase 2", textbgcolor="#7f7fff"];
- * |||;
- * APP<<=SD [label = "BLE_GAP_EVT_AUTH_STATUS {SUCCESS}"];
- * APP rbox CENTRAL [label = "Encrypted with STK"];
- * APP<<=SD [label = "BLE_GAP_EVT_CONN_SEC_UPDATE {ENC_NO_MITM}"];
- * @endmsc
- *
- * @defgroup BLE_GAP_BONDING_JW_MSC GAP Bonding: Just Works
- * @msc
- * hscale = "2";
- * APP,SD,CENTRAL;
- * |||;
- * APP rbox CENTRAL [label="Connection Established"];
- * |||;
- * SD<:CENTRAL [label = "SMP Pairing Request", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_SEC_PARAMS_REQUEST {central_params: bond, no_mitm, no_io_caps}"];
- * APP=>SD [label = "sd_ble_gap_sec_params_reply(SUCCESS, periph_params: bond, no_mitm, no_io_caps)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>CENTRAL [label = "SMP Pairing Response", textcolor="#000080", linecolor="#000080"];
- * |||;
- * SD abox CENTRAL [label="SMP Pairing Phase 2", textbgcolor="#7f7fff"];
- * |||;
- * APP rbox CENTRAL [label = "Encrypted with STK"];
- * APP<<=SD [label = "BLE_GAP_EVT_CONN_SEC_UPDATE {ENC_NO_MITM}"];
- * |||;
- * SD abox CENTRAL [label="SMP Pairing Phase 3", textbgcolor="#7f7fff"];
- * |||;
- * APP<<=SD [label = "BLE_GAP_EVT_AUTH_STATUS {SUCCESS, periph_keys}"];
- * APP rbox APP [label = "Store Peripheral Keys"];
- * @endmsc
- *
- * @defgroup BLE_GAP_BONDING_PK_PERIPH_MSC GAP Bonding: Passkey Entry, Peripheral displays
- * @msc
- * hscale = "2";
- * APP,SD,CENTRAL;
- * |||;
- * APP rbox CENTRAL [label="Connection Established"];
- * |||;
- * SD<:CENTRAL [label = "SMP Pairing Request", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_SEC_PARAMS_REQUEST {central_params: bond, mitm, keyboard}"];
- * APP=>SD [label = "sd_ble_gap_sec_params_reply(SUCCESS, periph_params: bond, mitm, display)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>CENTRAL [label = "SMP Pairing Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_PASSKEY_DISPLAY {passkey}"];
- * APP rbox APP [label="Passkey displayed to the user"];
- * |||;
- * SD abox CENTRAL [label="SMP Pairing Phase 2", textbgcolor="#7f7fff"];
- * |||;
- * APP rbox CENTRAL [label = "Encrypted with STK"];
- * APP<<=SD [label = "BLE_GAP_EVT_CONN_SEC_UPDATE {ENC_MITM}"];
- * |||;
- * SD abox CENTRAL [label="SMP Pairing Phase 3", textbgcolor="#7f7fff"];
- * |||;
- * APP<<=SD [label = "BLE_GAP_EVT_AUTH_STATUS {SUCCESS, periph_keys}"];
- * APP rbox APP [label = "Store Peripheral Keys"];
- * @endmsc
- *
- * @defgroup BLE_GAP_BONDING_PK_CENTRAL_OOB_MSC GAP Bonding: Passkey Entry (Central display) or OOB MSC
- * @msc
- * hscale = "2";
- * APP,SD,CENTRAL;
- * |||;
- * APP rbox CENTRAL [label="Connection Established"];
- * |||;
- * SD<:CENTRAL [label = "SMP Pairing Request", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_SEC_PARAMS_REQUEST {central_params: bond, mitm, display}"];
- * APP=>SD [label = "sd_ble_gap_sec_params_reply(SUCCESS, periph_params: bond, mitm, keyboard)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>CENTRAL [label = "SMP Pairing Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_AUTH_KEY_REQUEST {type}"];
- * APP rbox APP [label="User enters Passkey or data received Out Of Band"];
- * APP=>SD [label = "sd_ble_gap_auth_key_reply(passkey or OOB)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * |||;
- * SD abox CENTRAL [label="SMP Pairing Phase 2", textbgcolor="#7f7fff"];
- * |||;
- * APP rbox CENTRAL [label = "Encrypted with STK"];
- * APP<<=SD [label = "BLE_GAP_EVT_CONN_SEC_UPDATE {ENC_MITM}"];
- * |||;
- * SD abox CENTRAL [label="SMP Pairing Phase 3", textbgcolor="#7f7fff"];
- * |||;
- * APP<<=SD [label = "BLE_GAP_EVT_AUTH_STATUS {SUCCESS, periph_keys}"];
- * APP rbox APP [label = "Store Peripheral Keys"];
- * @endmsc
- *
- * @defgroup BLE_GAP_BONDING_STATIC_PK_PERIPHERAL GAP Bonding: Passkey Entry (Peripheral uses static passkey) MSC
- * @msc
- * hscale = "2";
- * APP,SD,CENTRAL;
- * |||;
- * APP=>SD [label = "sd_ble_opt_set(opt_id = BLE_GAP_OPT_PASSKEY, p_opt->p_passkey=passkey)"];
- * APP rbox CENTRAL [label="Connection Established"];
- * |||;
- * SD<:CENTRAL [label = "SMP Pairing Request", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_SEC_PARAMS_REQUEST {central_params: bond, mitm, keyboard}"];
- * APP=>SD [label = "sd_ble_gap_sec_params_reply(SUCCESS, periph_params: bond, mitm, io_caps = display)"];
- *
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>CENTRAL [label = "SMP Pairing Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_PASSKEY_DISPLAY {passkey}"];
- * APP rbox APP [label="Passkey displayed to the user"];
- * |||;
- * SD abox CENTRAL [label="SMP Pairing Phase 2", textbgcolor="#7f7fff"];
- * |||;
- * APP rbox CENTRAL [label = "Encrypted with STK"];
- * APP<<=SD [label = "BLE_GAP_EVT_CONN_SEC_UPDATE {ENC_MITM}"];
- * |||;
- * SD abox CENTRAL [label="SMP Pairing Phase 3", textbgcolor="#7f7fff"];
- * |||;
- * APP<<=SD [label = "BLE_GAP_EVT_AUTH_STATUS {SUCCESS, periph_keys}"];
- * APP rbox APP [label = "Store Peripheral Keys"];
- * @endmsc
- *
- * @defgroup BLE_GAP_SEC_MSC GAP Security Establishment using stored keys
- * @msc
- * hscale = "1.5";
- * APP,SD,CENTRAL;
- * |||;
- * APP rbox CENTRAL [label="Connection Established"];
- * |||;
- * SD<:CENTRAL [label = "LL Encryption Request", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_SEC_INFO_REQUEST {addr, div}"];
- * |||;
- * --- [label = " Variant #1 App Replies with Keys "];
- * |||;
- * APP rbox APP [label = "Load Peripheral Keys"];
- * APP=>SD [label = "sd_ble_gap_sec_info_reply(div, LTK)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>CENTRAL [label = "LL Encryption Response", textcolor="#000080", linecolor="#000080"];
- * APP rbox CENTRAL [label = "Encrypted with LTK"];
- * APP<<=SD [label = "BLE_GAP_EVT_CONN_SEC_UPDATE"];
- * |||;
- * --- [label = " Variant #2 App Replies without Keys "];
- * |||;
- * APP=>SD [label = "sd_ble_gap_sec_info_reply(NULL)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>CENTRAL [label = "LL Reject Ind: Pin or Key Missing", textcolor="#000080", linecolor="#000080"];
- * APP rbox CENTRAL [label = "Link Not Encrypted"];
- * @endmsc
- *
- * @defgroup BLE_GAP_PERIPH_SEC_MSC GAP Peripheral Initiated Security Establishment
- * @msc
- * hscale = "1.5";
- * APP,SD,CENTRAL;
- * |||;
- * APP rbox CENTRAL [label="Connection Established"];
- * |||;
- * APP=>SD [label = "sd_ble_gap_authenticate(params)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>CENTRAL [label = "SMP Security Request", textcolor="#000080", linecolor="#000080"];
- * |||;
- * --- [label = " Variant #1 Central initiates Security Establishment "];
- * |||;
- * APP rbox CENTRAL [label="Encryption or Pairing/Bonding initiated by Central"];
- * |||;
- * --- [label = " Variant #2 Central ignores "];
- * |||;
- * ...;
- * |||;
- * APP<<=SD [label = "BLE_GAP_EVT_TIMEOUT"];
- * |||;
- * @endmsc
- *
- * @defgroup BLE_GAP_PAIRING_KS_OUT_OF_RANGE_MSC GAP Failed Pairing: Keysize out of supported range
- * This occurs if the min key size offered by the peer is above 16, or max key size below 7.
- * @msc
- * hscale = "2";
- * APP,SD,CENTRAL;
- * |||;
- * APP rbox CENTRAL [label="Connection Established"];
- * |||;
- * SD<:CENTRAL [label = "SMP Pairing Request", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_AUTH_STATUS {auth_status: Invalid params, error_src: local}"];
- * SD:>CENTRAL [label = "SMP Pairing failed", textcolor="#000080", linecolor="#000080"];
- * @endmsc
- *
- * @defgroup BLE_GAP_PAIRING_KS_TOO_SMALL_MSC GAP Failed Pairing: Keysize too small
- * This occurs if the max key size offered by the peer is below the min key size specified by
- * the app.
- * @msc
- * hscale = "2";
- * APP,SD,CENTRAL;
- * |||;
- * APP rbox CENTRAL [label="Connection Established"];
- * |||;
- * SD<:CENTRAL [label = "SMP Pairing Request", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_SEC_PARAMS_REQUEST"];
- * APP=>SD [label = "sd_ble_gap_sec_params_reply(SUCCESS)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>CENTRAL [label = "SMP Pairing Response", textcolor="#000080", linecolor="#000080"];
- * SD<:CENTRAL [label = "SMP Pairing Confirm", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_AUTH_STATUS {auth_status: Enc key size, error_src: local}"];
- * SD:>CENTRAL [label = "SMP Pairing failed", textcolor="#000080", linecolor="#000080"];
- * @endmsc
- *
- * @defgroup BLE_GAP_PAIRING_APP_ERROR_MSC GAP Failed Pairing: Pairing aborted by the application
- * When the application detects that the pairing should not be performed, for example an
- * insufficient IO combination, it can use sd_ble_gap_sec_params_reply() to send
- * SMP Pairing failed to the peer.
- *
- * When the stack handles the response from the application it will also validate 
- * the passkey (SMP_STC_PASSKEY_ENTRY_FAILED). If any error is detected it will be
- * reported when sd_ble_gap_sec_params_reply() is called. 
- * @msc
- * hscale = "2";
- * APP,SD,CENTRAL;
- * |||;
- * APP rbox CENTRAL [label="Connection Established"];
- * |||;
- * SD<:CENTRAL [label = "SMP Pairing Request", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_SEC_PARAMS_REQUEST"];
- * SD abox APP [label="Stack looks for errors", textbgcolor="#7f7fff"];
- * APP=>SD [label = "sd_ble_gap_sec_params_reply(<code from application>)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>CENTRAL [label = "SMP Pairing failed", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_AUTH_STATUS {auth_status: <code from application>, error_src: local}"];
- * @endmsc
- *
- * @defgroup BLE_GAP_PAIRING_CONFIRM_FAIL_MSC GAP Failed Pairing: Confirm failed
- * This occurs if the random value doesn't match, usually because the user entered a wrong pin
- * or out of band data was missing.
- * @msc
- * hscale = "2";
- * APP,SD,CENTRAL;
- * |||;
- * APP rbox CENTRAL [label="Connection Established"];
- * |||;
- * SD<:CENTRAL [label = "SMP Pairing Request", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_SEC_PARAMS_REQUEST {central_params: mitm, display}"];
- * APP=>SD [label = "sd_ble_gap_sec_params_reply(SUCCESS, periph_params: mitm, keyboard)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>CENTRAL [label = "SMP Pairing Response", textcolor="#000080", linecolor="#000080"];
- * SD<:CENTRAL [label = "SMP Pairing Confirm", textcolor="#000080", linecolor="#000080"];
- * SD:>CENTRAL [label = "SMP Pairing Confirm", textcolor="#000080", linecolor="#000080"];
- * SD<:CENTRAL [label = "SMP Pairing Random", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_AUTH_STATUS {auth_status: Confirm value, error_src: local}"];
- * SD:>CENTRAL [label = "SMP Pairing failed", textcolor="#000080", linecolor="#000080"];
- * @endmsc
- *
- * @defgroup BLE_GAP_PAIRING_REMOTE_PAIRING_FAIL_MSC GAP Failed Pairing: Pairing failed from master
- * SMP Pairing Failed may be sent from the master at various times. The application should
- * prepare for this and gracefully handle the event.
- * @msc
- * hscale = "2";
- * APP,SD,CENTRAL;
- * |||;
- * APP rbox CENTRAL [label="Connection Established"];
- * |||;
- * SD<:CENTRAL [label = "SMP Pairing Request", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_SEC_PARAMS_REQUEST"];
- * APP=>SD [label = "sd_ble_gap_sec_params_reply(SUCCESS)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>CENTRAL [label = "SMP Pairing Response", textcolor="#000080", linecolor="#000080"];
- * SD<:CENTRAL [label = "SMP Pairing Failed", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_AUTH_STATUS {auth_status: <remote_reason>, error_src: remote}"];
- * @endmsc
- *
- * @defgroup BLE_GAP_PAIRING_TIMEOUT_MSC GAP Failed Pairing: Timeout
- * This occurs if the central device doesn't continue the pairing sequence within 30 seconds.
- * @msc
- * hscale = "2";
- * APP,SD,CENTRAL;
- * |||;
- * APP rbox CENTRAL [label="Connection Established"];
- * |||;
- * SD<:CENTRAL [label = "SMP Pairing Request", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GAP_EVT_SEC_PARAMS_REQUEST"];
- * APP=>SD [label = "sd_ble_gap_sec_params_reply(SUCCESS)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>CENTRAL [label = "SMP Pairing Response", textcolor="#000080", linecolor="#000080"];
- * ---  [ label = "Wait 30 sec" ];
- * APP<<=SD [label = "BLE_GAP_EVT_AUTH_STATUS {auth_status: Timeout, error_src: local}"];
-
- * @endmsc
- *
- * @defgroup BLE_GAP_SECURITY_TIMEOUT_MSC GAP Authenticate request: Timeout
- * This occurs if the central device doesn't continue the pairing sequence after
- * the security procedure timeout.
- * @msc
- * hscale = "2";
- * APP,SD,CENTRAL;
- * |||;
- * APP rbox CENTRAL [label="Connection Established"];
- * |||;
- * APP=>SD [label = "sd_ble_gap_authenticate(..., ble_gap_sec_params_t*)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>CENTRAL [label = "Security Request", textcolor="#000080", linecolor="#000080"];
-  ---  [ label = "After req_timeout (in ble_gap_sec_params_t)" ];
- * APP<<=SD [label = "BLE_GAP_EVT_TIMEOUT {error_src: BLE_GAP_TIMEOUT_SRC_SECURITY_REQUEST}"];
- * @endmsc
- *
- * @}
- * @}
- */
-
-/**
- * @addtogroup BLE_GATTC 
- * @{
- * @defgroup BLE_GATTC_MSC Message Sequence Charts
- * @{
- * @defgroup BLE_GATTC_PRIM_SRVC_DISC_MSC GATTC Primary Service Discovery
- * @msc
- * hscale = "2";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * --- [label = " Variant #1 Discover All Services "];
- * |||;
- * APP=>SD [label = "sd_ble_gattc_primary_services_discover(handle, NULL)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Read By Group Type Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Read By Group Type Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP {SUCCESS, services}"];
- * APP=>SD [label = "sd_ble_gattc_primary_services_discover(handle + N, NULL)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Read By Group Type Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Read By Group Type Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP {SUCCESS, services}"];
- * APP=>SD [label = "sd_ble_gattc_primary_services_discover(handle + N + M, NULL)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Read By Group Type Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Error Response: Attribute Not Found", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP {ATTRIBUTE_NOT_FOUND}"];
- * |||;
- * --- [label = " Variant #2 Discover a Specific Service "];
- * |||;
- * APP=>SD [label = "sd_ble_gattc_primary_services_discover(handle, uuid)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Find By Type Value Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Find By Type Value Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP {SUCCESS, services}"];
- * APP=>SD [label = "sd_ble_gattc_primary_services_discover(handle + N, uuid)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Find By Type Value Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Find By Type Value Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP {SUCCESS, services}"];
- * APP=>SD [label = "sd_ble_gattc_primary_services_discover(handle + N + M, uuid)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Find By Type Value Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Error Response: Attribute Not Found", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP {ATTRIBUTE_NOT_FOUND}"];
- * @endmsc
- *
- * @defgroup BLE_GATTC_REL_DISC_MSC GATTC Relationship Discovery
- * @msc
- * hscale = "2";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * APP=>SD [label = "sd_ble_gattc_relationships_discover(handle_range)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Read By Type Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Read By Type Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_REL_DISC_RSP {SUCCESS, includes}"];
- * APP=>SD [label = "sd_ble_gattc_relationships_discover(handle_range + N)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Read By Type Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Read By Type Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_REL_DISC_RSP {SUCCESS, includes}"];
- * APP=>SD [label = "sd_ble_gattc_relationships_discover(handle_range + N + M)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Read By Type Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Error Response: Attribute Not Found", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_REL_DISC_RSP {ATTRIBUTE_NOT_FOUND}"];
- * @endmsc
- *
- * @defgroup BLE_GATTC_CHAR_DISC_MSC GATTC Characteristic Discovery
- * @msc
- * hscale = "2";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * APP=>SD [label = "sd_ble_gattc_characteristics_discover(handle_range)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Read By Type Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Read By Type Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_CHAR_DISC_RSP {SUCCESS, chars}"];
- * APP=>SD [label = "sd_ble_gattc_characteristics_discover(handle_range + N)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Read By Type Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Read By Type Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_CHAR_DISC_RSP {SUCCESS, chars}"];
- * APP=>SD [label = "sd_ble_gattc_characteristics_discover(handle_range + N + M)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Read By Type Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Error Response: Attribute Not Found", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_CHAR_DISC_RSP {ATTRIBUTE_NOT_FOUND}"];
- * @endmsc
- *
- * @defgroup BLE_GATTC_DESC_DISC_MSC GATTC Descriptor Discovery
- * @msc
- * hscale = "2";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * APP=>SD [label = "sd_ble_gattc_descriptors_discover(handle_range)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Find Information Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Find Information Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_DESC_DISC_RSP {SUCCESS, descs}"];
- * APP=>SD [label = "sd_ble_gattc_descriptors_discover(handle_range + N)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Find Information Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Find Information Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_DESC_DISC_RSP {SUCCESS, descs}"];
- * APP=>SD [label = "sd_ble_gattc_descriptors_discover(handle_range + N + M)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Find Information Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Error Response: Attribute Not Found", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_DESC_DISC_RSP {ATTRIBUTE_NOT_FOUND}"];
- * @endmsc
- *
- * @defgroup BLE_GATTC_READ_UUID_MSC GATTC Read Characteristic Value by UUID
- * @msc
- * hscale = "2";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * APP=>SD [label = "sd_ble_gattc_char_value_by_uuid_read(uuid, handle_range)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Read By Type Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Read By Type Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP {SUCCESS, char_values}"];
- * APP=>SD [label = "sd_ble_gattc_char_value_by_uuid_read(uuid, handle_range + N)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Read By Type Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Read By Type Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP {SUCCESS, char_values}"];
- * APP=>SD [label = "sd_ble_gattc_char_value_by_uuid_read(uuid, handle_range + N + M)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Read By Type Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Error Response: Attribute Not Found", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP {ATTRIBUTE_NOT_FOUND}"];
- * @endmsc
- *
- * @defgroup BLE_GATTC_VALUE_READ_MSC GATTC Characteristic or Descriptor Value Read
- * @msc
- * hscale = "2";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * --- [label = " Variant #1 offset == 0 "];
- * |||;
- * APP=>SD [label = "sd_ble_gattc_read(handle, 0)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Read Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Read Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_READ_RSP {SUCCESS, value}"];
- * |||;
- * --- [label = " Variant #2 offset != 0 "];
- * |||;
- * APP=>SD [label = "sd_ble_gattc_read(handle, offset)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Read Blob Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Read Blob Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_READ_RSP {SUCCESS, value}"];
- * APP=>SD [label = "sd_ble_gattc_read(handle, offset + N)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Read Blob Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Read Blob Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_READ_RSP {SUCCESS, value}"];
- * APP=>SD [label = "sd_ble_gattc_read(handle, offset + N + M + 1)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Read Blob Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Error Response: Invalid Offset", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_READ_RSP {INVALID_OFFSET}"];
- * @endmsc
- *
- * @defgroup BLE_GATTC_READ_MULT_MSC GATTC Read Multiple Characteristic Values
- * @msc
- * hscale = "2";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * --- [label = " Variant #1 Successful request "];
- * |||;
- * APP=>SD [label = "sd_ble_gattc_char_values_read(handles)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Read Multiple Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Read Multiple Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_CHAR_VALS_READ_RSP {SUCCESS, char_values}"];
- * |||;
- * --- [label = " Variant #2 Failing request (invalid handle) "];
- * |||;
- * APP=>SD [label = "sd_ble_gattc_char_values_read(handles)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Read Multiple Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Error Response: Invalid Handle", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_CHAR_VALS_READ_RSP {INVALID_HANDLE, error_handle=<invalid handle>}"];
- * @endmsc
- *
- * @defgroup BLE_GATTC_VALUE_WRITE_MSC GATTC Characteristic or Descriptor Value Write
- * @msc
- * hscale = "2";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * --- [label = " Variant #1 write_op == BLE_GATT_OP_WRITE_CMD "];
- * |||;
- * APP=>SD [label = "sd_ble_gattc_write(handle, value)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Write Command", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_EVT_TX_COMPLETE"];
- * |||;
- * --- [label = " Variant #2 write_op == BLE_GATT_OP_WRITE_REQ "];
- * |||;
- * APP=>SD [label = "sd_ble_gattc_write(handle, value)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Write Request", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Write Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_WRITE_RSP {SUCCESS}"];
- * @endmsc
- *
- * @defgroup BLE_GATTC_HVI_MSC GATTC Handle Value Indication
- * <b> GATTC Handle Value Indication MSC </b>
- * @msc
- * hscale = "2";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * SD<:PEER [label = "ATT Handle Value Indication", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_HVX {INDICATION, data}"];
- * APP=>SD [label = "sd_ble_gattc_hv_confirm(handle)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Handle Value Confirmation", textcolor="#000080", linecolor="#000080"];
- * @endmsc
- *
- * @defgroup BLE_GATTC_HVN_MSC GATTC Handle Value Notification
- * @msc
- * hscale = "2";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * SD<:PEER [label = "ATT Handle Value Notification", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTC_EVT_HVX {NOTIFICATION, data}"];
- * @endmsc
- *
- * @defgroup BLE_GATTC_TIMEOUT_MSC GATTC Timeout
- * @msc
- * hscale = "2";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * APP rbox PEER [label="Any GATTC API used"];
- * SD:>PEER [label = "ATT Packet", textcolor="#000080", linecolor="#000080"];
- * APP note PEER [label = "No Response from Peer"];
- * |||;
- * ...;
- * |||;
- * SD box SD [label="Timeout"];
- * APP<<=SD [label = "BLE_GATTC_EVT_TIMEOUT {source}"];
- * APP rbox PEER [label="No additional ATT Traffic Allowed", textbgcolour="#ff7f7f"];
- * APP=>SD [label = "Any API call"];
- * APP<<SD [label = "NRF_ERROR_BUSY"];
- * @endmsc
- * @}
- * @}
- */
-
-/**
- * @addtogroup BLE_GATTS 
- * @{
- * @defgroup BLE_GATTS_MSC Message Sequence Charts
- * @{
- * @defgroup BLE_GATTS_ATT_TABLE_POP_MSC GATTS ATT Table Population
- * @msc
- * hscale = "1.5";
- * APP,SD;
- * |||;
- * APP=>SD [label = "sd_ble_gatts_service_add(uuid#1)"];
- * APP<<SD [label = "{NRF_SUCCESS, handle_srvc#1}"];
- * APP=>SD [label = "sd_ble_gatts_characteristic_add(handle_srvc#1, char_md, value)"];
- * APP<<SD [label = "{NRF_SUCCESS, handle_char#1, ...}"];
- * APP=>SD [label = "sd_ble_gatts_descriptor_add(handle_char#1, value)"];
- * APP<<SD [label = "{NRF_SUCCESS, handle_desc#1}"];
- * APP=>SD [label = "sd_ble_gatts_descriptor_add(handle_char#1, value)"];
- * APP<<SD [label = "{NRF_SUCCESS, handle_desc#2}"];
- * APP=>SD [label = "sd_ble_gatts_characteristic_add(handle_srvc#1, char_md, value)"];
- * APP<<SD [label = "{NRF_SUCCESS, handle_char#2, ...}"];
- * APP=>SD [label = "sd_ble_gatts_descriptor_add(handle_char#2, value)"];
- * APP<<SD [label = "{NRF_SUCCESS, handle_desc#3}"];
- * APP=>SD [label = "sd_ble_gatts_service_add(uuid#2)"];
- * APP<<SD [label = "{NRF_SUCCESS, handle_srvc#2}"];
- * APP=>SD [label = "sd_ble_gatts_include_add(handle_srvc#2, handle_srvc#1)"];
- * APP<<SD [label = "{NRF_SUCCESS, handle_inc#1}"];
- * |||;
- * ...;
- * |||;
- * @endmsc
- *
- * @defgroup BLE_GATTS_READ_REQ_NO_AUTH_MSC Read Request without Authorization
- * @msc
- * hscale = "1.5";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * SD<:PEER [label = "ATT Read Request", textcolor="#000080", linecolor="#000080"];
- * SD:>PEER [label = "ATT Read Response", textcolor="#000080", linecolor="#000080"];
- * @endmsc
- *
- * @defgroup BLE_GATTS_WRITE_REQ_NO_AUTH_MSC GATTS Write Request without Authorization
- * @msc
- * hscale = "1.5";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * SD<:PEER [label = "ATT Write Request", textcolor="#000080", linecolor="#000080"];
- * SD:>PEER [label = "ATT Write Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTS_EVT_WRITE {WRITE_REQ, data}"];
- * @endmsc
- *
- * @defgroup BLE_GATTS_WRITE_CMD_NO_AUTH_MSC GATTS Write Command with or without Authorization
- * @msc
- * hscale = "1.5";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * SD<:PEER [label = "ATT Write Command", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTS_EVT_WRITE {WRITE_CMD, data}"];
- * @endmsc
- *
- * @defgroup BLE_GATTS_READ_REQ_AUTH_MSC GATTS Read Request with Authorization
- * @msc
- * hscale = "2";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * SD rbox SD [label="Value in ATT Table: current_value"];
- * SD<:PEER [label = "ATT Read Request", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {READ, current_value}"];
- * --- [label = " Variant #1 App Authorizes "];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(SUCCESS, app_value)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD rbox SD [label="Value in ATT Table: app_value"];
- * SD:>PEER [label = "ATT Read Response {app_value}", textcolor="#000080", linecolor="#000080"];
- * --- [label = " Variant #2 App Disallows "];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(READ_NOT_PERMITTED)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Error Response", textcolor="#000080", linecolor="#000080"];
- * @endmsc
- *
- * @defgroup BLE_GATTS_WRITE_REQ_AUTH_MSC GATTS Write Request with Authorization
- * @msc
- * hscale = "2";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * SD rbox SD [label="Value in ATT Table: current_value"];
- * SD<:PEER [label = "ATT Write Request {peer_data}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, peer_value}"];
- * --- [label = " Variant #1 App Authorizes "];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(SUCCESS)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD rbox SD [label="Value in ATT Table: peer_data"];
- * SD:>PEER [label = "ATT Write Response", textcolor="#000080", linecolor="#000080"];
- * --- [label = " Variant #2 App Disallows "];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE_NOT_PERMITTED)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Error Response", textcolor="#000080", linecolor="#000080"];
- * SD rbox SD [label="Value in ATT Table: current_value"];
- * @endmsc
- *
- * @defgroup BLE_GATTS_QUEUED_WRITE_BUF_NOAUTH_MSC GATTS Queued Writes: Stack handled, no attributes require authorization
- * @msc
- * hscale = "2";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * SD rbox SD [label="Values in ATT Table:\nhandle_1: current_value_1\nhandle_2: current_value_2"];
- * SD<:PEER [label = "ATT Prepare Write Request {handle_1, offset_1, peer_value_1}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_EVT_USER_MEM_REQUEST {BLE_USER_MEM_TYPE_GATTS_QUEUED_WRITES}"];
- * APP=>SD [label = "sd_ble_user_mem_reply {user_mem_block}"];
- * SD:>PEER [label = "ATT Prepare Write Response {handle_1, offset_1, peer_value_1}", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Prepare Write Request {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
- * SD:>PEER [label = "ATT Prepare Write Response {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
- * |||;
- * --- [label = " Variant #1 Attribute Values validation passed "];
- * SD<:PEER [label = "ATT Execute Write Request {WRITE}", textcolor="#000080", linecolor="#000080"];
- * SD rbox SD [label="Values in ATT Table:\nhandle_1: peer_value_1\nhandle_2: peer_value_2"];
- * APP<<=SD [label = "BLE_GATTS_EVT_WRITE {EXEC_WRITE_REQ_NOW}"];
- * APP rbox APP [label="App parses the memory it provided"];
- * SD:>PEER [label = "ATT Execute Write Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_EVT_USER_MEM_RELEASE {user_mem_block}"];
- * |||;
- * --- [label = " Variant #2 Attribute Values validation failed "];
- * SD<:PEER [label = "ATT Execute Write Request {WRITE}", textcolor="#000080", linecolor="#000080"];
- * SD rbox SD [label="Values in ATT Table:\nhandle_1: current_value_1\nhandle_2: current_value_2"];
- * SD:>PEER [label = "ATT Error Response {Invalid Value Length / Offset}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_EVT_USER_MEM_RELEASE {user_mem_block}"];
- * |||;
- * --- [label = " Variant #3 Peer cancels operation "];
- * SD<:PEER [label = "ATT Execute Write Request {CANCEL}", textcolor="#000080", linecolor="#000080"];
- * SD rbox SD [label="Values in ATT Table:\nhandle_1: current_value_1\nhandle_2: current_value_2"];
- * SD:>PEER [label = "ATT Execute Write Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_EVT_USER_MEM_RELEASE {user_mem_block}"];
- * |||;
- * @endmsc
- *
- * @defgroup BLE_GATTS_QUEUED_WRITE_BUF_AUTH_MSC GATTS Queued Writes: Stack handled, one or more attributes require authorization
- * @msc
- * hscale = "2";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * SD rbox SD [label="Values in ATT Table:\nhandle_1: current_value_1\nhandle_2: current_value_2"];
- * SD<:PEER [label = "ATT Prepare Write Request {handle_1, offset_1, peer_value_1}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_EVT_USER_MEM_REQUEST {BLE_USER_MEM_TYPE_GATTS_QUEUED_WRITES}"];
- * APP=>SD [label = "sd_ble_user_mem_reply {user_mem_block}"];
- * SD:>PEER [label = "ATT Prepare Write Response {handle_1, offset_1, peer_value_1}", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Prepare Write Request {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, PREP_WRITE_REQ, handle_2, offset_2, peer_value_2}"];
- * |||;
- * --- [label = " Variant #1 App Authorizes both Prepare Write and Execute Write"];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
- * SD:>PEER [label = "ATT Prepare Write Response {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Execute Write Request {WRITE}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, EXEC_WRITE_REQ_NOW}"];
- * APP rbox APP [label="App parses the memory it provided"];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
- * SD rbox SD [label="Values in ATT Table:\nhandle_1: peer_value_1\nhandle_2: peer_value_2"];
- * SD:>PEER [label = "ATT Execute Write Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_EVT_USER_MEM_RELEASE {user_mem_block}"];
- * |||;
- * --- [label = " Variant #2 App Disallows Prepare Write and Authorizes Execute Write "];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, INSUF_AUTHORIZATION)"];
- * SD:>PEER [label = "ATT Error Response {Insufficient Authorization}", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Execute Write Request {WRITE}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, EXEC_WRITE_REQ_NOW}"];
- * APP rbox APP [label="App parses the memory it provided"];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
- * SD rbox SD [label="Values in ATT Table:\nhandle_1: peer_value_1\nhandle_2: current_value_2"];
- * SD:>PEER [label = "ATT Execute Write Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_EVT_USER_MEM_RELEASE {user_mem_block}"];
- * |||;
- * --- [label = " Variant #3 App Authorizes Prepare Write and Disallows Execute Write "];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
- * SD:>PEER [label = "ATT Prepare Write Response {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Execute Write Request {WRITE}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, EXEC_WRITE_REQ_NOW}"];
- * APP rbox APP [label="App parses the memory it provided"];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, APP_ERROR_CODE)"];
- * SD rbox SD [label="Values in ATT Table:\nhandle_1: current_value_1\nhandle_2: current_value_2"];
- * SD:>PEER [label = "ATT Error Response {APP_ERROR_CODE}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_EVT_USER_MEM_RELEASE {user_mem_block}"];
- * @endmsc
- *
- * @defgroup BLE_GATTS_QUEUED_WRITE_NOBUF_NOAUTH_MSC GATTS Queued Writes: App handled, no attributes require authorization
- * @msc
- * hscale = "2";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * APP rbox SD [label="Values in ATT Table:\nhandle_1: current_value_1\nhandle_2: current_value_2"];
- * SD<:PEER [label = "ATT Prepare Write Request {handle_1, offset_1, peer_value_1}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_EVT_USER_MEM_REQUEST {BLE_USER_MEM_TYPE_GATTS_QUEUED_WRITES}"];
- * APP=>SD [label = "sd_ble_user_mem_reply {NULL}"];
- * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, PREP_WRITE_REQ, handle_1, offset_1, peer_value_1}"];
- * APP rbox APP [label="App queues {handle_1, offset_1, peer_value_1}"];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
- * SD:>PEER [label = "ATT Prepare Write Response {handle_1, offset_1, peer_value_1}", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Prepare Write Request {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, PREP_WRITE_REQ, handle_2, offset_2, peer_value_2}"];
- * APP rbox APP [label="App queues {handle_2, offset_2, peer_value_2}"];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
- * SD:>PEER [label = "ATT Prepare Write Response {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Execute Write Request {WRITE}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, EXEC_WRITE_REQ_NOW}"];
- * |||;
- * --- [label = " Variant #1 Attribute values in stack memory (VLOC_STACK), attribute values validation passed "];
- * APP=>SD [label = "sd_ble_gatts_value_set {handle_1, offset_1, peer_value_1}"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * APP=>SD [label = "sd_ble_gatts_value_set {handle_2, offset_2, peer_value_2}"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD rbox SD [label="Values in ATT Table:\nhandle_1: peer_value_1\nhandle_2: peer_value_2"];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
- * SD:>PEER [label = "ATT Execute Write Response", textcolor="#000080", linecolor="#000080"];
- * |||;
- * --- [label = " Variant #2 Attribute values in user memory (VLOC_USER), attribute values validation passed "];
- * APP rbox APP [label="Application traverses its queue and executes the write operations (memcpy)"];
- * APP rbox APP [label="Values in ATT Table:\nhandle_1: peer_value_1\nhandle_2: peer_value_2"];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
- * SD:>PEER [label = "ATT Execute Write Response", textcolor="#000080", linecolor="#000080"];
- * |||;
- * --- [label = " Variant #3 Attribute values validation failed "];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, INVALID_OFFSET)"];
- * APP rbox SD [label="Values in ATT Table:\nhandle_1: current_value_1\nhandle_2: current_value_2"];
- * SD:>PEER [label = "ATT Error Response {Invalid Offset}", textcolor="#000080", linecolor="#000080"];
- * @endmsc
- *
- * @defgroup BLE_GATTS_QUEUED_WRITE_NOBUF_AUTH_MSC GATTS Queued Writes: App handled, one or more attributes require authorization
- * @msc
- * hscale = "2";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * APP rbox APP [label="Values in ATT Table (in user memory):\nhandle_1: current_value_1\nhandle_2: current_value_2"];
- * SD<:PEER [label = "ATT Prepare Write Request {handle_1, offset_1, peer_value_1}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_EVT_USER_MEM_REQUEST {BLE_USER_MEM_TYPE_GATTS_QUEUED_WRITES}"];
- * APP=>SD [label = "sd_ble_user_mem_reply {NULL}"];
- * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, PREP_WRITE_REQ, handle_1, offset_1, peer_value_1}"];
- * APP rbox APP [label="App queues {handle_1, offset_1, peer_value_1}"];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
- * SD:>PEER [label = "ATT Prepare Write Response {handle_1, offset_1, peer_value_1}", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Prepare Write Request {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, PREP_WRITE_REQ, handle_2, offset_2, peer_value_2}"];
- * |||;
- * --- [label = " Variant #1 App Authorizes both Prepare Write and Execute Write"];
- * APP rbox APP [label="App queues {handle_2, offset_2, peer_value_2}"];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
- * SD:>PEER [label = "ATT Prepare Write Response {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Execute Write Request {WRITE}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, EXEC_WRITE_REQ_NOW}"];
- * APP rbox APP [label="Application traverses its queue and executes the write operations (memcpy)"];
- * APP rbox APP [label="Values in ATT Table:\nhandle_1: peer_value_1\nhandle_2: peer_value_2"];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
- * SD:>PEER [label = "ATT Execute Write Response", textcolor="#000080", linecolor="#000080"];
- * |||;
- * --- [label = " Variant #2 App Disallows Prepare Write and Authorizes Execute Write "];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, INSUF_AUTHORIZATION)"];
- * SD:>PEER [label = "ATT Error Response {Insufficient Authorization}", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Execute Write Request {WRITE}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, EXEC_WRITE_REQ_NOW}"];
- * APP rbox APP [label="Application traverses its queue and executes the write operations (memcpy)"];
- * APP rbox APP [label="Values in ATT Table:\nhandle_1: peer_value_1\nhandle_2: current_value_2"];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
- * SD:>PEER [label = "ATT Execute Write Response", textcolor="#000080", linecolor="#000080"];
- * |||;
- * --- [label = " Variant #3 App Authorizes Prepare Write and Disallows Execute Write "];
- * APP rbox APP [label="App queues {handle_2, offset_2, peer_value_2}"];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
- * SD:>PEER [label = "ATT Prepare Write Response {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Execute Write Request {WRITE}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, EXEC_WRITE_REQ_NOW}"];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, APP_ERROR_CODE)"];
- * APP rbox APP [label="Values in ATT Table:\nhandle_1: current_value_1\nhandle_2: current_value_2"];
- * SD:>PEER [label = "ATT Error Response {APP_ERROR_CODE}", textcolor="#000080", linecolor="#000080"];
- * @endmsc
- *
- * @defgroup BLE_GATTS_QUEUED_WRITE_QUEUE_FULL_MSC GATTS Queued Writes: Prepare Queue Full
- * @msc
- * hscale = "2";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * SD rbox SD [label="Values in ATT Table:\nhandle_1: current_value_1\nhandle_2: current_value_2"];
- * SD<:PEER [label = "ATT Prepare Write Request {handle_1, offset_1, peer_value_1}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_EVT_USER_MEM_REQUEST {BLE_USER_MEM_TYPE_GATTS_QUEUED_WRITES}"];
- * |||;
- * --- [label = " Variant #1 Stack handled "];
- * APP=>SD [label = "sd_ble_user_mem_reply {user_mem_block}"];
- * SD:>PEER [label = "ATT Prepare Write Response {handle_1, offset_1, peer_value_1}", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Prepare Write Request {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
- * SD:>PEER [label = "ATT Error Response {Prepare Queue Full}", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Execute Write Request {WRITE}", textcolor="#000080", linecolor="#000080"];
- * SD rbox SD [label="Values in ATT Table:\nhandle_1: peer_value_1\nhandle_2: current_value_2"];
- * APP<<=SD [label = "BLE_GATTS_EVT_WRITE {EXEC_WRITE_REQ_NOW}"];
- * APP rbox APP [label="App parses the memory it provided"];
- * SD:>PEER [label = "ATT Execute Write Response", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_EVT_USER_MEM_RELEASE {user_mem_block}"];
- * |||;
- * --- [label = " Variant #2 App handled "];
- * APP=>SD [label = "sd_ble_user_mem_reply {NULL}"];
- * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, PREP_WRITE_REQ, handle_1, offset_1, peer_value_1}"];
- * APP rbox APP [label="App queues {handle_1, offset_1, peer_value_1}"];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
- * SD:>PEER [label = "ATT Prepare Write Response {handle_1, offset_1, peer_value_1}", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Prepare Write Request {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, PREP_WRITE_REQ, handle_2, offset_2, peer_value_2}"];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, PREPARE_QUEUE_FULL)"];
- * SD:>PEER [label = "ATT Error Response {Prepare Queue Full}", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Execute Write Request {WRITE}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, EXEC_WRITE_REQ_NOW}"];
- * APP=>SD [label = "sd_ble_gatts_value_set {handle_1, offset_1, peer_value_1}"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
- * SD rbox SD [label="Values in ATT Table:\nhandle_1: peer_value_1\nhandle_2: current_value_2"];
- * SD:>PEER [label = "ATT Execute Write Response", textcolor="#000080", linecolor="#000080"];
- * @endmsc
- *
- * @defgroup BLE_GATTS_HVI_MSC GATTS Handle Value Indication
- * @msc
- * hscale = "1.5";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * APP rbox PEER [label="Indications Enabled in CCCD"];
- * |||;
- * SD rbox SD [label="Value in ATT Table: current_value"];
- * APP=>SD [label = "sd_ble_gatts_hvx(INDICATION, app_value)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD rbox SD [label="Value in ATT Table: app_value"];
- * SD:>PEER [label = "ATT Handle Value Indication {app_value}", textcolor="#000080", linecolor="#000080"];
- * --- [label = " Variant #1 Peer Confirms "];
- * SD<:PEER [label = "ATT Handle Value Confirmation", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTS_EVT_HVC"];
- * --- [label = " Variant #2 Peer Ignores "];
- * |||;
- * ...;
- * |||;
- * SD box SD [label="Timeout"];
- * APP<<=SD [label = "BLE_GATTS_EVT_TIMEOUT"];
- * @endmsc
- *
- * @defgroup BLE_GATTS_HVN_MSC GATTS Handle Value Notification
- * @msc
- * hscale = "1.5";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * APP rbox PEER [label="Notifications Enabled in CCCD"];
- * |||;
- * SD rbox SD [label="Value in ATT Table: current_value"];
- * APP=>SD [label = "sd_ble_gatts_hvx(NOTIFICATION, app_value)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD rbox SD [label="Value in ATT Table: app_value"];
- * SD:>PEER [label = "ATT Handle Value Notification {app_value}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_EVT_TX_COMPLETE"];
- * @endmsc
- *
- * @defgroup BLE_GATTS_HVX_DISABLED_MSC GATTS Handle Value Indication or Notification disabled
- * @msc
- * hscale = "1.5";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * APP rbox PEER [label="Indications and Notifications Disabled in CCCD"];
- * |||;
- * SD rbox SD [label="Value in ATT Table: current_value"];
- * APP=>SD [label = "sd_ble_gatts_hvx(INDICATION or NOTIFICATION, app_value)"];
- * APP<<SD [label = "NRF_ERROR_INVALID_STATE"];
- * SD rbox SD [label="Value in ATT Table: current_value"];
- * @endmsc
- *
- * @defgroup BLE_GATTS_HVX_SYS_ATTRS_MISSING_MSC GATTS Handle Value Indication or Notification with System Attributes Missing
- * @msc
- * hscale = "1.5";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * APP rbox PEER [label="System Attributes Uninitialized"];
- * |||;
- * SD rbox SD [label="Value in ATT Table: current_value"];
- * APP=>SD [label = "sd_ble_gatts_hvx(INDICATION or NOTIFICATION, app_value)"];
- * APP<<SD [label = "BLE_ERROR_GATTS_SYS_ATTR_MISSING"];
- * SD rbox SD [label="Value in ATT Table: current_value"];
- * APP=>SD [label = "sd_ble_gatts_sys_attr_set()"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * |||;
- * ...;
- * @endmsc
- *
- * @defgroup BLE_GATTS_SC_MSC GATTS Service Changed
- * @msc
- * hscale = "1.5";
- * APP,SD,PEER;
- * |||;
- * APP rbox SD [label="Entries added to the ATT Table between handles N and M"];
- * |||;
- * APP rbox PEER [label="Connection Established with a Bonded Peer"];
- * |||;
- * APP=>SD [label = "sd_ble_gatts_service_changed(N, M)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Handle Value Indication {N, M}", textcolor="#000080", linecolor="#000080"];
- * SD<:PEER [label = "ATT Handle Value Confirmation", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTS_EVT_SC_CONFIRM"];
- * |||;
- * SD rbox PEER [label="Service Discovery"];
- * @endmsc
- *
- * @defgroup BLE_GATTS_SYS_ATTRS_UNK_PEER_MSC GATTS System Attributes Handling: Unknown Peer
- * @msc
- * hscale = "1.5";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established with an Unknown Peer"];
- * |||;
- * SD<:PEER [label = "ATT Read Request {sys_attr_handle}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTS_EVT_SYS_ATTR_MISSING"];
- * APP=>SD [label = "sd_ble_gatts_sys_attr_set(NULL)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Read Response {sys_attr_value}", textcolor="#000080", linecolor="#000080"];
- * @endmsc
- *
- * @defgroup BLE_GATTS_SYS_ATTRS_BONDED_PEER_MSC GATTS System Attributes Handling: Bonded Peer
- * @msc
- * hscale = "1.5";
- * APP,SD,PEER;
- * |||;
- * APP rbox PEER [label="Connection Established with a Bonded Peer"];
- * |||;
- * APP rbox PEER [label="ATT Traffic"];
- * |||;
- * APP rbox PEER [label="Connection Terminated"];
- * APP<<=SD [label = "BLE_GAP_EVT_DISCONNECTED {reason}"];
- * |||;
- * APP=>SD [label = "sd_ble_gatts_sys_attr_get()"];
- * APP<<SD [label = "{NRF_SUCCESS, sys_attr_data}"];
- * APP rbox APP [label="Store System Attributes"];
- * |||;
- * APP rbox SD [label="Shut down IC"];
- * |||;
- * APP rbox SD [label="Power up IC"];
- * |||;
- * APP rbox PEER [label="Connection Established with the Bonded Peer"];
- * SD<:PEER [label = "ATT Read Request {sys_attr_handle}", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_GATTS_EVT_SYS_ATTR_MISSING"];
- * APP rbox APP [label="Load System Attributes"];
- * APP=>SD [label = "sd_ble_gatts_sys_attr_set(sys_attr_data)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "ATT Read Response {sys_attr_value}", textcolor="#000080", linecolor="#000080"];
- * @endmsc
- * @}
- *
- * @addtogroup BLE_GATTS_QUEUED_WRITES_USER_MEM User memory layout for Queued Writes
- * @{ 
- *  The following table shows the memory layout used by the SoftDevice to queue a Queued Write operation (Prepare Write ATT packet) in user memory:
- *
- *  <table style="border:1px solid black;border-collapse:collapse;">
- *  <caption>Queued Write</caption>
- *  <tr>
- *  <th style="border:1px solid black;padding:5px;">Parameter</th>
- *  <th style="border:1px solid black;padding:5px;">Size (octets)</th>
- *  <th style="border:1px solid black;padding:5px;">Description</th>
- *  </tr>
- *  <tr>
- *  <td style="border:1px solid black;padding:5px;">Handle</td>
- *  <td style="border:1px solid black;padding:5px;">2</td>
- *  <td style="border:1px solid black;padding:5px;">Attribute Handle</td>
- *  </tr>
- *  <tr>
- *  <td style="border:1px solid black;padding:5px;">Offset</td>
- *  <td style="border:1px solid black;padding:5px;">2</td>
- *  <td style="border:1px solid black;padding:5px;">Value Offset</td>
- *  </tr>
- *  <tr>
- *  <td style="border:1px solid black;padding:5px;">Length</td>
- *  <td style="border:1px solid black;padding:5px;">2</td>
- *  <td style="border:1px solid black;padding:5px;">Value Length</td>
- *  </tr>
- *  <tr>
- *  <td style="border:1px solid black;padding:5px;">Value</td>
- *  <td style="border:1px solid black;padding:5px;">Length</td>
- *  <td style="border:1px solid black;padding:5px;">Attribute Value</td>
- *  </tr>
- *  </table>
- *
- *  The application can parse the array of Queued Write instances at any time, but it is recommended to do so whenever an Execute Write ATT packet 
- *  has been received over the air. See the GATT Server Queued Writes MSCs for more details.
- *  The array will be terminated by an Queued Write instance with its handle set to @ref BLE_GATT_HANDLE_INVALID.
- * @}
- * @}
- */
-
-/**
- * @addtogroup BLE_L2CAP 
- * @{
- * @defgroup BLE_L2CAP_MSC Message Sequence Charts
- * @{
- * @defgroup BLE_L2CAP_API_MSC L2CAP API
- * @msc
- * hscale = "1.5";
- * APP,SD,PEER;
- * |||;
- * APP=>SD [label = "sd_ble_l2cap_cid_register(cid)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * |||;
- * APP rbox PEER [label="Connection Established"];
- * |||;
- * APP=>SD [label = "sd_ble_l2cap_tx(data)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "L2CAP packet", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_EVT_TX_COMPLETE"];
- * SD<:PEER [label = "L2CAP packet", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_L2CAP_EVT_RX"];
- * SD<:PEER [label = "L2CAP packet", textcolor="#000080", linecolor="#000080"];
- * APP<<=SD [label = "BLE_L2CAP_EVT_RX"];
- * |||;
- * APP=>SD [label = "sd_ble_l2cap_tx(data)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * SD:>PEER [label = "L2CAP packet", textcolor="#000080", linecolor="#000080"];
- * SD=>>APP [label = "BLE_EVT_TX_COMPLETE"];
- * |||;
- * APP rbox PEER [label="Terminate Connection"];
- * |||;
- * APP=>SD [label = "sd_ble_l2cap_cid_unregister(cid)"];
- * APP<<SD [label = "NRF_SUCCESS"];
- * @endmsc
- * @}
- * @}
- */
--- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/ble.h	Fri Oct 17 14:00:07 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,385 +0,0 @@
-/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved.
- *
- * The information contained herein is confidential property of Nordic Semiconductor. The use,
- * copying, transfer or disclosure of such information is prohibited except by express written
- * agreement with Nordic Semiconductor.
- *
- */
-/**
-  @addtogroup BLE_COMMON BLE SoftDevice Common
-  @{
-  @defgroup ble_api Events, type definitions and API calls
-  @{
-
-  @brief Module independent events, type definitions and API calls for the S110 SoftDevice.
-
- */
-
-#ifndef BLE_H__
-#define BLE_H__
-
-#include "ble_ranges.h"
-#include "ble_types.h"
-#include "ble_gap.h"
-#include "ble_l2cap.h"
-#include "ble_gatt.h"
-#include "ble_gattc.h"
-#include "ble_gatts.h"
-
-/** @addtogroup BLE_COMMON_ENUMERATIONS Enumerations
- * @{ */
-
-/**
- * @brief Common API SVC numbers.
- */
-enum BLE_COMMON_SVCS
-{
-  SD_BLE_ENABLE = BLE_SVC_BASE,         /**< Enable and initialize the BLE stack */
-  SD_BLE_EVT_GET,                       /**< Get an event from the pending events queue. */
-  SD_BLE_TX_BUFFER_COUNT_GET,           /**< Get the total number of available application transmission buffers from the stack. */
-  SD_BLE_UUID_VS_ADD,                   /**< Add a Vendor Specific UUID. */
-  SD_BLE_UUID_DECODE,                   /**< Decode UUID bytes. */
-  SD_BLE_UUID_ENCODE,                   /**< Encode UUID bytes. */
-  SD_BLE_VERSION_GET,                   /**< Get the local version information (company id, Link Layer Version, Link Layer Subversion). */
-  SD_BLE_USER_MEM_REPLY,                /**< User Memory Reply. */
-  SD_BLE_OPT_SET,                       /**< Set a BLE option. */
-  SD_BLE_OPT_GET,                       /**< Get a BLE option. */
-};
-
-/** @} */
-
-/** @addtogroup BLE_COMMON_DEFINES Defines
- * @{ */
-
-/** @brief  Required pointer alignment for BLE Events.
-*/
-#define BLE_EVTS_PTR_ALIGNMENT    4
-
-/** @defgroup BLE_USER_MEM_TYPES User Memory Types
- * @{ */
-#define BLE_USER_MEM_TYPE_INVALID               0x00  /**< Invalid User Memory Types. */
-#define BLE_USER_MEM_TYPE_GATTS_QUEUED_WRITES   0x01  /**< User Memory for GATTS queued writes. */
-/** @} */
-
-/** @brief  Maximum number of Vendor Specific UUIDs.
-*/
-#define BLE_UUID_VS_MAX_COUNT     10
-
-/** @} */
-
-/** @addtogroup BLE_COMMON_STRUCTURES Structures
- * @{ */
-
-/**
- * @brief BLE Module Independent Event IDs.
- */
-enum BLE_COMMON_EVTS
-{
-  BLE_EVT_TX_COMPLETE  = BLE_EVT_BASE,  /**< Transmission Complete. */
-  BLE_EVT_USER_MEM_REQUEST,             /**< User Memory request. */
-  BLE_EVT_USER_MEM_RELEASE              /**< User Memory release. */
-};
-
-/**@brief User Memory Block. */
-typedef struct
-{
-  uint8_t*          p_mem;      /**< Pointer to the start of the user memory block. */
-  uint16_t          len;        /**< Length in bytes of the user memory block. */
-} ble_user_mem_block_t;
-
-/**
- * @brief TX complete event.
- */
-typedef struct
-{
-  uint8_t count;                        /**< Number of packets transmitted. */
-} ble_evt_tx_complete_t;
-
-/**@brief Event structure for BLE_EVT_USER_MEM_REQUEST. */
-typedef struct
-{
-  uint8_t                     type;     /**< User memory type, see @ref BLE_USER_MEM_TYPES. */
-} ble_evt_user_mem_request_t;
-
-/**@brief Event structure for BLE_EVT_USER_MEM_RELEASE. */
-typedef struct
-{
-  uint8_t                     type;       /**< User memory type, see @ref BLE_USER_MEM_TYPES. */
-  ble_user_mem_block_t        mem_block;  /**< User memory block */
-} ble_evt_user_mem_release_t;
-
-
-/**@brief Event structure for events not associated with a specific function module. */
-typedef struct
-{
-  uint16_t conn_handle;                 /**< Connection Handle on which this event occured. */
-  union
-  {
-    ble_evt_tx_complete_t           tx_complete;        /**< Transmission Complete. */
-    ble_evt_user_mem_request_t      user_mem_request;   /**< User Memory Request Event Parameters. */
-    ble_evt_user_mem_release_t      user_mem_release;   /**< User Memory Release Event Parameters. */
-  } params;
-} ble_common_evt_t;
-
-/**@brief BLE Event header. */
-typedef struct
-{
-  uint16_t evt_id;                      /**< Value from a BLE_<module>_EVT series. */
-  uint16_t evt_len;                     /**< Length in octets excluding this header. */
-} ble_evt_hdr_t;
-
-/**@brief Common BLE Event type, wrapping the module specific event reports. */
-typedef struct
-{
-  ble_evt_hdr_t header;                 /**< Event header. */
-  union
-  {
-    ble_common_evt_t  common_evt;         /**< Common Event, evt_id in BLE_EVT_* series. */
-    ble_gap_evt_t     gap_evt;            /**< GAP originated event, evt_id in BLE_GAP_EVT_* series. */
-    ble_l2cap_evt_t   l2cap_evt;          /**< L2CAP originated event, evt_id in BLE_L2CAP_EVT* series. */
-    ble_gattc_evt_t   gattc_evt;          /**< GATT client originated event, evt_id in BLE_GATTC_EVT* series. */
-    ble_gatts_evt_t   gatts_evt;          /**< GATT server originated event, evt_id in BLE_GATTS_EVT* series. */
-  } evt;
-} ble_evt_t;
-
-
-/**
- * @brief Version Information.
- */
-typedef struct
-{
-  uint8_t   version_number;             /**< Link Layer Version number for BT 4.1 spec is 7 (https://www.bluetooth.org/en-us/specification/assigned-numbers/link-layer). */
-  uint16_t  company_id;                 /**< Company ID, Nordic Semiconductor's company ID is 89 (0x0059) (https://www.bluetooth.org/apps/content/Default.aspx?doc_id=49708). */
-  uint16_t  subversion_number;          /**< Link Layer Sub Version number, corresponds to the SoftDevice Config ID or Firmware ID (FWID). */
-} ble_version_t;
-
-/**@brief Common BLE Option type, wrapping the module specific options. */
-typedef union
-{
-  ble_gap_opt_t     gap;            /**< GAP option, opt_id in BLE_GAP_OPT_* series. */
-} ble_opt_t;
-
-/**
- * @brief BLE GATTS init options
- */
-typedef struct
-{
-  ble_gatts_enable_params_t  gatts_enable_params; /**< GATTS init options @ref ble_gatts_enable_params_t. */  
-} ble_enable_params_t;
-
-/** @} */
-
-/** @addtogroup BLE_COMMON_FUNCTIONS Functions
- * @{ */
-
-/**@brief Enable the bluetooth stack
- *
- * @param[in] p_ble_enable_params Pointer to ble_enable_params_t
- *
- * @details This call initializes the bluetooth stack, no other BLE related call can be called before this one has been executed.
- *
- * @return @ref NRF_SUCCESS BLE stack has been initialized successfully
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid or not sufficiently aligned pointer supplied.
- */
-SVCALL(SD_BLE_ENABLE, uint32_t, sd_ble_enable(ble_enable_params_t * p_ble_enable_params));
-
-/**@brief Get an event from the pending events queue.
- *
- * @param[in] p_dest Pointer to buffer to be filled in with an event, or NULL to retrieve the event length. This buffer <b>must be 4-byte aligned in memory</b>.
- * @param[in, out] p_len Pointer the length of the buffer, on return it is filled with the event length.
- *
- * @details This call allows the application to pull a BLE event from the BLE stack. The application is signalled that an event is 
- * available from the BLE Stack by the triggering of the SD_EVT_IRQn interrupt (mapped to IRQ 22).
- * The application is free to choose whether to call this function from thread mode (main context) or directly from the Interrupt Service Routine
- * that maps to SD_EVT_IRQn. In any case however, and because the BLE stack runs at a higher priority than the application, this function should be called
- * in a loop (until @ref NRF_ERROR_NOT_FOUND is returned) every time SD_EVT_IRQn is raised to ensure that all available events are pulled from the stack. 
- * Failure to do so could potentially leave events in the internal queue without the application being aware of this fact.
- * Sizing the p_dest buffer is equally important, since the application needs to provide all the memory necessary for the event to be copied into
- * application memory. If the buffer provided is not large enough to fit the entire contents of the event, @ref NRF_ERROR_DATA_SIZE will be returned
- * and the application can then call again with a larger buffer size.
- * Please note that because of the variable length nature of some events, sizeof(ble_evt_t) will not always be large enough to fit certain events, 
- * and so it is the application's responsability to provide an amount of memory large enough so that the relevant event is copied in full.
- * The application may "peek" the event length by providing p_dest as a NULL pointer and inspecting the value of *p_len upon return.
- *
- * @note The pointer supplied must be aligned to the extend defined by @ref BLE_EVTS_PTR_ALIGNMENT
- *
- * @return @ref NRF_SUCCESS Event pulled and stored into the supplied buffer.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid or not sufficiently aligned pointer supplied.
- * @return @ref NRF_ERROR_NOT_FOUND No events ready to be pulled.
- * @return @ref NRF_ERROR_DATA_SIZE Event ready but could not fit into the supplied buffer.
- */
-SVCALL(SD_BLE_EVT_GET, uint32_t, sd_ble_evt_get(uint8_t* p_dest, uint16_t *p_len));
-
-
-/**@brief Get the total number of available application transmission buffers in the BLE stack.
- *
- * @details This call allows the application to obtain the total number of
- *          transmission buffers available for application data. Please note that
- *          this does not give the number of free buffers, but rather the total amount of them.
- *          The application has two options to handle its own application transmission buffers:
- *          - Use a simple arithmetic calculation: at boot time the application should use this function
- *          to find out the total amount of buffers available to it and store it in a variable.
- *          Every time a packet that consumes an application buffer is sent using any of the 
- *          exposed functions in this BLE API, the application should decrement that variable.
- *          Conversely, whenever a @ref BLE_EVT_TX_COMPLETE event is received by the application
- *          it should retrieve the count field in such event and add that number to the same
- *          variable storing the number of available packets.
- *          This mechanism allows the application to be aware at any time of the number of
- *          application packets available in the BLE stack's internal buffers, and therefore
- *          it can know with certainty whether it is possible to send more data or it has to
- *          wait for a @ref BLE_EVT_TX_COMPLETE event before it proceeds.
- *          - Choose to simply not keep track of available buffers at all, and instead handle the 
- *          @ref BLE_ERROR_NO_TX_BUFFERS error by queueing the packet to be transmitted and 
- *          try again as soon as a @ref BLE_EVT_TX_COMPLETE event arrives.
- *
- *          The API functions that <b>may</b> consume an application buffer depending on 
- *          the parameters supplied to them can be found below:
- *
- *          - @ref sd_ble_gattc_write (write witout response only)
- *          - @ref sd_ble_gatts_hvx (notifications only)
- *          - @ref sd_ble_l2cap_tx (all packets)
- *
- * @param[out] p_count Pointer to a uint8_t which will contain the number of application transmission buffers upon
- *                     successful return.
- *
- * @return @ref NRF_SUCCESS Number of application transmission buffers retrieved successfully.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- */
-SVCALL(SD_BLE_TX_BUFFER_COUNT_GET, uint32_t, sd_ble_tx_buffer_count_get(uint8_t* p_count));
-
-
-/**@brief Add a Vendor Specific UUID.
- *
- * @details This call enables the application to add a vendor specific UUID to the BLE stack's table,
- *          for later use all other modules and APIs. This then allows the application to use the shorter,
- *          24-bit @ref ble_uuid_t format when dealing with both 16-bit and 128-bit UUIDs without having to
- *          check for lengths and having split code paths. The way that this is accomplished is by extending the 
- *          grouping mechanism that the Bluetooth SIG standard base UUID uses for all other 128-bit UUIDs. The 
- *          type field in the @ref ble_uuid_t structure is an index (relative to @ref BLE_UUID_TYPE_VENDOR_BEGIN) 
- *          to the table populated by multiple calls to this function, and the uuid field in the same structure 
- *          contains the 2 bytes at indices 12 and 13. The number of possible 128-bit UUIDs available to the 
- *          application is therefore the number of Vendor Specific UUIDs added with the help of this function times 65536, 
- *          although restricted to modifying bytes 12 and 13 for each of the entries in the supplied array.
- *
- * @note Bytes 12 and 13 of the provided UUID will not be used internally, since those are always replaced by 
- * the 16-bit uuid field in @ref ble_uuid_t.
- *
- *
- * @param[in]  p_vs_uuid    Pointer to a 16-octet (128-bit) little endian Vendor Specific UUID disregarding
- *                          bytes 12 and 13.
- * @param[out] p_uuid_type  Pointer where the type field in @ref ble_uuid_t corresponding to this UUID will be stored.
- *
- * @return @ref NRF_SUCCESS Successfully added the Vendor Specific UUID.
- * @return @ref NRF_ERROR_INVALID_ADDR If p_vs_uuid or p_uuid_type is NULL or invalid.
- * @return @ref NRF_ERROR_NO_MEM If there are no more free slots for VS UUIDs.
- * @return @ref NRF_ERROR_FORBIDDEN If p_vs_uuid has already been added to the VS UUID table.
- */
-SVCALL(SD_BLE_UUID_VS_ADD, uint32_t, sd_ble_uuid_vs_add(ble_uuid128_t const * const p_vs_uuid, uint8_t * const p_uuid_type));
-
-
-/** @brief Decode little endian raw UUID bytes (16-bit or 128-bit) into a 24 bit @ref ble_uuid_t structure.
- * 
- * @details The raw UUID bytes excluding bytes 12 and 13 (i.e. bytes 0-11 and 14-15) of p_uuid_le are compared 
- * to the corresponding ones in each entry of the table of vendor specific UUIDs pouplated with @ref sd_ble_uuid_vs_add 
- * to look for a match. If there is such a match, bytes 12 and 13 are returned as p_uuid->uuid and the index 
- * relative to @ref BLE_UUID_TYPE_VENDOR_BEGIN as p_uuid->type. 
- *
- * @note If the UUID length supplied is 2, then the type set by this call will always be @ref BLE_UUID_TYPE_BLE.
- *
- * @param[in]      uuid_le_len Length in bytes of the buffer pointed to by p_uuid_le (must be 2 or 16 bytes).
- * @param[in]      p_uuid_le   Pointer pointing to little endian raw UUID bytes.
- * @param[in,out]  p_uuid      Pointer to a @ref ble_uuid_t structure to be filled in.
- *
- * @return @ref NRF_SUCCESS Successfully decoded into the @ref ble_uuid_t structure.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_INVALID_LENGTH Invalid UUID length.
- * @return @ref NRF_ERROR_NOT_FOUND For a 128-bit UUID, no match in the populated table of UUIDs.
- */                                                 
-SVCALL(SD_BLE_UUID_DECODE, uint32_t, sd_ble_uuid_decode(uint8_t uuid_le_len, uint8_t const * const p_uuid_le, ble_uuid_t * const p_uuid));
-
-
-/** @brief Encode a @ref ble_uuid_t structure into little endian raw UUID bytes (16-bit or 128-bit).
- *
- * @note The pointer to the destination buffer p_uuid_le may be NULL, in which case only the validitiy and size of p_uuid is computed.
- *
- * @param[in]      p_uuid        Pointer to a @ref ble_uuid_t structure that will be encoded into bytes.
- * @param[out]     p_uuid_le_len Pointer to a uint8_t that will be filled with the encoded length (2 or 16 bytes).
- * @param[out]     p_uuid_le     Pointer to a buffer where the little endian raw UUID bytes (2 or 16) will be stored.
- *
- * @return @ref NRF_SUCCESS Successfully encoded into the buffer.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid UUID type.
- */
-SVCALL(SD_BLE_UUID_ENCODE, uint32_t, sd_ble_uuid_encode(ble_uuid_t const * const p_uuid, uint8_t * const  p_uuid_le_len, uint8_t * const p_uuid_le));
-
-
-/**@brief Get Version Information.
- *
- * @details This call allows the application to get the BLE stack version information.
- *
- * @param[in] p_version Pointer to ble_version_t structure to be filled in.
- *
- * @return @ref NRF_SUCCESS  Version information stored successfully.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_BUSY The stack is busy (typically doing a locally-initiated disconnection procedure).
- */
-SVCALL(SD_BLE_VERSION_GET, uint32_t, sd_ble_version_get(ble_version_t * p_version));
-
-
-/**@brief Provide a user memory block.
- *
- * @note This call can only be used as a response to a @ref BLE_EVT_USER_MEM_REQUEST event issued to the application.
- *
- * @param[in] conn_handle                 Connection handle.
- * @param[in] p_block                     Pointer to a user memory block structure.
- *
- * @return @ref NRF_SUCCESS               Successfully queued a response to the peer.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
- * @return @ref NRF_ERROR_INVALID_STATE   No execute write request pending.
- */
-SVCALL(SD_BLE_USER_MEM_REPLY, uint32_t, sd_ble_user_mem_reply(uint16_t conn_handle, ble_user_mem_block_t *p_block));
-
-
-/**@brief Set a BLE option.
- *
- * @details This call allows the application to set the value of an option.
- *
- * @param[in] opt_id Option ID.
- * @param[in] p_opt Pointer to a ble_opt_t structure containing the option value.
- *
- * @retval ::NRF_SUCCESS  Option set successfully.
- * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
- * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints.
- * @retval ::NRF_ERROR_INVALID_STATE Unable to set the parameter at this time.
- * @retval ::NRF_ERROR_BUSY The stack is busy or the previous procedure has not completed.
- */
-SVCALL(SD_BLE_OPT_SET, uint32_t, sd_ble_opt_set(uint32_t opt_id, ble_opt_t const *p_opt));
-
-
-/**@brief Get a BLE option.
- *
- * @details This call allows the application to retrieve the value of an option.
- *
- * @param[in] opt_id Option ID.
- * @param[out] p_opt Pointer to a ble_opt_t structure to be filled in.
- *
- * @retval ::NRF_SUCCESS  Option retrieved successfully.
- * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
- * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints.
- * @retval ::NRF_ERROR_INVALID_STATE Unable to retrieve the parameter at this time.
- * @retval ::NRF_ERROR_BUSY The stack is busy or the previous procedure has not completed.
- * @retval ::NRF_ERROR_NOT_SUPPORTED This option is not supported.
- *
- */
-SVCALL(SD_BLE_OPT_GET, uint32_t, sd_ble_opt_get(uint32_t opt_id, ble_opt_t *p_opt));
-
-/** @} */
-
-#endif /* BLE_H__ */
-
-/**
-  @}
-  @}
-*/
--- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/ble_err.h	Fri Oct 17 14:00:07 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved.
- *
- * The information contained herein is confidential property of Nordic Semiconductor. The use,
- * copying, transfer or disclosure of such information is prohibited except by express written
- * agreement with Nordic Semiconductor.
- *
- */
- /**
-  @addtogroup BLE_COMMON
-  @{
-  @addtogroup  nrf_error
-  @{
-    @ingroup BLE_COMMON
-  @}
-
-  @defgroup ble_err General error codes
-  @{
-
-  @brief General error code definitions for the BLE API.
-
-  @ingroup BLE_COMMON
-*/
-#ifndef NRF_BLE_ERR_H__
-#define NRF_BLE_ERR_H__
-
-#include "nrf_error.h"
-
-/* @defgroup BLE_ERRORS Error Codes
- * @{ */
-#define BLE_ERROR_NOT_ENABLED            (NRF_ERROR_STK_BASE_NUM+0x001) /**< @ref sd_ble_enable has not been called. */
-#define BLE_ERROR_INVALID_CONN_HANDLE    (NRF_ERROR_STK_BASE_NUM+0x002) /**< Invalid connection handle. */
-#define BLE_ERROR_INVALID_ATTR_HANDLE    (NRF_ERROR_STK_BASE_NUM+0x003) /**< Invalid attribute handle. */
-#define BLE_ERROR_NO_TX_BUFFERS          (NRF_ERROR_STK_BASE_NUM+0x004) /**< Buffer capacity exceeded. */
-/** @} */
-
-
-/** @defgroup BLE_ERROR_SUBRANGES Module specific error code subranges
- *  @brief Assignment of subranges for module specific error codes.
- *  @note For specific error codes, see ble_<module>.h or ble_error_<module>.h.
- * @{ */
-#define NRF_L2CAP_ERR_BASE             (NRF_ERROR_STK_BASE_NUM+0x100) /**< L2CAP specific errors. */
-#define NRF_GAP_ERR_BASE               (NRF_ERROR_STK_BASE_NUM+0x200) /**< GAP specific errors. */
-#define NRF_GATTC_ERR_BASE             (NRF_ERROR_STK_BASE_NUM+0x300) /**< GATT client specific errors. */
-#define NRF_GATTS_ERR_BASE             (NRF_ERROR_STK_BASE_NUM+0x400) /**< GATT server specific errors. */
-/** @} */
-
-#endif
-
-
-/**
-  @}
-  @}
-*/
--- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/ble_gap.h	Fri Oct 17 14:00:07 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1032 +0,0 @@
-/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved.
- *
- * The information contained herein is confidential property of Nordic Semiconductor. The use,
- * copying, transfer or disclosure of such information is prohibited except by express written
- * agreement with Nordic Semiconductor.
- *
- */
-/**
-  @addtogroup BLE_GAP Generic Access Profile (GAP)
-  @{
-  @brief Definitions and prototypes for the GAP interface.
- */
-
-#ifndef BLE_GAP_H__
-#define BLE_GAP_H__
-
-#include "ble_types.h"
-#include "ble_ranges.h"
-#include "nrf_svc.h"
-
-
-/**@addtogroup BLE_GAP_ENUMERATIONS Enumerations 
- * @{ */
-
-/**@brief GAP API SVC numbers.
- */
-enum BLE_GAP_SVCS
-{
-  SD_BLE_GAP_ADDRESS_SET  = BLE_GAP_SVC_BASE,  /**< Set own Bluetooth Address. */
-  SD_BLE_GAP_ADDRESS_GET,                      /**< Get own Bluetooth Address. */
-  SD_BLE_GAP_ADV_DATA_SET,                     /**< Set Advertisement Data. */
-  SD_BLE_GAP_ADV_START,                        /**< Start Advertising. */
-  SD_BLE_GAP_ADV_STOP,                         /**< Stop Advertising. */
-  SD_BLE_GAP_CONN_PARAM_UPDATE,                /**< Connection Parameter Update. */
-  SD_BLE_GAP_DISCONNECT,                       /**< Disconnect. */
-  SD_BLE_GAP_TX_POWER_SET,                     /**< Set TX Power. */
-  SD_BLE_GAP_APPEARANCE_SET,                   /**< Set Appearance. */
-  SD_BLE_GAP_APPEARANCE_GET,                   /**< Get Appearance. */
-  SD_BLE_GAP_PPCP_SET,                         /**< Set PPCP. */
-  SD_BLE_GAP_PPCP_GET,                         /**< Get PPCP. */
-  SD_BLE_GAP_DEVICE_NAME_SET,                  /**< Set Device Name. */
-  SD_BLE_GAP_DEVICE_NAME_GET,                  /**< Get Device Name. */
-  SD_BLE_GAP_AUTHENTICATE,                     /**< Initiate Pairing/Bonding. */
-  SD_BLE_GAP_SEC_PARAMS_REPLY,                 /**< Reply with Security Parameters. */
-  SD_BLE_GAP_AUTH_KEY_REPLY,                   /**< Reply with an authentication key. */
-  SD_BLE_GAP_SEC_INFO_REPLY,                   /**< Reply with Security Information. */
-  SD_BLE_GAP_CONN_SEC_GET,                     /**< Obtain connection security level. */
-  SD_BLE_GAP_RSSI_START,                       /**< Start reporting of changes in RSSI. */ 
-  SD_BLE_GAP_RSSI_STOP,                        /**< Stop reporting of changes in RSSI. */ 
-};
-/**@} */
-
-/**@addtogroup BLE_GAP_DEFINES Defines
- * @{ */
-
-/**@defgroup BLE_ERRORS_GAP SVC return values specific to GAP
- * @{ */
-#define BLE_ERROR_GAP_UUID_LIST_MISMATCH            (NRF_GAP_ERR_BASE + 0x000)  /**< UUID list does not contain an integral number of UUIDs. */
-#define BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST   (NRF_GAP_ERR_BASE + 0x001)  /**< Use of Whitelist not permitted with discoverable advertising. */
-#define BLE_ERROR_GAP_INVALID_BLE_ADDR              (NRF_GAP_ERR_BASE + 0x002)  /**< The upper two bits of the address do not correspond to the specified address type. */
-/**@} */
-
-
-/**@defgroup BLE_GAP_ROLES GAP Roles
- * @note Not explicitly used in peripheral API, but will be relevant for central API.
- * @{ */
-#define BLE_GAP_ROLE_INVALID     0x0            /**< Invalid Role. */
-#define BLE_GAP_ROLE_PERIPH      0x1            /**< Peripheral Role. */
-#define BLE_GAP_ROLE_CENTRAL     0x2            /**< Central Role. */
-/**@} */
-
-
-/**@defgroup BLE_GAP_TIMEOUT_SOURCES GAP Timeout sources
- * @{ */
-#define BLE_GAP_TIMEOUT_SRC_ADVERTISEMENT              0x00 /**< Advertisement timeout. */
-#define BLE_GAP_TIMEOUT_SRC_SECURITY_REQUEST           0x01 /**< Security request timeout. */
-/**@} */
-
-
-/**@defgroup BLE_GAP_ADDR_TYPES GAP Address types
- * @{ */
-#define BLE_GAP_ADDR_TYPE_PUBLIC                        0x00 /**< Public address. */
-#define BLE_GAP_ADDR_TYPE_RANDOM_STATIC                 0x01 /**< Random Static address. */
-#define BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE     0x02 /**< Private Resolvable address. */
-#define BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE 0x03 /**< Private Non-Resolvable address. */
-/**@} */
-
-/**@defgroup BLE_GAP_ADDR_CYCLE_MODES GAP Address cycle modes
- * @{ */
-#define BLE_GAP_ADDR_CYCLE_MODE_NONE      0x00 /**< Set addresses directly, no automatic address cycling. */
-#define BLE_GAP_ADDR_CYCLE_MODE_AUTO      0x01 /**< Automatically generate and update private addresses. */
-/** @} */
-
-/**@brief The default interval in seconds at which a private address is refreshed when address cycle mode is @ref BLE_GAP_ADDR_CYCLE_MODE_AUTO.  */
-#define BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S (60 * 15)
-
-/** @brief BLE address length. */
-#define BLE_GAP_ADDR_LEN            6
-
-
-/**@defgroup BLE_GAP_AD_TYPE_DEFINITIONS GAP Advertising and Scan Response Data format
- * @note Found at https://www.bluetooth.org/Technical/AssignedNumbers/generic_access_profile.htm
- * @{ */
-#define BLE_GAP_AD_TYPE_FLAGS                               0x01 /**< Flags for discoverability. */
-#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_MORE_AVAILABLE   0x02 /**< Partial list of 16 bit service UUIDs. */
-#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_COMPLETE         0x03 /**< Complete list of 16 bit service UUIDs. */
-#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_MORE_AVAILABLE   0x04 /**< Partial list of 32 bit service UUIDs. */
-#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_COMPLETE         0x05 /**< Complete list of 32 bit service UUIDs. */
-#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_MORE_AVAILABLE  0x06 /**< Partial list of 128 bit service UUIDs. */
-#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_COMPLETE        0x07 /**< Complete list of 128 bit service UUIDs. */
-#define BLE_GAP_AD_TYPE_SHORT_LOCAL_NAME                    0x08 /**< Short local device name. */
-#define BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME                 0x09 /**< Complete local device name. */
-#define BLE_GAP_AD_TYPE_TX_POWER_LEVEL                      0x0A /**< Transmit power level. */
-#define BLE_GAP_AD_TYPE_CLASS_OF_DEVICE                     0x0D /**< Class of device. */
-#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C               0x0E /**< Simple Pairing Hash C. */
-#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R         0x0F /**< Simple Pairing Randomizer R. */
-#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_TK_VALUE           0x10 /**< Security Manager TK Value. */
-#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_OOB_FLAGS          0x11 /**< Security Manager Out Of Band Flags. */
-#define BLE_GAP_AD_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE     0x12 /**< Slave Connection Interval Range. */
-#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_16BIT       0x14 /**< List of 16-bit Service Solicitation UUIDs. */
-#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_128BIT      0x15 /**< List of 128-bit Service Solicitation UUIDs. */
-#define BLE_GAP_AD_TYPE_SERVICE_DATA                        0x16 /**< Service Data - 16-bit UUID. */
-#define BLE_GAP_AD_TYPE_PUBLIC_TARGET_ADDRESS               0x17 /**< Public Target Address. */
-#define BLE_GAP_AD_TYPE_RANDOM_TARGET_ADDRESS               0x18 /**< Random Target Address. */
-#define BLE_GAP_AD_TYPE_APPEARANCE                          0x19 /**< Appearance. */
-#define BLE_GAP_AD_TYPE_ADVERTISING_INTERVAL                0x1A /**< Advertising Interval. */ 
-#define BLE_GAP_AD_TYPE_LE_BLUETOOTH_DEVICE_ADDRESS         0x1B /**< LE Bluetooth Device Address. */
-#define BLE_GAP_AD_TYPE_LE_ROLE                             0x1C /**< LE Role. */
-#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C256            0x1D /**< Simple Pairing Hash C-256. */
-#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R256      0x1E /**< Simple Pairing Randomizer R-256. */
-#define BLE_GAP_AD_TYPE_SERVICE_DATA_32BIT_UUID             0x20 /**< Service Data - 32-bit UUID. */
-#define BLE_GAP_AD_TYPE_SERVICE_DATA_128BIT_UUID            0x21 /**< Service Data - 128-bit UUID. */
-#define BLE_GAP_AD_TYPE_3D_INFORMATION_DATA                 0x3D /**< 3D Information Data. */
-#define BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA          0xFF /**< Manufacturer Specific Data. */
-/**@} */
-
-
-/**@defgroup BLE_GAP_ADV_FLAGS GAP Advertisement Flags
- * @{ */
-#define BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE         (0x01)   /**< LE Limited Discoverable Mode. */
-#define BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE         (0x02)   /**< LE General Discoverable Mode. */
-#define BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED         (0x04)   /**< BR/EDR not supported. */
-#define BLE_GAP_ADV_FLAG_LE_BR_EDR_CONTROLLER         (0x08)   /**< Simultaneous LE and BR/EDR, Controller. */
-#define BLE_GAP_ADV_FLAG_LE_BR_EDR_HOST               (0x10)   /**< Simultaneous LE and BR/EDR, Host. */
-#define BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE   (BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED)   /**< LE Limited Discoverable Mode, BR/EDR not supported. */
-#define BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE   (BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED)   /**< LE General Discoverable Mode, BR/EDR not supported. */
-/**@} */
-
-
-/**@defgroup BLE_GAP_ADV_INTERVALS GAP Advertising interval max and min
- * @{ */
-#define BLE_GAP_ADV_INTERVAL_MIN        0x0020 /**< Minimum Advertising interval in 625 us units, i.e. 20 ms. */
-#define BLE_GAP_ADV_NONCON_INTERVAL_MIN 0x00A0 /**< Minimum Advertising interval in 625 us units for non connectable mode, i.e. 100 ms. */
-#define BLE_GAP_ADV_INTERVAL_MAX        0x4000 /**< Maximum Advertising interval in 625 us units, i.e. 10.24 s. */
- /**@}  */
-
-
-/**@brief Maximum size of advertising data in octets. */
-#define  BLE_GAP_ADV_MAX_SIZE       31
-
-
-/**@defgroup BLE_GAP_ADV_TYPES GAP Advertising types
- * @{ */
-#define BLE_GAP_ADV_TYPE_ADV_IND          0x00   /**< Connectable undirected. */
-#define BLE_GAP_ADV_TYPE_ADV_DIRECT_IND   0x01   /**< Connectable directed. */
-#define BLE_GAP_ADV_TYPE_ADV_SCAN_IND     0x02   /**< Scannable undirected. */
-#define BLE_GAP_ADV_TYPE_ADV_NONCONN_IND  0x03   /**< Non connectable undirected. */
-/**@} */
-
-
-/**@defgroup BLE_GAP_ADV_FILTER_POLICIES GAP Advertising filter policies
- * @{ */
-#define BLE_GAP_ADV_FP_ANY                0x00   /**< Allow scan requests and connect requests from any device. */
-#define BLE_GAP_ADV_FP_FILTER_SCANREQ     0x01   /**< Filter scan requests with whitelist. */
-#define BLE_GAP_ADV_FP_FILTER_CONNREQ     0x02   /**< Filter connect requests with whitelist. */
-#define BLE_GAP_ADV_FP_FILTER_BOTH        0x03   /**< Filter both scan and connect requests with whitelist. */
-/**@} */
-
-
-/**@defgroup BLE_GAP_ADV_TIMEOUT_VALUES GAP Advertising timeout values
- * @{ */
-#define BLE_GAP_ADV_TIMEOUT_LIMITED_MAX      180 /**< Maximum advertising time in limited discoverable mode (TGAP(lim_adv_timeout) = 180s in spec (Addendum 2)). */
-#define BLE_GAP_ADV_TIMEOUT_GENERAL_UNLIMITED  0 /**< Unlimited advertising in general discoverable mode. */
-/**@} */
-
-
-/**@defgroup BLE_GAP_DISC_MODES GAP Discovery modes
- * @{ */
-#define BLE_GAP_DISC_MODE_NOT_DISCOVERABLE  0x00   /**< Not discoverable discovery Mode. */
-#define BLE_GAP_DISC_MODE_LIMITED           0x01   /**< Limited Discovery Mode. */
-#define BLE_GAP_DISC_MODE_GENERAL           0x02   /**< General Discovery Mode. */
-/**@} */
-
-/**@defgroup BLE_GAP_IO_CAPS GAP IO Capabilities
- * @{ */
-#define BLE_GAP_IO_CAPS_DISPLAY_ONLY      0x00   /**< Display Only. */
-#define BLE_GAP_IO_CAPS_DISPLAY_YESNO     0x01   /**< Display and Yes/No entry. */
-#define BLE_GAP_IO_CAPS_KEYBOARD_ONLY     0x02   /**< Keyboard Only. */
-#define BLE_GAP_IO_CAPS_NONE              0x03   /**< No I/O capabilities. */
-#define BLE_GAP_IO_CAPS_KEYBOARD_DISPLAY  0x04   /**< Keyboard and Display. */
-/**@} */
-
-
-/**@defgroup BLE_GAP_AUTH_KEY_TYPES GAP Authentication Key Types
- * @{ */
-#define BLE_GAP_AUTH_KEY_TYPE_NONE        0x00   /**< No key (may be used to reject). */
-#define BLE_GAP_AUTH_KEY_TYPE_PASSKEY     0x01   /**< 6-digit Passkey. */
-#define BLE_GAP_AUTH_KEY_TYPE_OOB         0x02   /**< Out Of Band data. */
-/**@} */
-
-/**@defgroup BLE_GAP_SEC_STATUS GAP Security status
- * @{ */
-#define BLE_GAP_SEC_STATUS_SUCCESS                0x00  /**< Successful parameters. */
-#define BLE_GAP_SEC_STATUS_TIMEOUT                0x01  /**< Procedure timed out. */
-#define BLE_GAP_SEC_STATUS_PDU_INVALID            0x02  /**< Invalid PDU received. */
-#define BLE_GAP_SEC_STATUS_PASSKEY_ENTRY_FAILED   0x81  /**< Passkey entry failed (user cancelled or other). */
-#define BLE_GAP_SEC_STATUS_OOB_NOT_AVAILABLE      0x82  /**< Out of Band Key not available. */
-#define BLE_GAP_SEC_STATUS_AUTH_REQ               0x83  /**< Authentication requirements not met. */
-#define BLE_GAP_SEC_STATUS_CONFIRM_VALUE          0x84  /**< Confirm value failed. */
-#define BLE_GAP_SEC_STATUS_PAIRING_NOT_SUPP       0x85  /**< Pairing not supported.  */
-#define BLE_GAP_SEC_STATUS_ENC_KEY_SIZE           0x86  /**< Encryption key size. */
-#define BLE_GAP_SEC_STATUS_SMP_CMD_UNSUPPORTED    0x87  /**< Unsupported SMP command. */
-#define BLE_GAP_SEC_STATUS_UNSPECIFIED            0x88  /**< Unspecified reason. */
-#define BLE_GAP_SEC_STATUS_REPEATED_ATTEMPTS      0x89  /**< Too little time elapsed since last attempt. */
-#define BLE_GAP_SEC_STATUS_INVALID_PARAMS         0x8A  /**< Invalid parameters. */
-/**@} */
-
-/**@defgroup BLE_GAP_SEC_STATUS_SOURCES GAP Security status sources
- * @{ */
-#define BLE_GAP_SEC_STATUS_SOURCE_LOCAL           0x00  /**< Local failure. */
-#define BLE_GAP_SEC_STATUS_SOURCE_REMOTE          0x01  /**< Remote failure. */
-/**@} */
-
-/**@defgroup BLE_GAP_CP_LIMITS GAP Connection Parameters Limits
- * @{ */
-#define BLE_GAP_CP_MIN_CONN_INTVL_NONE           0xFFFF  /**< No new minimum connction interval specified in connect parameters. */
-#define BLE_GAP_CP_MIN_CONN_INTVL_MIN            0x0006  /**< Lowest mimimum connection interval permitted, in units of 1.25 ms, i.e. 7.5 ms. */
-#define BLE_GAP_CP_MIN_CONN_INTVL_MAX            0x0C80  /**< Highest minimum connection interval permitted, in units of 1.25 ms, i.e. 4 s. */
-#define BLE_GAP_CP_MAX_CONN_INTVL_NONE           0xFFFF  /**< No new maximum connction interval specified in connect parameters. */
-#define BLE_GAP_CP_MAX_CONN_INTVL_MIN            0x0006  /**< Lowest maximum connection interval permitted, in units of 1.25 ms, i.e. 7.5 ms. */
-#define BLE_GAP_CP_MAX_CONN_INTVL_MAX            0x0C80  /**< Highest maximum connection interval permitted, in units of 1.25 ms, i.e. 4 s. */
-#define BLE_GAP_CP_SLAVE_LATENCY_MAX             0x03E8  /**< Highest slave latency permitted, in connection events. */
-#define BLE_GAP_CP_CONN_SUP_TIMEOUT_NONE         0xFFFF  /**< No new supervision timeout specified in connect parameters. */
-#define BLE_GAP_CP_CONN_SUP_TIMEOUT_MIN          0x000A  /**< Lowest supervision timeout permitted, in units of 10 ms, i.e. 100 ms. */
-#define BLE_GAP_CP_CONN_SUP_TIMEOUT_MAX          0x0C80  /**< Highest supervision timeout permitted, in units of 10 ms, i.e. 32 s. */
-/**@} */
-
-
-/**@brief GAP device name maximum length. */
-#define BLE_GAP_DEVNAME_MAX_LEN           31
-
-
-/**@defgroup BLE_GAP_CONN_SEC_MODE_SET_MACROS GAP attribute security requirement setters
- *
- * See @ref ble_gap_conn_sec_mode_t.
- * @{ */
-/**@brief Set sec_mode pointed to by ptr to have no access rights.*/
-#define BLE_GAP_CONN_SEC_MODE_SET_NO_ACCESS(ptr)         do {(ptr)->sm = 0; (ptr)->lv = 0;} while(0)
-/**@brief Set sec_mode pointed to by ptr to require no protection, open link.*/
-#define BLE_GAP_CONN_SEC_MODE_SET_OPEN(ptr)              do {(ptr)->sm = 1; (ptr)->lv = 1;} while(0)
-/**@brief Set sec_mode pointed to by ptr to require encryption, but no MITM protection.*/
-#define BLE_GAP_CONN_SEC_MODE_SET_ENC_NO_MITM(ptr)       do {(ptr)->sm = 1; (ptr)->lv = 2;} while(0)
-/**@brief Set sec_mode pointed to by ptr to require encryption and MITM protection.*/
-#define BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(ptr)     do {(ptr)->sm = 1; (ptr)->lv = 3;} while(0)
-/**@brief Set sec_mode pointed to by ptr to require signing or encryption, no MITM protection needed.*/
-#define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_NO_MITM(ptr)    do {(ptr)->sm = 2; (ptr)->lv = 1;} while(0)
-/**@brief Set sec_mode pointed to by ptr to require signing or encryption with MITM protection.*/
-#define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_WITH_MITM(ptr)  do {(ptr)->sm = 2; (ptr)->lv = 2;} while(0)
-/**@} */
-
-
-/**@brief GAP Security Key Length. */
-#define BLE_GAP_SEC_KEY_LEN 16
-
-/**@brief GAP Passkey Length. */
-#define BLE_GAP_PASSKEY_LEN 6
-
-/**@brief Maximum amount of addresses in a whitelist. */
-#define BLE_GAP_WHITELIST_ADDR_MAX_COUNT (8)
-
-/**@brief Maximum amount of IRKs in a whitelist.
- * @note  The number of IRKs is limited to 8, even if the hardware supports more.
- */
-#define BLE_GAP_WHITELIST_IRK_MAX_COUNT (8)
-
-/**@defgroup GAP_SEC_MODES GAP Security Modes
- * @{ */
-#define BLE_GAP_SEC_MODE 0x00 /**< No key (may be used to reject). */
-/**@} */
-
-/**@} */
-
-/**@addtogroup BLE_GAP_STRUCTURES Structures
- * @{ */
-
-/**@brief Bluetooth Low Energy address. */
-typedef struct
-{
-  uint8_t addr_type;                    /**< See @ref BLE_GAP_ADDR_TYPES. */
-  uint8_t addr[BLE_GAP_ADDR_LEN];       /**< 48-bit address, LSB format. */
-} ble_gap_addr_t;
-
-
-/**@brief GAP connection parameters.
- *
- * @note  When ble_conn_params_t is received in an event, both min_conn_interval and
- *        max_conn_interval will be equal to the connection interval set by the central.
- */
-typedef struct
-{
-  uint16_t min_conn_interval;         /**< Minimum Connection Interval in 1.25 ms units, see @ref BLE_GAP_CP_LIMITS.*/
-  uint16_t max_conn_interval;         /**< Maximum Connection Interval in 1.25 ms units, see @ref BLE_GAP_CP_LIMITS.*/
-  uint16_t slave_latency;             /**< Slave Latency in number of connection events, see @ref BLE_GAP_CP_LIMITS.*/
-  uint16_t conn_sup_timeout;          /**< Connection Supervision Timeout in 10 ms units, see @ref BLE_GAP_CP_LIMITS.*/
-} ble_gap_conn_params_t;
-
-
-/**@brief GAP link requirements.
- *
- * See Bluetooth Core specification, Volume 3 Part C 10.2 for details.
- *
- * Security Mode 0 Level 0: No access permissions at all (this level is not defined by the Bluetooth Core specification).\n
- * Security Mode 1 Level 1: No security is needed (aka open link).\n
- * Security Mode 1 Level 2: Encrypted link required, MITM protection not necessary.\n
- * Security Mode 1 Level 3: MITM protected encrypted link required.\n
- * Security Mode 2 Level 1: Signing or encryption required, MITM protection not necessary.\n
- * Security Mode 2 Level 2: MITM protected signing required, unless link is MITM protected encrypted.\n
- */
-typedef struct
-{
-  uint8_t sm : 4;                     /**< Security Mode (1 or 2), 0 for no permissions at all. */
-  uint8_t lv : 4;                     /**< Level (1, 2 or 3), 0 for no permissions at all. */
-
-} ble_gap_conn_sec_mode_t;
-
-
-/**@brief GAP connection security status.*/
-typedef struct
-{
-  ble_gap_conn_sec_mode_t sec_mode;           /**< Currently active security mode for this connection.*/
-  uint8_t                 encr_key_size;      /**< Length of currently active encryption key, 7 to 16 octets (only applicable for bonding procedures). */
-} ble_gap_conn_sec_t;
-
-
-/**@brief Identity Resolving Key. */
-typedef struct
-{
-  uint8_t irk[BLE_GAP_SEC_KEY_LEN];   /**< Array containing IRK. */
-} ble_gap_irk_t;
-
-
-/**@brief Whitelist structure. */
-typedef struct
-{
-  ble_gap_addr_t   ** pp_addrs;        /**< Pointer to array of device address pointers, pointing to addresses to be used in whitelist. NULL if none are given. */
-  uint8_t             addr_count;      /**< Count of device addresses in array, up to @ref BLE_GAP_WHITELIST_ADDR_MAX_COUNT. */
-  ble_gap_irk_t    ** pp_irks;         /**< Pointer to array of Identity Resolving Key (IRK) pointers, each pointing to an IRK in the whitelist. NULL if none are given. */
-  uint8_t             irk_count;       /**< Count of IRKs in array, up to @ref BLE_GAP_WHITELIST_IRK_MAX_COUNT. */
-} ble_gap_whitelist_t;
-
-
-/**@brief GAP advertising parameters.*/
-typedef struct
-{
-  uint8_t               type;                 /**< See @ref BLE_GAP_ADV_TYPES. */
-  ble_gap_addr_t*       p_peer_addr;          /**< For BLE_GAP_CONN_MODE_DIRECTED mode only, known peer address. */
-  uint8_t               fp;                   /**< Filter Policy, see @ref BLE_GAP_ADV_FILTER_POLICIES. */
-  ble_gap_whitelist_t * p_whitelist;          /**< Pointer to whitelist, NULL if none is given. */
-  uint16_t              interval;             /**< Advertising interval between 0x0020 and 0x4000 in 0.625 ms units (20ms to 10.24s), see @ref BLE_GAP_ADV_INTERVALS. This parameter must be set to 0 if type equals @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND. */
-  uint16_t              timeout;              /**< Advertising timeout between 0x0001 and 0x3FFF in seconds, 0x0000 disables timeout. See also @ref BLE_GAP_ADV_TIMEOUT_VALUES. This parameter must be set to 0 if type equals @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND. */
-} ble_gap_adv_params_t;
-
-
-/**@brief GAP scanning parameters. */
-typedef struct
-{
-  uint8_t    filter;                    /**< Filter based on discovery mode, see @ref BLE_GAP_DISC_MODES. */
-  uint8_t    active    : 1;             /**< If 1, perform active scanning (scan requests). */
-  uint8_t    selective : 1;             /**< If 1, ignore unknown devices (non whitelisted). */
-  uint16_t   interval;                  /**< Scan interval between 0x0020 and 0x4000 in 0.625ms units (20ms to 10.24s). */
-  uint16_t   window;                    /**< Scan window between 0x0004 and 0x4000 in 0.625ms units (2.5ms to 10.24s). */
-  uint16_t   timeout;                   /**< Scan timeout between 0x0001 and 0x3FFF in seconds, 0x0000 disables timeout. */
-} ble_gap_scan_params_t;
-
-
-/**@brief GAP security parameters. */
-typedef struct
-{
-  uint16_t   timeout;                   /**< Timeout for SMP transactions or Security Request in seconds, see @ref sd_ble_gap_authenticate and @ref sd_ble_gap_sec_params_reply for more information. */
-  uint8_t    bond    : 1;               /**< Perform bonding. */
-  uint8_t    mitm    : 1;               /**< Man In The Middle protection required. */
-  uint8_t    io_caps : 3;               /**< IO capabilities, see @ref BLE_GAP_IO_CAPS. */
-  uint8_t    oob     : 1;               /**< Out Of Band data available. */
-  uint8_t    min_key_size;              /**< Minimum encryption key size in octets between 7 and 16. */
-  uint8_t    max_key_size;              /**< Maximum encryption key size in octets between min_key_size and 16. */
-} ble_gap_sec_params_t;
-
-
-/**@brief GAP Encryption Information. */
-typedef struct
-{
-  uint16_t  div;                        /**< Encryption Diversifier. */
-  uint8_t   ltk[BLE_GAP_SEC_KEY_LEN];   /**< Long Term Key. */
-  uint8_t   auth : 1;                   /**< Authenticated Key. */
-  uint8_t   ltk_len : 7;                /**< LTK length in octets. */
-} ble_gap_enc_info_t;
-
-
-/**@brief GAP Master Identification. */
-typedef struct
-{
-  uint16_t  ediv;                       /**< Encrypted Diversifier. */
-  uint8_t   rand[8];                    /**< Random Number. */
-} ble_gap_master_id_t;
-
-
-/**@brief GAP Identity Information. */
-typedef struct
-{
-  ble_gap_addr_t  addr;                       /**< Bluetooth address to which this key applies. */
-  uint8_t         irk[BLE_GAP_SEC_KEY_LEN];   /**< Identity Resolution Key. */
-} ble_gap_id_info_t;
-
-
-/**@brief GAP Signing Information. */
-typedef struct
-{
-  uint8_t   csrk[BLE_GAP_SEC_KEY_LEN]; /* Connection Signature Resolving Key. */
-} ble_gap_sign_info_t;
-
-
-/**@brief GAP Event IDs.
- * Those IDs uniquely identify an event coming from the stack to the application.
- */
-enum BLE_GAP_EVTS
-{
-  BLE_GAP_EVT_CONNECTED  = BLE_GAP_EVT_BASE,    /**< Connection established. */
-  BLE_GAP_EVT_DISCONNECTED,                     /**< Disconnected from peer. */
-  BLE_GAP_EVT_CONN_PARAM_UPDATE,                /**< Connection Parameters updated. */
-  BLE_GAP_EVT_SEC_PARAMS_REQUEST,               /**< Request to provide security parameters. */
-  BLE_GAP_EVT_SEC_INFO_REQUEST,                 /**< Request to provide security information. */
-  BLE_GAP_EVT_PASSKEY_DISPLAY,                  /**< Request to display a passkey to the user. */
-  BLE_GAP_EVT_AUTH_KEY_REQUEST,                 /**< Request to provide an authentication key. */
-  BLE_GAP_EVT_AUTH_STATUS,                      /**< Authentication procedure completed with status. */
-  BLE_GAP_EVT_CONN_SEC_UPDATE,                  /**< Connection security updated. */
-  BLE_GAP_EVT_TIMEOUT,                          /**< Timeout expired. */
-  BLE_GAP_EVT_RSSI_CHANGED,                     /**< Signal strength measurement report. */
-};
-
-
-/**
- * @brief GAP Option IDs.
- * IDs that uniquely identify a GAP option.
- */
-enum BLE_GAP_OPTS
-{
-  BLE_GAP_OPT_LOCAL_CONN_LATENCY  = BLE_GAP_OPT_BASE,    /**< Local connection latency. */
-  BLE_GAP_OPT_PASSKEY,                                   /**< Set passkey to be used during pairing. This option can be used to make the SoftDevice use an application provided passkey instead of generating a random passkey.*/
-  BLE_GAP_OPT_PRIVACY,                                   /**< Set or get custom IRK or custom private address cycle interval. */
-};
-/**@} */
-
-
-/**@brief Event data for connected event. */
-typedef struct
-{
-  ble_gap_addr_t        peer_addr;              /**< Bluetooth address of the peer device. */
-  uint8_t               irk_match :1;           /**< If 1, peer device's address resolved using an IRK. */
-  uint8_t               irk_match_idx  :7;      /**< Index in IRK list where the address was matched. */
-  ble_gap_conn_params_t conn_params;            /**< GAP Connection Parameters. */
-} ble_gap_evt_connected_t;
-
-
-/**@brief Event data for disconnected event. */
-typedef struct
-{
-  uint8_t reason;                               /**< HCI error code. */
-} ble_gap_evt_disconnected_t;
-
-
-/**@brief Event data for connection parameter update event. */
-typedef struct
-{
-  ble_gap_conn_params_t conn_params;            /**<  GAP Connection Parameters. */
-} ble_gap_evt_conn_param_update_t;
-
-
-/**@brief Event data for security parameters request event. */
-typedef struct
-{
-  ble_gap_sec_params_t peer_params;             /**< Initiator Security Parameters. */
-} ble_gap_evt_sec_params_request_t;
-
-
-/**@brief Event data for security info request event. */
-typedef struct
-{
-  ble_gap_addr_t peer_addr;                     /**< Bluetooth address of the peer device. */
-  uint16_t       div;                           /**< Encryption diversifier for LTK lookup. */
-  uint8_t        enc_info  : 1;                 /**< If 1, Encryption Information required. */
-  uint8_t        id_info   : 1;                 /**< If 1, Identity Information required. */
-  uint8_t        sign_info : 1;                 /**< If 1, Signing Information required. */
-} ble_gap_evt_sec_info_request_t;
-
-
-/**@brief Event data for passkey display event. */
-typedef struct
-{
-  uint8_t passkey[BLE_GAP_PASSKEY_LEN];         /**< 6-digit passkey in ASCII ('0'-'9' digits only). */
-} ble_gap_evt_passkey_display_t;
-
-
-/**@brief Event data for authentication key request event. */
-typedef struct
-{
-  uint8_t key_type;                             /**< See @ref BLE_GAP_AUTH_KEY_TYPES. */
-} ble_gap_evt_auth_key_request_t;
-
-
-/**@brief Security levels supported.
- * @note See Bluetooth Specification Version 4.1 Volume 3, Part C, Chapter 10.
-*/
-typedef struct
-{
-  uint8_t lv1 : 1;                              /**< If 1: Level 1 is supported. */
-  uint8_t lv2 : 1;                              /**< If 1: Level 2 is supported. */
-  uint8_t lv3 : 1;                              /**< If 1: Level 3 is supported. */
-} ble_gap_sec_levels_t;
-
-
-/**@brief Keys that have been exchanged. */
-typedef struct
-{
-  uint8_t ltk       : 1;                        /**< Long Term Key. */
-  uint8_t ediv_rand : 1;                        /**< Encrypted Diversifier and Random value. */
-  uint8_t irk       : 1;                        /**< Identity Resolving Key. */
-  uint8_t address   : 1;                        /**< Public or static random address. */
-  uint8_t csrk      : 1;                        /**< Connection Signature Resolving Key. */
-} ble_gap_sec_keys_t;
-
-
-/**@brief Event data for authentication status event. */
-typedef struct
-{
-  uint8_t               auth_status;            /**< Authentication status, see @ref BLE_GAP_SEC_STATUS. */
-  uint8_t               error_src;              /**< On error, source that caused the failure, see @ref BLE_GAP_SEC_STATUS_SOURCES. */
-  ble_gap_sec_levels_t  sm1_levels;             /**< Levels supported in Security Mode 1. */
-  ble_gap_sec_levels_t  sm2_levels;             /**< Levels supported in Security Mode 2. */
-  ble_gap_sec_keys_t    periph_kex;             /**< Bitmap stating which keys were exchanged (distributed) by the peripheral. */
-  ble_gap_sec_keys_t    central_kex;            /**< Bitmap stating which keys were exchanged (distributed) by the central. */
-  struct periph_keys_t
-  {
-    ble_gap_enc_info_t    enc_info;             /**< Peripheral's Encryption information. */
-  } periph_keys;                                /**< Actual keys distributed from the Peripheral to the Central. */ 
-  struct central_keys_t
-  {
-    ble_gap_irk_t         irk;                  /**< Central's IRK. */
-    ble_gap_addr_t        id_info;              /**< Central's Identity Info. */
-  } central_keys;                               /**< Actual keys distributed from the Central to the Peripheral. */
-} ble_gap_evt_auth_status_t;
-
-
-/**@brief Event data for connection security update event. */
-typedef struct
-{
-  ble_gap_conn_sec_t conn_sec;                  /**< Connection security level. */
-} ble_gap_evt_conn_sec_update_t;
-
-
-/**@brief Event data for timeout event. */
-typedef struct
-{
-  uint8_t src;                                  /**< Source of timeout event, see @ref BLE_GAP_TIMEOUT_SOURCES. */
-} ble_gap_evt_timeout_t;
-
-
-/**@brief Event data for advertisement report event. */
-typedef struct
-{
-  int8_t  rssi;                               /**< Received Signal Strength Indication in dBm. */
-} ble_gap_evt_rssi_changed_t;
-
-
-/**@brief GAP event callback event structure. */
-typedef struct
-{
-  uint16_t conn_handle;                                     /**< Connection Handle on which event occured. */
-  union                                                     /**< union alternative identified by evt_id in enclosing struct. */
-  {
-    ble_gap_evt_connected_t          connected;             /**< Connected Event Parameters. */
-    ble_gap_evt_disconnected_t       disconnected;          /**< Disconnected Event Parameters. */
-    ble_gap_evt_conn_param_update_t  conn_param_update;     /**< Connection Parameter Update Parameters. */
-    ble_gap_evt_sec_params_request_t sec_params_request;    /**< Security Parameters Request Event Parameters. */
-    ble_gap_evt_sec_info_request_t   sec_info_request;      /**< Security Information Request Event Parameters. */
-    ble_gap_evt_passkey_display_t    passkey_display;       /**< Passkey Display Event Parameters. */
-    ble_gap_evt_auth_key_request_t   auth_key_request;      /**< Authentication Key Request Event Parameters. */
-    ble_gap_evt_auth_status_t        auth_status;           /**< Authentication Status Event Parameters. */
-    ble_gap_evt_conn_sec_update_t    conn_sec_update;       /**< Connection Security Update Event Parameters. */
-    ble_gap_evt_timeout_t            timeout;               /**< Timeout Event Parameters. */
-    ble_gap_evt_rssi_changed_t       rssi_changed;          /**< RSSI Event parameters. */
-  } params;
-
-} ble_gap_evt_t;
-
-
-/**@brief Local connection latency option.
- *
- *         Local connection latency is a feature which enables the slave to improve
- *         current consumption by ignoring the slave latency set by the peer. The
- *         local connection latency can only be set to a multiple of the slave latency,
- *         and cannot be longer than half of the supervision timeout.
- *
- *         Used with @ref sd_ble_opt_set to set the local connection latency. The
- *         @ref sd_ble_opt_get is not supported for this option, but the actual 
- *         local connection latency (unless set to NULL) is set as a return parameter
- *         when setting the option.
- *
- *  @note  The latency set will be truncated down to the closest slave latency event
- *         multiple, or the nearest multiple before half of the supervision timeout.
- *
- *  @note  The local connection latency is default off, and needs to be set for new
- *         connections and whenever the connection is updated.
- *
- *  @retval ::NRF_SUCCESS Set successfully.
- *  @retval ::NRF_ERROR_NOT_SUPPORTED Get is not supported.
- *  @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle parameter.
- */
-typedef struct
-{
-  uint16_t   conn_handle;                       /**< Connection Handle */
-  uint16_t   requested_latency;                 /**< Requested local connection latency. */
-  uint16_t * p_actual_latency;                  /**< Pointer to storage for the actual local connection latency (can be set to NULL to skip return value). */
-} ble_gap_opt_local_conn_latency_t;
-
-
-/**@brief Passkey Option.
- *
- *        Structure containing the passkey to be used during pairing. This can be used with @ref
- *        sd_ble_opt_set to make the SoftDevice use a pre-programmed passkey for authentication
- *        instead of generating a random one.
- *
- * @note  @ref sd_ble_opt_get is not supported for this option.
- *
- */
-typedef struct
-{
-  uint8_t * p_passkey;                          /**< Pointer to 6-digit ASCII string (digit 0..9 only, no NULL termination) passkey to be used during pairing. If this is NULL, the SoftDevice will generate a random passkey if required.*/
-} ble_gap_opt_passkey_t;
-
-
-/**@brief Custom Privacy Options.
- *
- * @note The specified address cycle interval is used when the address cycle mode is
- * @ref BLE_GAP_ADDR_CYCLE_MODE_AUTO. If 0 is given, the address will not be refreshed at any
- * interval, and not at start of advertising. A new address can be generated manually by calling
- * @ref sd_ble_gap_address_set with the same type again. The default interval is
- * @ref BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S.
- *
- * @note If cycle mode is @ref BLE_GAP_ADDR_CYCLE_MODE_AUTO, the address will immediately be
- * refreshed when this option is set.
- */
-typedef struct
-{
-  ble_gap_irk_t * p_irk;        /**< When input: Pointer to custom IRK, or NULL to use/reset to the device's default IRK. When output: Pointer to where the current IRK is to be stored, or NULL to not read out the IRK. */
-  uint16_t        interval_s;   /**< When input: Custom private address cycle interval in seconds. When output: The current private address cycle interval. */
-} ble_gap_opt_privacy_t;
-
-
-/**@brief Option structure for GAP options. */
-typedef union
-{
-  ble_gap_opt_local_conn_latency_t local_conn_latency;  /**< Local connection latency. */
-  ble_gap_opt_passkey_t            passkey;             /**< Passkey to be used for pairing.*/
-  ble_gap_opt_privacy_t            privacy;             /**< Custom privacy options. */
-} ble_gap_opt_t;
-/**@} */
-
-
-/**@addtogroup BLE_GAP_FUNCTIONS Functions
- * @{ */
-
-/**@brief Set local Bluetooth address.
- *
- * If the address cycle mode is @ref BLE_GAP_ADDR_CYCLE_MODE_AUTO, the address type is required to
- * be @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE or
- * @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE. The given address is ignored and the
- * SoftDevice will generate a new private address automatically every time advertising is
- * (re)started, and every @ref BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S seconds. If this API
- * call is used again with the same parameters while advertising, the SoftDevice will immediately
- * generate a new private address to replace the current address.
- *
- * If the application wishes to use a @ref BLE_GAP_ADDR_TYPE_PUBLIC or
- * @ref BLE_GAP_ADDR_TYPE_RANDOM_STATIC address, the cycle mode must be
- * @ref BLE_GAP_ADDR_CYCLE_MODE_NONE.
- *
- * If this API function is called while advertising, the softdevice will immediately update the
- * advertising address without the need to stop advertising in the following cases:
- *   - If the previously set address is of type @ref BLE_GAP_ADDR_TYPE_PUBLIC and the new address
- *   is also of type @ref BLE_GAP_ADDR_TYPE_PUBLIC
- *   - If the previously set address is not @ref BLE_GAP_ADDR_TYPE_PUBLIC and the new address is
- *   also not @ref BLE_GAP_ADDR_TYPE_PUBLIC.
- *
- * If the address is changed from a @ref BLE_GAP_ADDR_TYPE_PUBLIC address to another type or from
- * another type to a @ref BLE_GAP_ADDR_TYPE_PUBLIC address, the change will take effect the next
- * time advertising is started.
- *
- * @note If the address cycle mode is @ref BLE_GAP_ADDR_CYCLE_MODE_NONE and the application is
- *       using privacy, the application must take care to generate and set new private addresses
- *       periodically to comply with the Privacy specification in Bluetooth Core Spec.
- *
- * @param[in] addr_cycle_mode Address cycle mode, see @ref BLE_GAP_ADDR_CYCLE_MODES.
- * @param[in] p_addr          Pointer to address structure.
- *
- * @return @ref NRF_SUCCESS Address successfully set.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameters.
- * @return @ref BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address.
- * @return @ref NRF_ERROR_BUSY The stack is busy, process pending events and retry.
- */
-SVCALL(SD_BLE_GAP_ADDRESS_SET, uint32_t, sd_ble_gap_address_set(uint8_t addr_cycle_mode, ble_gap_addr_t const * const p_addr));
-
-
-/**@brief Get local Bluetooth address.
- *
- * @param[out] p_addr Pointer to address structure.
- *
- * @return @ref NRF_SUCCESS Address successfully retrieved.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- */
-SVCALL(SD_BLE_GAP_ADDRESS_GET, uint32_t, sd_ble_gap_address_get(ble_gap_addr_t * const p_addr));
-
-
-/**@brief Set, clear or update advertisement and scan response data.
- *
- * @note The format of the advertisement data will be checked by this call to ensure interoperability.
- *       Limitations imposed by this API call to the data provided include having a flags data type in the scan response data and
- *       duplicating the local name in the advertisement data and scan response data. 
- *
- * @note: To clear the advertisement data and set it to a 0-length packet, simply provide a valid pointer (p_data/p_sr_data) with its corresponding 
- *        length (dlen/srdlen) set to 0.
- *
- * @note: The call will fail if p_data and p_sr_data are both NULL since this would have no effect.
- *
- * @param[in] p_data    Raw data to be placed in advertisement packet. If NULL, no changes are made to the current advertisement packet data.
- * @param[in] dlen      Data length for p_data. Max size: @ref BLE_GAP_ADV_MAX_SIZE octets. Should be 0 if p_data is NULL, can be 0 if p_data is not NULL.
- * @param[in] p_sr_data Raw data to be placed in scan response packet. If NULL, no changes are made to the current scan response packet data.
- * @param[in] srdlen    Data length for p_sr_data. Max size: @ref BLE_GAP_ADV_MAX_SIZE octets. Should be 0 if p_sr_data is NULL, can be 0 if p_data is not NULL.
- *
- * @return @ref NRF_SUCCESS Advertisement data successfully updated or cleared.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_INVALID_FLAGS Invalid combination of advertising flags supplied.
- * @return @ref NRF_ERROR_INVALID_DATA Invalid data type(s) supplied, check the advertising data format specification.
- * @return @ref NRF_ERROR_INVALID_LENGTH Invalid data length(s) supplied.
- * @return @ref BLE_ERROR_GAP_UUID_LIST_MISMATCH Invalid UUID list supplied.
- * @return @ref NRF_ERROR_BUSY The stack is busy, process pending events and retry.
- */
-SVCALL(SD_BLE_GAP_ADV_DATA_SET, uint32_t, sd_ble_gap_adv_data_set(uint8_t const * const p_data, uint8_t dlen, uint8_t const * const p_sr_data, uint8_t srdlen));
-
-
-/**@brief Start advertising (GAP Discoverable, Connectable modes, Broadcast Procedure).
- *
- * @param[in] p_adv_params Pointer to advertising parameters structure.
- *
- * @return @ref NRF_SUCCESS The BLE stack has started advertising.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check the accepted ranges and limits.
- * @return @ref BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid Bluetooth address supplied.
- * @return @ref BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST Discoverable mode and whitelist incompatible.
- */
-SVCALL(SD_BLE_GAP_ADV_START, uint32_t, sd_ble_gap_adv_start(ble_gap_adv_params_t const * const p_adv_params));
-
-
-/**@brief Stop advertising (GAP Discoverable, Connectable modes, Broadcast Procedure).
- *
- * @return @ref NRF_SUCCESS The BLE stack has stopped advertising.
- * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation (most probably not in advertising state).
- */
-SVCALL(SD_BLE_GAP_ADV_STOP, uint32_t, sd_ble_gap_adv_stop(void));
-
-
-/**@brief Update connection parameters.
- *
- * @details In the central role this will initiate a Link Layer connection parameter update procedure,
- *          otherwise in the peripheral role, this will send the corresponding L2CAP request and wait for
- *          the central to perform the procedure. In both cases, and regardless of success or failure, the application
- *          will be informed of the result with a @ref BLE_GAP_EVT_CONN_PARAM_UPDATE event.
- *
- * @note If both a connection supervision timeout and a maximum connection interval are specified, then the following constraint
- *       applies: (conn_sup_timeout * 8) >= (max_conn_interval * (slave_latency + 1))
- *
- * @param[in] conn_handle Connection handle.
- * @param[in] p_conn_params  Pointer to desired connection parameters. If NULL is provided on a peripheral role,
- *                           the parameters in the PPCP characteristic of the GAP service will be used instead.
- *
- * @return @ref NRF_SUCCESS The Connection Update procedure has been started successfully.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints.
- * @return @ref NRF_ERROR_BUSY Procedure already in progress or not allowed at this time, process pending events and retry.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied.
- * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation.
- */
-SVCALL(SD_BLE_GAP_CONN_PARAM_UPDATE, uint32_t, sd_ble_gap_conn_param_update(uint16_t conn_handle, ble_gap_conn_params_t const * const p_conn_params));
-
-
-/**@brief Disconnect (GAP Link Termination).
- *
- * @details This call initiates the disconnection procedure, and its completion will be communicated to the application
- *          with a BLE_GAP_EVT_DISCONNECTED event.
- *
- * @param[in] conn_handle Connection handle.
- * @param[in] hci_status_code HCI status code, see @ref BLE_HCI_STATUS_CODES (accepted values are BTLE_REMOTE_USER_TERMINATED_CONNECTION and BTLE_CONN_INTERVAL_UNACCEPTABLE).
- *
- * @return @ref NRF_SUCCESS The disconnection procedure has been started successfully.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied.
- * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation (disconnection is already in progress or not connected at all).
- */
-SVCALL(SD_BLE_GAP_DISCONNECT, uint32_t, sd_ble_gap_disconnect(uint16_t conn_handle, uint8_t hci_status_code));
-
-
-/**@brief Set the radio's transmit power.
- *
- * @param[in] tx_power Radio transmit power in dBm (accepted values are -40, -30, -20, -16, -12, -8, -4, 0, and 4 dBm).
- *
- * @note -40 dBm will not actually give -40 dBm, but will instead be remapped to -30 dBm.
- *
- * @return @ref NRF_SUCCESS Successfully changed the transmit power.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
- * @return @ref NRF_ERROR_BUSY The stack is busy, process pending events and retry.
- */
-SVCALL(SD_BLE_GAP_TX_POWER_SET, uint32_t, sd_ble_gap_tx_power_set(int8_t tx_power));
-
-
-/**@brief Set GAP Appearance value.
- *
- * @param[in] appearance Appearance (16-bit), see @ref BLE_APPEARANCES.
- *
- * @return @ref NRF_SUCCESS  Appearance value set successfully.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
- */
-SVCALL(SD_BLE_GAP_APPEARANCE_SET, uint32_t, sd_ble_gap_appearance_set(uint16_t appearance));
-
-
-/**@brief Get GAP Appearance value.
- *
- * @param[out] p_appearance Appearance (16-bit), see @ref BLE_APPEARANCES.
- *
- * @return @ref NRF_SUCCESS Appearance value retrieved successfully.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- */
-SVCALL(SD_BLE_GAP_APPEARANCE_GET, uint32_t, sd_ble_gap_appearance_get(uint16_t * const p_appearance));
-
-
-/**@brief Set GAP Peripheral Preferred Connection Parameters.
- *
- * @param[in] p_conn_params Pointer to a @ref ble_gap_conn_params_t structure with the desired parameters.
- *
- * @return @ref NRF_SUCCESS Peripheral Preferred Connection Parameters set successfully.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
- */
-SVCALL(SD_BLE_GAP_PPCP_SET, uint32_t, sd_ble_gap_ppcp_set(ble_gap_conn_params_t const * const p_conn_params));
-
-
-/**@brief Get GAP Peripheral Preferred Connection Parameters.
- *
- * @param[out] p_conn_params Pointer to a @ref ble_gap_conn_params_t structure where the parameters will be stored.
- *
- * @return @ref NRF_SUCCESS Peripheral Preferred Connection Parameters retrieved successfully.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- */
-SVCALL(SD_BLE_GAP_PPCP_GET, uint32_t, sd_ble_gap_ppcp_get(ble_gap_conn_params_t * const p_conn_params));
-
-
-/**@brief Set GAP device name.
- *
- * @param[in] p_write_perm Write permissions for the Device Name characteristic see @ref ble_gap_conn_sec_mode_t.
- * @param[in] p_dev_name Pointer to a UTF-8 encoded, <b>non NULL-terminated</b> string.
- * @param[in] len   Length of the UTF-8, <b>non NULL-terminated</b> string pointed to by p_dev_name in octets (must be smaller or equal than @ref BLE_GAP_DEVNAME_MAX_LEN).
- *
- * @return @ref NRF_SUCCESS GAP device name and permissions set successfully.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
- * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied.
- */
-SVCALL(SD_BLE_GAP_DEVICE_NAME_SET, uint32_t, sd_ble_gap_device_name_set(ble_gap_conn_sec_mode_t const * const p_write_perm, uint8_t const * const p_dev_name, uint16_t len));
-
-
-/**@brief Get GAP device name.
- *
- * @param[in]     p_dev_name Pointer to an empty buffer where the UTF-8 <b>non NULL-terminated</b> string will be placed. Set to NULL to obtain the complete device name length.
- * @param[in,out] p_len      Length of the buffer pointed by p_dev_name, complete device name length on output.
- *
- * @note          If the device name is longer than the size of the supplied buffer,
- *                p_len will return the complete device name length,
- *                and not the number of bytes actually returned in p_dev_name.
- *                The application may use this information to allocate a suitable buffer size.
- *
- * @return @ref NRF_SUCCESS GAP device name retrieved successfully.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied.
- */
-SVCALL(SD_BLE_GAP_DEVICE_NAME_GET, uint32_t, sd_ble_gap_device_name_get(uint8_t * const p_dev_name, uint16_t * const p_len));
-
-
-/**@brief Initiate GAP Authentication procedure.
- *
- * @param[in] conn_handle Connection handle.
- * @param[in] p_sec_params Pointer to the @ref ble_gap_sec_params_t structure with the security parameters to be used during the pairing procedure.
- *
- * @details In the central role, this function will send an SMP Pairing Request, otherwise in the peripheral role, an SMP Security Request will be sent.
- *          In the peripheral role, only the timeout, bond and mitm fields of @ref ble_gap_sec_params_t are used.
- *
- * @note    The GAP Authentication procedure may be triggered by the central without calling this function when accessing a secure service.
- * @note    Calling this function may result in the following events depending on the outcome and parameters: @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST,
- *          @ref BLE_GAP_EVT_SEC_INFO_REQUEST, @ref BLE_GAP_EVT_AUTH_KEY_REQUEST, @ref BLE_GAP_EVT_AUTH_STATUS.
- * @note    The timeout parameter in @ref ble_gap_sec_params_t is interpreted here as the Security Request timeout
- *
- *
- * @return @ref NRF_SUCCESS Successfully initiated authentication procedure.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
- * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied.
- */
-SVCALL(SD_BLE_GAP_AUTHENTICATE, uint32_t, sd_ble_gap_authenticate(uint16_t conn_handle, ble_gap_sec_params_t const * const p_sec_params));
-
-
-/**@brief Reply with GAP security parameters.
- *
- * @param[in] conn_handle Connection handle.
- * @param[in] sec_status Security status, see @ref BLE_GAP_SEC_STATUS.
- * @param[in] p_sec_params Pointer to a @ref ble_gap_sec_params_t security parameters structure.
- *
- * @details This function is only used to reply to a @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST, calling it at other times will result in an NRF_ERROR_INVALID_STATE.
- * @note    If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters.
- * @note    The timeout parameter in @ref ble_gap_sec_params_t is interpreted here as the SMP procedure timeout, and must be 30 seconds. The function will fail
- *          if the application supplies a different value.
- *
- * @return @ref NRF_SUCCESS Successfully accepted security parameter from the application.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
- * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied.
- */
-SVCALL(SD_BLE_GAP_SEC_PARAMS_REPLY, uint32_t, sd_ble_gap_sec_params_reply(uint16_t conn_handle, uint8_t sec_status, ble_gap_sec_params_t const * const p_sec_params));
-
-
-/**@brief Reply with an authentication key.
- *
- * @param[in] conn_handle Connection handle.
- * @param[in] key_type See @ref BLE_GAP_AUTH_KEY_TYPES.
- * @param[in] key If key type is BLE_GAP_AUTH_KEY_TYPE_NONE, then NULL.
- *                If key type is BLE_GAP_AUTH_KEY_TYPE_PASSKEY, then a 6-byte ASCII string (digit 0..9 only, no NULL termination).
- *                If key type is BLE_GAP_AUTH_KEY_TYPE_OOB, then a 16-byte OOB key value in Little Endian format.
- *
- * @details This function is only used to reply to a @ref BLE_GAP_EVT_AUTH_KEY_REQUEST, calling it at other times will result in an NRF_ERROR_INVALID_STATE.
- * @note    If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters.
- *
- * @return @ref NRF_SUCCESS Authentication key successfully set.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
- * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied.
- */
-SVCALL(SD_BLE_GAP_AUTH_KEY_REPLY, uint32_t, sd_ble_gap_auth_key_reply(uint16_t conn_handle, uint8_t key_type, uint8_t const * const key));
-
-
-/**@brief Reply with GAP security information.
- *
- * @param[in] conn_handle Connection handle.
- * @param[in] p_enc_info Pointer to a @ref ble_gap_enc_info_t encryption information structure. May be NULL to signal none is available.
- * @param[in] p_sign_info Pointer to a @ref ble_gap_sign_info_t signing information structure. May be NULL to signal none is available.
- *
- * @details This function is only used to reply to a @ref BLE_GAP_EVT_SEC_INFO_REQUEST, calling it at other times will result in NRF_ERROR_INVALID_STATE.
- * @note    If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters.
- * @note    Data signing is not implemented yet. p_sign_info must therefore be NULL.
- *
- * @return @ref NRF_SUCCESS Successfully accepted security information.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
- * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied.
- * @return @ref NRF_ERROR_BUSY The stack is busy, process pending events and retry.
- */
-SVCALL(SD_BLE_GAP_SEC_INFO_REPLY, uint32_t, sd_ble_gap_sec_info_reply(uint16_t conn_handle, ble_gap_enc_info_t const * const p_enc_info, ble_gap_sign_info_t const * const p_sign_info));
-
-
-/**@brief Get the current connection security.
- *
- * @param[in]  conn_handle Connection handle.
- * @param[out] p_conn_sec  Pointer to a @ref ble_gap_conn_sec_t structure to be filled in.
- *
- * @return @ref NRF_SUCCESS Current connection security successfully retrieved.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied.
- */
-SVCALL(SD_BLE_GAP_CONN_SEC_GET, uint32_t, sd_ble_gap_conn_sec_get(uint16_t conn_handle, ble_gap_conn_sec_t * const p_conn_sec));
-
-
-/**@brief Start reporting the received signal strength to the application. 
- *
- * A new event is reported whenever the RSSI value changes, until @ref sd_ble_gap_rssi_stop is called.
- *
- * @param[in] conn_handle Connection handle.
- *
- * @return @ref NRF_SUCCESS Successfully activated RSSI reporting.
- * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied.
- */
-SVCALL(SD_BLE_GAP_RSSI_START, uint32_t, sd_ble_gap_rssi_start(uint16_t conn_handle));
-
-
-/**@brief Stop reporting the received singnal strength. 
- *
- * An RSSI change detected before the call but not yet received by the application 
- * may be reported after @ref sd_ble_gap_rssi_stop has been called.
- *
- * @param[in] conn_handle Connection handle.
- *
- * @return @ref NRF_SUCCESS Successfully deactivated RSSI reporting.
- * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied.
- */
-SVCALL(SD_BLE_GAP_RSSI_STOP, uint32_t, sd_ble_gap_rssi_stop(uint16_t conn_handle));
-/**@} */
-
-#endif // BLE_GAP_H__
-
-/**
-  @}
-*/
--- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/ble_gatt.h	Fri Oct 17 14:00:07 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,171 +0,0 @@
-/* Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved.
- *
- * The information contained herein is confidential property of Nordic Semiconductor. The use,
- * copying, transfer or disclosure of such information is prohibited except by express written
- * agreement with Nordic Semiconductor.
- *
- */
- /**
-  @addtogroup BLE_GATT Generic Attribute Profile (GATT) Common
-  @{
-  @brief  Common definitions and prototypes for the GATT interfaces.
- */
-
-#ifndef BLE_GATT_H__
-#define BLE_GATT_H__
-
-#include "ble_types.h"
-#include "ble_ranges.h"
-
-
-/** @addtogroup BLE_GATT_DEFINES Defines
- * @{ */
-
-/** @brief Default MTU size. */
-#define GATT_MTU_SIZE_DEFAULT 23
-
-/** @brief Only the default MTU size of 23 is currently supported. */
-#define GATT_RX_MTU 23
-
-
-/**@brief Invalid Attribute Handle. */
-#define BLE_GATT_HANDLE_INVALID            0x0000
-
-/** @defgroup BLE_GATT_TIMEOUT_SOURCES GATT Timeout sources
- * @{ */
-#define BLE_GATT_TIMEOUT_SRC_PROTOCOL                  0x00 /**< ATT Protocol timeout. */
-/** @} */
-
-/** @defgroup BLE_GATT_WRITE_OPS GATT Write operations
- * @{ */
-#define BLE_GATT_OP_INVALID                0x00  /**< Invalid Operation. */
-#define BLE_GATT_OP_WRITE_REQ              0x01  /**< Write Request. */
-#define BLE_GATT_OP_WRITE_CMD              0x02  /**< Write Command. */
-#define BLE_GATT_OP_SIGN_WRITE_CMD         0x03  /**< Signed Write Command. */
-#define BLE_GATT_OP_PREP_WRITE_REQ         0x04  /**< Prepare Write Request. */
-#define BLE_GATT_OP_EXEC_WRITE_REQ         0x05  /**< Execute Write Request. */
-/** @} */
-
-/** @defgroup BLE_GATT_EXEC_WRITE_FLAGS GATT Execute Write flags
- * @{ */
-#define BLE_GATT_EXEC_WRITE_FLAG_PREPARED_CANCEL 0x00
-#define BLE_GATT_EXEC_WRITE_FLAG_PREPARED_WRITE  0x01
-/** @} */
-
-/** @defgroup BLE_GATT_HVX_TYPES GATT Handle Value operations
- * @{ */
-#define BLE_GATT_HVX_INVALID               0x00  /**< Invalid Operation. */
-#define BLE_GATT_HVX_NOTIFICATION          0x01  /**< Handle Value Notification. */
-#define BLE_GATT_HVX_INDICATION            0x02  /**< Handle Value Indication. */
-/** @} */
-
-/** @defgroup BLE_GATT_STATUS_CODES GATT Status Codes
- * @{ */
-#define BLE_GATT_STATUS_SUCCESS                           0x0000  /**< Success. */
-#define BLE_GATT_STATUS_UNKNOWN                           0x0001  /**< Unknown or not applicable status. */
-#define BLE_GATT_STATUS_ATTERR_INVALID                    0x0100  /**< ATT Error: Invalid Error Code. */
-#define BLE_GATT_STATUS_ATTERR_INVALID_HANDLE             0x0101  /**< ATT Error: Invalid Attribute Handle. */
-#define BLE_GATT_STATUS_ATTERR_READ_NOT_PERMITTED         0x0102  /**< ATT Error: Read not permitted. */
-#define BLE_GATT_STATUS_ATTERR_WRITE_NOT_PERMITTED        0x0103  /**< ATT Error: Write not permitted. */
-#define BLE_GATT_STATUS_ATTERR_INVALID_PDU                0x0104  /**< ATT Error: Used in ATT as Invalid PDU. */
-#define BLE_GATT_STATUS_ATTERR_INSUF_AUTHENTICATION       0x0105  /**< ATT Error: Authenticated link required. */
-#define BLE_GATT_STATUS_ATTERR_REQUEST_NOT_SUPPORTED      0x0106  /**< ATT Error: Used in ATT as Request Not Supported. */
-#define BLE_GATT_STATUS_ATTERR_INVALID_OFFSET             0x0107  /**< ATT Error: Offset specified was past the end of the attribute. */
-#define BLE_GATT_STATUS_ATTERR_INSUF_AUTHORIZATION        0x0108  /**< ATT Error: Used in ATT as Insufficient Authorisation. */
-#define BLE_GATT_STATUS_ATTERR_PREPARE_QUEUE_FULL         0x0109  /**< ATT Error: Used in ATT as Prepare Queue Full. */
-#define BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_FOUND        0x010A  /**< ATT Error: Used in ATT as Attribute not found. */
-#define BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_LONG         0x010B  /**< ATT Error: Attribute cannot be read or written using read/write blob requests. */
-#define BLE_GATT_STATUS_ATTERR_INSUF_ENC_KEY_SIZE         0x010C  /**< ATT Error: Encryption key size used is insufficient. */
-#define BLE_GATT_STATUS_ATTERR_INVALID_ATT_VAL_LENGTH     0x010D  /**< ATT Error: Invalid value size. */
-#define BLE_GATT_STATUS_ATTERR_UNLIKELY_ERROR             0x010E  /**< ATT Error: Very unlikely error. */
-#define BLE_GATT_STATUS_ATTERR_INSUF_ENCRYPTION           0x010F  /**< ATT Error: Encrypted link required. */
-#define BLE_GATT_STATUS_ATTERR_UNSUPPORTED_GROUP_TYPE     0x0110  /**< ATT Error: Attribute type is not a supported grouping attribute. */
-#define BLE_GATT_STATUS_ATTERR_INSUF_RESOURCES            0x0111  /**< ATT Error: Encrypted link required. */
-#define BLE_GATT_STATUS_ATTERR_RFU_RANGE1_BEGIN           0x0112  /**< ATT Error: Reserved for Future Use range #1 begin. */
-#define BLE_GATT_STATUS_ATTERR_RFU_RANGE1_END             0x017F  /**< ATT Error: Reserved for Future Use range #1 end. */
-#define BLE_GATT_STATUS_ATTERR_APP_BEGIN                  0x0180  /**< ATT Error: Application range begin. */
-#define BLE_GATT_STATUS_ATTERR_APP_END                    0x019F  /**< ATT Error: Application range end. */
-#define BLE_GATT_STATUS_ATTERR_RFU_RANGE2_BEGIN           0x01A0  /**< ATT Error: Reserved for Future Use range #2 begin. */
-#define BLE_GATT_STATUS_ATTERR_RFU_RANGE2_END             0x01DF  /**< ATT Error: Reserved for Future Use range #2 end. */
-#define BLE_GATT_STATUS_ATTERR_RFU_RANGE3_BEGIN           0x01E0  /**< ATT Error: Reserved for Future Use range #3 begin. */
-#define BLE_GATT_STATUS_ATTERR_RFU_RANGE3_END             0x01FC  /**< ATT Error: Reserved for Future Use range #3 end. */
-#define BLE_GATT_STATUS_ATTERR_CPS_CCCD_CONFIG_ERROR      0x01FD  /**< ATT Common Profile and Service Error: Client Characteristic Configuration Descriptor improperly configured. */
-#define BLE_GATT_STATUS_ATTERR_CPS_PROC_ALR_IN_PROG       0x01FE  /**< ATT Common Profile and Service Error: Procedure Already in Progress. */
-#define BLE_GATT_STATUS_ATTERR_CPS_OUT_OF_RANGE           0x01FF  /**< ATT Common Profile and Service Error: Out Of Range. */
-/** @} */
-
-
-/** @defgroup BLE_GATT_CPF_FORMATS Characteristic Presentation Formats
- *  @note Found at http://developer.bluetooth.org/gatt/descriptors/Pages/DescriptorViewer.aspx?u=org.bluetooth.descriptor.gatt.characteristic_presentation_format.xml
- * @{ */
-#define BLE_GATT_CPF_FORMAT_RFU                 0x00 /**< Reserved For Future Use. */
-#define BLE_GATT_CPF_FORMAT_BOOLEAN             0x01 /**< Boolean. */
-#define BLE_GATT_CPF_FORMAT_2BIT                0x02 /**< Unsigned 2-bit integer. */
-#define BLE_GATT_CPF_FORMAT_NIBBLE              0x03 /**< Unsigned 4-bit integer. */
-#define BLE_GATT_CPF_FORMAT_UINT8               0x04 /**< Unsigned 8-bit integer. */
-#define BLE_GATT_CPF_FORMAT_UINT12              0x05 /**< Unsigned 12-bit integer. */
-#define BLE_GATT_CPF_FORMAT_UINT16              0x06 /**< Unsigned 16-bit integer. */
-#define BLE_GATT_CPF_FORMAT_UINT24              0x07 /**< Unsigned 24-bit integer. */
-#define BLE_GATT_CPF_FORMAT_UINT32              0x08 /**< Unsigned 32-bit integer. */
-#define BLE_GATT_CPF_FORMAT_UINT48              0x09 /**< Unsigned 48-bit integer. */
-#define BLE_GATT_CPF_FORMAT_UINT64              0x0A /**< Unsigned 64-bit integer. */
-#define BLE_GATT_CPF_FORMAT_UINT128             0x0B /**< Unsigned 128-bit integer. */
-#define BLE_GATT_CPF_FORMAT_SINT8               0x0C /**< Signed 2-bit integer. */
-#define BLE_GATT_CPF_FORMAT_SINT12              0x0D /**< Signed 12-bit integer. */
-#define BLE_GATT_CPF_FORMAT_SINT16              0x0E /**< Signed 16-bit integer. */
-#define BLE_GATT_CPF_FORMAT_SINT24              0x0F /**< Signed 24-bit integer. */
-#define BLE_GATT_CPF_FORMAT_SINT32              0x10 /**< Signed 32-bit integer. */
-#define BLE_GATT_CPF_FORMAT_SINT48              0x11 /**< Signed 48-bit integer. */
-#define BLE_GATT_CPF_FORMAT_SINT64              0x12 /**< Signed 64-bit integer. */
-#define BLE_GATT_CPF_FORMAT_SINT128             0x13 /**< Signed 128-bit integer. */
-#define BLE_GATT_CPF_FORMAT_FLOAT32             0x14 /**< IEEE-754 32-bit floating point. */
-#define BLE_GATT_CPF_FORMAT_FLOAT64             0x15 /**< IEEE-754 64-bit floating point. */
-#define BLE_GATT_CPF_FORMAT_SFLOAT              0x16 /**< IEEE-11073 16-bit SFLOAT. */
-#define BLE_GATT_CPF_FORMAT_FLOAT               0x17 /**< IEEE-11073 32-bit FLOAT. */
-#define BLE_GATT_CPF_FORMAT_DUINT16             0x18 /**< IEEE-20601 format. */
-#define BLE_GATT_CPF_FORMAT_UTF8S               0x19 /**< UTF-8 string. */
-#define BLE_GATT_CPF_FORMAT_UTF16S              0x1A /**< UTF-16 string. */
-#define BLE_GATT_CPF_FORMAT_STRUCT              0x1B /**< Opaque Structure. */
-/** @} */
-
-/** @defgroup BLE_GATT_CPF_NAMESPACES GATT Bluetooth Namespaces
- * @{
- */
-#define BLE_GATT_CPF_NAMESPACE_BTSIG            0x01
-#define BLE_GATT_CPF_NAMESPACE_DESCRIPTION_UNKNOWN 0x0000
-/** @} */
-
-/** @} */
-
-/** @addtogroup BLE_GATT_STRUCTURES Structures
- * @{ */
-
-/**@brief GATT Characteristic Properties. */
-typedef struct
-{
-  /* Standard properties */
-  uint8_t broadcast       :1; /**< Broadcasting of value permitted. */
-  uint8_t read            :1; /**< Reading value permitted. */
-  uint8_t write_wo_resp   :1; /**< Writing value with Write Command permitted. */
-  uint8_t write           :1; /**< Writing value with Write Request permitted. */
-  uint8_t notify          :1; /**< Notications of value permitted. */
-  uint8_t indicate        :1; /**< Indications of value permitted. */
-  uint8_t auth_signed_wr  :1; /**< Writing value with Signed Write Command permitted. */
-} ble_gatt_char_props_t;
-
-/**@brief GATT Characteristic Extended Properties. */
-typedef struct
-{
-  /* Extended properties */
-  uint8_t reliable_wr     :1; /**< Writing value with Queued Write Request permitted. */
-  uint8_t wr_aux          :1; /**< Writing the Characteristic User Description permitted. */
-} ble_gatt_char_ext_props_t;
-
-#endif // BLE_GATT_H__
-
-/** @} */
-
-/**
-  @}
-  @}
-*/
--- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/ble_gattc.h	Fri Oct 17 14:00:07 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,406 +0,0 @@
-/* Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved.
- *
- * The information contained herein is confidential property of Nordic Semiconductor. The use,
- * copying, transfer or disclosure of such information is prohibited except by express written
- * agreement with Nordic Semiconductor.
- *
- */
-/**
-  @addtogroup BLE_GATTC Generic Attribute Profile (GATT) Client
-  @{
-  @brief  Definitions and prototypes for the GATT Client interface.
- */
-
-#ifndef BLE_GATTC_H__
-#define BLE_GATTC_H__
-
-#include "ble_gatt.h"
-#include "ble_types.h"
-#include "ble_ranges.h"
-#include "nrf_svc.h"
-
-/** @addtogroup BLE_GATTC_ENUMERATIONS Enumerations
- * @{ */
-
-/**@brief GATTC API SVC numbers. */
-enum BLE_GATTC_SVCS
-{
-  SD_BLE_GATTC_PRIMARY_SERVICES_DISCOVER = BLE_GATTC_SVC_BASE, /**< Primary Service Discovery. */
-  SD_BLE_GATTC_RELATIONSHIPS_DISCOVER,                         /**< Relationship Discovery. */
-  SD_BLE_GATTC_CHARACTERISTICS_DISCOVER,                       /**< Characteristic Discovery. */
-  SD_BLE_GATTC_DESCRIPTORS_DISCOVER,                           /**< Characteristic Descriptor Discovery. */
-  SD_BLE_GATTC_CHAR_VALUE_BY_UUID_READ,                        /**< Read Characteristic Value by UUID. */
-  SD_BLE_GATTC_READ,                                           /**< Generic read. */
-  SD_BLE_GATTC_CHAR_VALUES_READ,                               /**< Read multiple Characteristic Values. */
-  SD_BLE_GATTC_WRITE,                                          /**< Generic write. */
-  SD_BLE_GATTC_HV_CONFIRM                                      /**< Handle Value Confirmation. */
-};
-
-/** @} */
-
-/** @addtogroup BLE_GATTC_DEFINES Defines
- * @{ */
-
-/** @defgroup BLE_ERRORS_GATTC SVC return values specific to GATTC
- * @{ */
-#define BLE_ERROR_GATTC_PROC_NOT_PERMITTED    (NRF_GATTC_ERR_BASE + 0x000)
-/** @} */
-
-/**@brief Last Attribute Handle. */
-#define BLE_GATTC_HANDLE_END                0xFFFF
-
-/** @} */
-
-/** @addtogroup BLE_GATTC_STRUCTURES Structures
- * @{ */
-
-/**@brief Operation Handle Range. */
-typedef struct
-{
-  uint16_t          start_handle; /**< Start Handle. */
-  uint16_t          end_handle;   /**< End Handle. */
-} ble_gattc_handle_range_t;
-
-
-/**@brief GATT service. */
-typedef struct
-{
-  ble_uuid_t               uuid;          /**< Service UUID. */
-  ble_gattc_handle_range_t handle_range;  /**< Service Handle Range. */
-} ble_gattc_service_t;
-
-
-/**@brief  GATT include. */
-typedef struct
-{
-  uint16_t            handle;           /**< Include Handle. */
-  ble_gattc_service_t included_srvc;    /**< Handle of the included service. */
-} ble_gattc_include_t;
-
-
-/**@brief GATT characteristic. */
-typedef struct
-{
-  ble_uuid_t              uuid;                 /**< Characteristic UUID. */
-  ble_gatt_char_props_t   char_props;           /**< Characteristic Properties. */
-  uint8_t                 char_ext_props : 1;   /**< Extended properties present. */
-  uint16_t                handle_decl;          /**< Handle of the Characteristic Declaration. */
-  uint16_t                handle_value;         /**< Handle of the Characteristic Value. */
-} ble_gattc_char_t;
-
-
-/**@brief GATT descriptor. */
-typedef struct
-{
-  uint16_t          handle;         /**< Descriptor Handle. */
-  ble_uuid_t        uuid;           /**< Descriptor UUID. */
-} ble_gattc_desc_t;
-
-
-/**@brief Write Parameters. */
-typedef struct
-{
-  uint8_t    write_op;                 /**< Write Operation to be performed, see @ref BLE_GATT_WRITE_OPS. */
-  uint16_t   handle;                   /**< Handle to the attribute to be written. */
-  uint16_t   offset;                   /**< Offset in bytes. @note For WRITE_CMD and WRITE_REQ, offset must be 0. */
-  uint16_t   len;                      /**< Length of data in bytes. */
-  uint8_t*   p_value;                  /**< Pointer to the value data. */
-  uint8_t    flags;                    /**< Flags, see @ref BLE_GATT_EXEC_WRITE_FLAGS. */
-} ble_gattc_write_params_t;
-
-
-/**
- * @brief GATT Client Event IDs.
- */
-enum BLE_GATTC_EVTS
-{
-  BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP = BLE_GATTC_EVT_BASE,  /**< Primary Service Discovery Response event.  */
-  BLE_GATTC_EVT_REL_DISC_RSP,                             /**< Relationship Discovery Response event. */
-  BLE_GATTC_EVT_CHAR_DISC_RSP,                            /**< Characteristic Discovery Response event. */
-  BLE_GATTC_EVT_DESC_DISC_RSP,                            /**< Descriptor Discovery Response event. */
-  BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP,                /**< Read By UUID Response event. */
-  BLE_GATTC_EVT_READ_RSP,                                 /**< Read Response event. */
-  BLE_GATTC_EVT_CHAR_VALS_READ_RSP,                       /**< Read multiple Response event. */
-  BLE_GATTC_EVT_WRITE_RSP,                                /**< Write Response event. */
-  BLE_GATTC_EVT_HVX,                                      /**< Handle Value Notification or Indication event. */
-  BLE_GATTC_EVT_TIMEOUT                                   /**< Timeout event. */
-};
-
-/**@brief Event structure for BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP. */
-typedef struct
-{
-  uint16_t             count;           /**< Service count. */
-  ble_gattc_service_t services[1];      /**< Service data, variable length. */
-} ble_gattc_evt_prim_srvc_disc_rsp_t;
-
-/**@brief Event structure for BLE_GATTC_EVT_REL_DISC_RSP. */
-typedef struct
-{
-  uint16_t             count;           /**< Include count. */
-  ble_gattc_include_t includes[1];      /**< Include data, variable length. */
-} ble_gattc_evt_rel_disc_rsp_t;
-
-/**@brief Event structure for BLE_GATTC_EVT_CHAR_DISC_RSP. */
-typedef struct
-{
-  uint16_t            count;          /**< Characteristic count. */
-  ble_gattc_char_t    chars[1];       /**< Characteristic data, variable length. */
-} ble_gattc_evt_char_disc_rsp_t;
-
-/**@brief Event structure for BLE_GATTC_EVT_DESC_DISC_RSP. */
-typedef struct
-{
-  uint16_t            count;          /**< Descriptor count. */
-  ble_gattc_desc_t    descs[1];       /**< Descriptor data, variable length. */
-} ble_gattc_evt_desc_disc_rsp_t;
-
-/**@brief GATT read by UUID handle value pair. */
-typedef struct 
-{
-  uint16_t            handle;          /**< Attribute Handle. */
-  uint8_t             *p_value;        /**< Pointer to value, variable length (length available as value_len in ble_gattc_evt_read_by_uuid_rsp_t). 
-                                            Please note that this pointer is absolute to the memory provided by the user when retrieving the event,
-                                            so it will effectively point to a location inside the handle_value array. */
-} ble_gattc_handle_value_t;
-
-/**@brief Event structure for BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP. */
-typedef struct
-{
-  uint16_t                  count;            /**< Handle-Value Pair Count. */
-  uint16_t                  value_len;        /**< Length of the value in Handle-Value(s) list. */
-  ble_gattc_handle_value_t  handle_value[1];  /**< Handle-Value(s) list, variable length. */
-} ble_gattc_evt_char_val_by_uuid_read_rsp_t;
-
-/**@brief Event structure for BLE_GATTC_EVT_READ_RSP. */
-typedef struct
-{
-  uint16_t            handle;         /**< Attribute Handle. */
-  uint16_t            offset;         /**< Offset of the attribute data. */
-  uint16_t            len;            /**< Attribute data length. */
-  uint8_t             data[1];        /**< Attribute data, variable length. */
-} ble_gattc_evt_read_rsp_t;
-
-/**@brief Event structure for BLE_GATTC_EVT_CHAR_VALS_READ_RSP. */
-typedef struct
-{
-  uint16_t            len;            /**< Concatenated Attribute values length. */
-  uint8_t             values[1];      /**< Attribute values, variable length. */
-} ble_gattc_evt_char_vals_read_rsp_t;
-
-/**@brief Event structure for BLE_GATTC_EVT_WRITE_RSP. */
-typedef struct
-{
-  uint16_t            handle;           /**< Attribute Handle. */
-  uint8_t             write_op;         /**< Type of write operation, see @ref BLE_GATT_WRITE_OPS. */
-  uint16_t            offset;           /**< Data Offset. */
-  uint16_t            len;              /**< Data length. */
-  uint8_t             data[1];          /**< Data, variable length. */
-} ble_gattc_evt_write_rsp_t;
-
-/**@brief Event structure for BLE_GATTC_EVT_HVX. */
-typedef struct
-{
-  uint16_t            handle;         /**< Handle to which the HVx operation applies. */
-  uint8_t             type;           /**< Indication or Notification, see @ref BLE_GATT_HVX_TYPES. */
-  uint16_t            len;            /**< Attribute data length. */
-  uint8_t             data[1];        /**< Attribute data, variable length. */
-} ble_gattc_evt_hvx_t;
-
-/**@brief Event structure for BLE_GATTC_EVT_TIMEOUT. */
-typedef struct
-{
-  uint8_t          src;                       /**< Timeout source, see @ref BLE_GATT_TIMEOUT_SOURCES. */
-} ble_gattc_evt_timeout_t;
-
-/**@brief GATTC event type. */
-typedef struct
-{
-  uint16_t            conn_handle;                /**< Connection Handle on which event occured. */
-  uint16_t            gatt_status;                /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */
-  uint16_t            error_handle;               /**< In case of error: The handle causing the error. In all other cases BLE_GATT_HANDLE_INVALID. */
-  union
-  {
-    ble_gattc_evt_prim_srvc_disc_rsp_t          prim_srvc_disc_rsp;         /**< Primary Service Discovery Response Event Parameters. */
-    ble_gattc_evt_rel_disc_rsp_t                rel_disc_rsp;               /**< Relationship Discovery Response Event Parameters. */
-    ble_gattc_evt_char_disc_rsp_t               char_disc_rsp;              /**< Characteristic Discovery Response Event Parameters. */
-    ble_gattc_evt_desc_disc_rsp_t               desc_disc_rsp;              /**< Descriptor Discovery Response Event Parameters. */
-    ble_gattc_evt_char_val_by_uuid_read_rsp_t   char_val_by_uuid_read_rsp;  /**< Characteristic Value Read by UUID Response Event Parameters. */
-    ble_gattc_evt_read_rsp_t                    read_rsp;                   /**< Read Response Event Parameters. */
-    ble_gattc_evt_char_vals_read_rsp_t          char_vals_read_rsp;         /**< Characteristic Values Read Response Event Parameters. */
-    ble_gattc_evt_write_rsp_t                   write_rsp;                  /**< Write Response Event Parameters. */
-    ble_gattc_evt_hvx_t                         hvx;                        /**< Handle Value Notification/Indication Event Parameters. */
-    ble_gattc_evt_timeout_t                     timeout;                    /**< Timeout Event Parameters. */
-  } params;                                                                 /**< Event Parameters. @note Only valid if @ref gatt_status == BLE_GATT_STATUS_SUCCESS. */
-} ble_gattc_evt_t;
-/** @} */
-
-/** @addtogroup BLE_GATTC_FUNCTIONS Functions
- * @{ */
-
-/**@brief Initiate or continue a GATT Primary Service Discovery procedure.
- *
- * @details This function initiates a Primary Service discovery, starting from the supplied handle. 
- *          If the last service has not been reached, this must be called again with an updated start handle value to continue the search.
- *
- * @note If any of the discovered services have 128-bit UUIDs which are not present in the table provided to ble_vs_uuids_assign, a UUID structure with
- *       type BLE_UUID_TYPE_UNKNOWN will be received in the corresponding event.
- *
- * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on.
- * @param[in] start_handle Handle to start searching from.
- * @param[in] p_srvc_uuid Pointer to the service UUID to be found. If it is NULL, all primary services will be returned.
- *
- * @return @ref NRF_SUCCESS Successfully started or resumed the Primary Service Discovery procedure.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
- * @return @ref NRF_ERROR_BUSY Client procedure already in progress.
- */
-SVCALL(SD_BLE_GATTC_PRIMARY_SERVICES_DISCOVER, uint32_t, sd_ble_gattc_primary_services_discover(uint16_t conn_handle, uint16_t start_handle, ble_uuid_t const * const p_srvc_uuid));
-
-
-/**@brief Initiate or continue a GATT Relationship Discovery procedure.
- *
- * @details This function initiates the Find Included Services sub-procedure. If the last included service has not been reached,
- *          this must be called again with an updated handle range to continue the search.
- *
- * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on.
- * @param[in] p_handle_range A pointer to the range of handles of the Service to perform this procedure on.
- *
- * @return @ref NRF_SUCCESS Successfully started or resumed the Relationship Discovery procedure.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
- * @return @ref NRF_ERROR_BUSY Client procedure already in progress.
- */
-SVCALL(SD_BLE_GATTC_RELATIONSHIPS_DISCOVER, uint32_t, sd_ble_gattc_relationships_discover(uint16_t conn_handle, ble_gattc_handle_range_t const * const p_handle_range));
-
-
-/**@brief Initiate or continue a GATT Characteristic Discovery procedure.
- *
- * @details This function initiates a Characteristic discovery procedure. If the last Characteristic has not been reached,
- *          this must be called again with an updated handle range to continue the discovery.
- *
- * @note If any of the discovered characteristics have 128-bit UUIDs which are not present in the table provided to ble_vs_uuids_assign, a UUID structure with
- *       type BLE_UUID_TYPE_UNKNOWN will be received in the corresponding event.
- *
- * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on.
- * @param[in] p_handle_range A pointer to the range of handles of the Service to perform this procedure on.
- *
- * @return @ref NRF_SUCCESS Successfully started or resumed the Characteristic Discovery procedure.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_BUSY Client procedure already in progress.
- */
-SVCALL(SD_BLE_GATTC_CHARACTERISTICS_DISCOVER, uint32_t, sd_ble_gattc_characteristics_discover(uint16_t conn_handle, ble_gattc_handle_range_t const * const p_handle_range));
-
-
-/**@brief Initiate or continue a GATT Characteristic Descriptor Discovery procedure.
- *
- * @details This function initiates the Characteristic Descriptor discovery procedure. If the last Descriptor has not been reached,
- *          this must be called again with an updated handle range to continue the discovery.
- *
- * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on.
- * @param[in] p_handle_range A pointer to the range of handles of the Characteristic to perform this procedure on.
- *
- * @return @ref NRF_SUCCESS Successfully started or resumed the Descriptor Discovery procedure.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_BUSY Client procedure already in progress.
- */
-SVCALL(SD_BLE_GATTC_DESCRIPTORS_DISCOVER, uint32_t, sd_ble_gattc_descriptors_discover(uint16_t conn_handle, ble_gattc_handle_range_t const * const p_handle_range));
-
-
-/**@brief Initiate or continue a GATT Read using Characteristic UUID procedure.
- *
- * @details This function initiates the Read using Characteristic UUID procedure. If the last Characteristic has not been reached,
- *          this must be called again with an updated handle range to continue the discovery.
- *
- * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on.
- * @param[in] p_uuid Pointer to a Characteristic value UUID to read.
- * @param[in] p_handle_range A pointer to the range of handles to perform this procedure on.
- *
- * @return @ref NRF_SUCCESS Successfully started or resumed the Read using Characteristic UUID procedure.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_BUSY Client procedure already in progress.
- */
-SVCALL(SD_BLE_GATTC_CHAR_VALUE_BY_UUID_READ, uint32_t, sd_ble_gattc_char_value_by_uuid_read(uint16_t conn_handle, ble_uuid_t const * const p_uuid, ble_gattc_handle_range_t const * const p_handle_range));
-
-
-/**@brief Initiate or continue a GATT Read (Long) Characteristic or Descriptor procedure.
- *
- * @details This function initiates a GATT Read (Long) Characteristic or Descriptor procedure. If the Characteristic or Descriptor
- *          to be read is longer than GATT_MTU - 1, this function must be called multiple times with appropriate offset to read the 
- *          complete value.
- *
- * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on.
- * @param[in] handle The handle of the attribute to be read.
- * @param[in] offset Offset into the attribute value to be read.
- *
- * @return @ref NRF_SUCCESS Successfully started or resumed the Read (Long) procedure.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_BUSY Client procedure already in progress.
- */
-SVCALL(SD_BLE_GATTC_READ, uint32_t, sd_ble_gattc_read(uint16_t conn_handle, uint16_t handle, uint16_t offset));
-
-
-/**@brief Initiate a GATT Read Multiple Characteristic Values procedure.
- *
- * @details This function initiates a GATT Read Multiple Characteristic Values procedure. 
- *
- * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on.
- * @param[in] p_handles A pointer to the handle(s) of the attribute(s) to be read.
- * @param[in] handle_count The number of handles in p_handles.
- *
- * @return @ref NRF_SUCCESS Successfully started the Read Multiple Characteristic Values procedure.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_BUSY Client procedure already in progress.
- */
-SVCALL(SD_BLE_GATTC_CHAR_VALUES_READ, uint32_t, sd_ble_gattc_char_values_read(uint16_t conn_handle, uint16_t const * const p_handles, uint16_t handle_count));
-
-
-/**@brief Perform a Write (Characteristic Value or Descriptor, with or without response, signed or not, long or reliable) procedure.
- *
- * @details This function can perform all write procedures described in GATT. 
- *
- * @note    It is important to note that a write without response will <b>consume an application buffer</b>, and will therefore 
- *          generate a @ref BLE_EVT_TX_COMPLETE event when the packet has been transmitted. A write on the other hand will use the 
- *          standard client internal buffer and thus will only generate a @ref BLE_GATTC_EVT_WRITE_RSP event as soon as the write response 
- *          has been received from the peer. Please see the documentation of @ref sd_ble_tx_buffer_count_get for more details.
- *
- * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on.
- * @param[in] p_write_params A pointer to a write parameters structure.
- *
- * @return @ref NRF_SUCCESS Successfully started the Write procedure.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
- * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied.
- * @return @ref NRF_ERROR_BUSY Procedure already in progress.
- * @return @ref BLE_ERROR_NO_TX_BUFFERS There are no available buffers left.
- */
-SVCALL(SD_BLE_GATTC_WRITE, uint32_t, sd_ble_gattc_write(uint16_t conn_handle, ble_gattc_write_params_t const * const p_write_params));
-
-
-/**@brief Send a Handle Value Confirmation to the GATT Server.
- *
- * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on.
- * @param[in] handle The handle of the attribute in the indication.
- *
- * @return @ref NRF_SUCCESS Successfully queued the Handle Value Confirmation for transmission.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
- * @return @ref NRF_ERROR_INVALID_STATE No Indication pending to be confirmed.
- * @return @ref BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle.
- * @return @ref BLE_ERROR_NO_TX_BUFFERS There are no available buffers left.
- */
-SVCALL(SD_BLE_GATTC_HV_CONFIRM, uint32_t, sd_ble_gattc_hv_confirm(uint16_t conn_handle, uint16_t handle));
-
-/** @} */
-
-#endif /* BLE_GATTC_H__ */
-
-/**
-  @}
-  @}
-*/
--- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/ble_gatts.h	Fri Oct 17 14:00:07 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,566 +0,0 @@
-/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved.
- *
- * The information contained herein is confidential property of Nordic Semiconductor. The use,
- * copying, transfer or disclosure of such information is prohibited except by express written
- * agreement with Nordic Semiconductor.
- *
- */
-/**
-  @addtogroup BLE_GATTS Generic Attribute Profile (GATT) Server
-  @{
-  @brief  Definitions and prototypes for the GATTS interface.
- */
-
-#ifndef BLE_GATTS_H__
-#define BLE_GATTS_H__
-
-#include "ble_types.h"
-#include "ble_ranges.h"
-#include "ble_l2cap.h"
-#include "ble_gap.h"
-#include "ble_gatt.h"
-#include "nrf_svc.h"
-
-/** @addtogroup BLE_GATTS_ENUMERATIONS Enumerations
- * @{ */
-
-/**
- * @brief GATTS API SVC numbers.
- */
-enum BLE_GATTS_SVCS
-{
-  SD_BLE_GATTS_SERVICE_ADD = BLE_GATTS_SVC_BASE, /**< Add a service. */
-  SD_BLE_GATTS_INCLUDE_ADD,                      /**< Add an included service. */
-  SD_BLE_GATTS_CHARACTERISTIC_ADD,               /**< Add a characteristic. */
-  SD_BLE_GATTS_DESCRIPTOR_ADD,                   /**< Add a generic attribute. */
-  SD_BLE_GATTS_VALUE_SET,                        /**< Set an attribute value. */
-  SD_BLE_GATTS_VALUE_GET,                        /**< Get an attribute value. */
-  SD_BLE_GATTS_HVX,                              /**< Handle Value Notification or Indication. */
-  SD_BLE_GATTS_SERVICE_CHANGED,                  /**< Perform a Service Changed Indication to one or more peers. */
-  SD_BLE_GATTS_RW_AUTHORIZE_REPLY,               /**< Reply to an authorization request for a read or write operation on one or more attributes. */ 
-  SD_BLE_GATTS_SYS_ATTR_SET,                     /**< Set the persistent system attributes for a connection. */  
-  SD_BLE_GATTS_SYS_ATTR_GET,                     /**< Get updated persistent system attributes after terminating a connection. */
-};
-
-/** @} */
-
-/** @addtogroup BLE_GATTS_DEFINES Defines
- * @{ */
-
-/** @brief Only the default MTU size of 23 is currently supported. */
-#define GATT_RX_MTU 23
-
-/** @defgroup BLE_ERRORS_GATTS SVC return values specific to GATTS
- * @{ */
-#define BLE_ERROR_GATTS_INVALID_ATTR_TYPE   (NRF_GATTS_ERR_BASE + 0x000) /**< Invalid attribute type. */
-#define BLE_ERROR_GATTS_SYS_ATTR_MISSING    (NRF_GATTS_ERR_BASE + 0x001) /**< System Attributes missing. */
-/** @} */
-
-/** @defgroup BLE_GATTS_ATTR_LENS_MAX Maximum attribute lengths
- * @{ */
-#define BLE_GATTS_FIX_ATTR_LEN_MAX (510)  /**< Maximum length for fixed length Attribute Values. */
-#define BLE_GATTS_VAR_ATTR_LEN_MAX (512)  /**< Maximum length for variable length Attribute Values. */ 
-/** @} */
-
-/** @defgroup BLE_GATTS_SRVC_TYPES GATT Server Service Types
- * @{ */
-#define BLE_GATTS_SRVC_TYPE_INVALID          0x00  /**< Invalid Service Type. */
-#define BLE_GATTS_SRVC_TYPE_PRIMARY          0x01  /**< Primary Service. */
-#define BLE_GATTS_SRVC_TYPE_SECONDARY        0x02  /**< Secondary Type. */
-/** @} */
-
-
-/** @defgroup BLE_GATTS_ATTR_TYPES GATT Server Attribute Types
- * @{ */
-#define BLE_GATTS_ATTR_TYPE_INVALID         0x00  /**< Invalid Attribute Type. */
-#define BLE_GATTS_ATTR_TYPE_PRIM_SRVC_DECL  0x01  /**< Primary Service Declaration. */
-#define BLE_GATTS_ATTR_TYPE_SEC_SRVC_DECL   0x02  /**< Secondary Service Declaration. */
-#define BLE_GATTS_ATTR_TYPE_INC_DECL        0x03  /**< Include Declaration. */
-#define BLE_GATTS_ATTR_TYPE_CHAR_DECL       0x04  /**< Characteristic Declaration. */
-#define BLE_GATTS_ATTR_TYPE_CHAR_VAL        0x05  /**< Characteristic Value. */
-#define BLE_GATTS_ATTR_TYPE_DESC            0x06  /**< Descriptor. */
-#define BLE_GATTS_ATTR_TYPE_OTHER           0x07  /**< Other, non-GATT specific type. */
-/** @} */
-
-
-/** @defgroup BLE_GATTS_OPS GATT Server Operations
- * @{ */
-#define BLE_GATTS_OP_INVALID                0x00  /**< Invalid Operation. */
-#define BLE_GATTS_OP_WRITE_REQ              0x01  /**< Write Request. */
-#define BLE_GATTS_OP_WRITE_CMD              0x02  /**< Write Command. */
-#define BLE_GATTS_OP_SIGN_WRITE_CMD         0x03  /**< Signed Write Command. */
-#define BLE_GATTS_OP_PREP_WRITE_REQ         0x04  /**< Prepare Write Request. */
-#define BLE_GATTS_OP_EXEC_WRITE_REQ_CANCEL  0x05  /**< Execute Write Request: Cancel all prepared writes. */
-#define BLE_GATTS_OP_EXEC_WRITE_REQ_NOW     0x06  /**< Execute Write Request: Immediately execute all prepared writes. */
-/** @} */
-
-/** @defgroup BLE_GATTS_VLOCS GATT Value Locations
- * @{ */
-#define BLE_GATTS_VLOC_INVALID       0x00  /**< Invalid Location. */
-#define BLE_GATTS_VLOC_STACK         0x01  /**< Attribute Value is located in stack memory, no user memory is required. */
-#define BLE_GATTS_VLOC_USER          0x02  /**< Attribute Value is located in user memory. This requires the user to maintain a valid buffer through the lifetime of the attribute, since the stack
-                                                will read and write directly to the memory using the pointer provided in the APIs. There are no alignment requirements for the buffer. */
-/** @} */
-
-/** @defgroup BLE_GATTS_AUTHORIZE_TYPES GATT Server Authorization Types
- * @{ */
-#define BLE_GATTS_AUTHORIZE_TYPE_INVALID    0x00  /**< Invalid Type. */
-#define BLE_GATTS_AUTHORIZE_TYPE_READ       0x01  /**< Authorize a Read Operation. */
-#define BLE_GATTS_AUTHORIZE_TYPE_WRITE      0x02  /**< Authorize a Write Request Operation. */
-/** @} */
-
-
-/** @} */
-
-/** @addtogroup BLE_GATTS_STRUCTURES Structures
- * @{ */
-
-/**
- * @brief BLE GATTS init options
- */
-typedef struct
-{
-  uint8_t   service_changed:1;             /**< Include the Service Changed characteristic in the local attributes. */
-} ble_gatts_enable_params_t;
-
-/**@brief Attribute metadata. */
-typedef struct
-{
-  ble_gap_conn_sec_mode_t read_perm;       /**< Read permissions. */
-  ble_gap_conn_sec_mode_t write_perm;      /**< Write permissions. */
-  uint8_t                 vlen       :1;   /**< Variable length attribute. */
-  uint8_t                 vloc       :2;   /**< Value location, see @ref BLE_GATTS_VLOCS.*/
-  uint8_t                 rd_auth    :1;   /**< Read Authorization and value will be requested from the application on every read operation. */ 
-  uint8_t                 wr_auth    :1;   /**< Write Authorization will be requested from the application on every Write Request operation (but not Write Command). */
-} ble_gatts_attr_md_t;
-
-
-/**@brief GATT Attribute. */
-typedef struct
-{
-  ble_uuid_t*          p_uuid;          /**< Pointer to the attribute UUID. */
-  ble_gatts_attr_md_t* p_attr_md;       /**< Pointer to the attribute metadata structure. */
-  uint16_t             init_len;        /**< Initial attribute value length in bytes. */
-  uint16_t             init_offs;       /**< Initial attribute value offset in bytes. If different from zero, the first init_offs bytes of the attribute value will be left uninitialized. */
-  uint16_t             max_len;         /**< Maximum attribute value length in bytes, see @ref BLE_GATTS_ATTR_LENS_MAX for maximum values. */
-  uint8_t*             p_value;         /**< Pointer to the attribute data. Please note that if the @ref BLE_GATTS_VLOC_USER value location is selected in the attribute metadata, this will have to point to a buffer
-                                             that remains valid through the lifetime of the attribute. This excludes usage of automatic variables that may go out of scope or any other temporary location. 
-                                             The stack may access that memory directly without the application's knowledge. */
-} ble_gatts_attr_t;
-
-
-/**@brief GATT Attribute Context. */
-typedef struct
-{
-  ble_uuid_t           srvc_uuid;       /**< Service UUID. */
-  ble_uuid_t           char_uuid;       /**< Characteristic UUID if applicable (BLE_UUID_TYPE_UNKNOWN if N/A). */
-  ble_uuid_t           desc_uuid;       /**< Descriptor UUID if applicable (BLE_UUID_TYPE_UNKNOWN if N/A). */
-  uint16_t             srvc_handle;     /**< Service Handle. */
-  uint16_t             value_handle;    /**< Characteristic Handle if applicable (BLE_GATT_HANDLE_INVALID if N/A). */
-  uint8_t              type;            /**< Attribute Type, see @ref BLE_GATTS_ATTR_TYPES. */
-} ble_gatts_attr_context_t;
-
-
-/**@brief GATT Characteristic Presentation Format. */
-typedef struct
-{
-  uint8_t          format;      /**< Format of the value, see @ref BLE_GATT_CPF_FORMATS. */
-  int8_t           exponent;    /**< Exponent for integer data types. */
-  uint16_t         unit;        /**< UUID from Bluetooth Assigned Numbers. */
-  uint8_t          name_space;  /**< Namespace from Bluetooth Assigned Numbers, see @ref BLE_GATT_CPF_NAMESPACES. */
-  uint16_t         desc;        /**< Namespace description from Bluetooth Assigned Numbers, see @ref BLE_GATT_CPF_NAMESPACES. */
-} ble_gatts_char_pf_t;
-
-
-/**@brief GATT Characteristic metadata. */
-typedef struct
-{
-  ble_gatt_char_props_t       char_props;               /**< Characteristic Properties. */
-  ble_gatt_char_ext_props_t   char_ext_props;           /**< Characteristic Extended Properties. */
-  uint8_t*                    p_char_user_desc;         /**< Pointer to a UTF-8, NULL if the descriptor is not required. */
-  uint16_t                    char_user_desc_max_size;  /**< The maximum size in bytes of the user description descriptor. */
-  uint16_t                    char_user_desc_size;      /**< The size of the user description, must be smaller or equal to char_user_desc_max_size. */ 
-  ble_gatts_char_pf_t*        p_char_pf;                /**< Pointer to a presentation format structure or NULL if the descriptor is not required. */
-  ble_gatts_attr_md_t*        p_user_desc_md;           /**< Attribute metadata for the User Description descriptor, or NULL for default values. */
-  ble_gatts_attr_md_t*        p_cccd_md;                /**< Attribute metadata for the Client Characteristic Configuration Descriptor, or NULL for default values. */
-  ble_gatts_attr_md_t*        p_sccd_md;                /**< Attribute metadata for the Server Characteristic Configuration Descriptor, or NULL for default values. */
-} ble_gatts_char_md_t;
-
-
-/**@brief GATT Characteristic Definition Handles. */
-typedef struct
-{
-  uint16_t          value_handle;       /**< Handle to the characteristic value. */
-  uint16_t          user_desc_handle;   /**< Handle to the User Description descriptor, or BLE_GATT_HANDLE_INVALID if not present. */
-  uint16_t          cccd_handle;        /**< Handle to the Client Characteristic Configuration Descriptor, or BLE_GATT_HANDLE_INVALID if not present. */
-  uint16_t          sccd_handle;        /**< Handle to the Server Characteristic Configuration Descriptor, or BLE_GATT_HANDLE_INVALID if not present. */
-} ble_gatts_char_handles_t;
-
-
-/**@brief GATT HVx parameters. */
-typedef struct
-{
-  uint16_t          handle;             /**< Characteristic Value Handle. */
-  uint8_t           type;               /**< Indication or Notification, see @ref BLE_GATT_HVX_TYPES. */
-  uint16_t          offset;             /**< Offset within the attribute value. */
-  uint16_t*         p_len;              /**< Length in bytes to be written, length in bytes written after successful return. */
-  uint8_t*          p_data;             /**< Actual data content, use NULL to use the current attribute value. */
-} ble_gatts_hvx_params_t;
-
-/**@brief GATT Read Authorization parameters. */
-typedef struct
-{
-  uint16_t          gatt_status;        /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */
-  uint8_t           update : 1;         /**< If set, data supplied in p_data will be used in the ATT response. */
-  uint16_t          offset;             /**< Offset of the attribute value being updated. */
-  uint16_t          len;                /**< Length in bytes of the value in p_data pointer, see @ref BLE_GATTS_ATTR_LENS_MAX. */
-  uint8_t*          p_data;             /**< Pointer to new value used to update the attribute value. */
-} ble_gatts_read_authorize_params_t;
-
-/**@brief GATT Write Authorisation parameters. */
-typedef struct
-{
-  uint16_t          gatt_status;        /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */
-} ble_gatts_write_authorize_params_t;
-
-/**@brief GATT Read or Write Authorize Reply parameters. */
-typedef struct
-{
-  uint8_t                               type;   /**< Type of authorize operation, see @ref BLE_GATTS_AUTHORIZE_TYPES. */
-  union {
-    ble_gatts_read_authorize_params_t   read;   /**< Read authorization parameters. */
-    ble_gatts_write_authorize_params_t  write;  /**< Write authorization parameters. */
-  } params;
-} ble_gatts_rw_authorize_reply_params_t;
-
-
-/**
- * @brief GATT Server Event IDs.
- */
-enum BLE_GATTS_EVTS
-{
-  BLE_GATTS_EVT_WRITE = BLE_GATTS_EVT_BASE,       /**< Write operation performed. */
-  BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST,             /**< Read/Write Authorization request. */
-  BLE_GATTS_EVT_SYS_ATTR_MISSING,                 /**< A persistent system attribute access is pending, awaiting a sd_ble_gatts_sys_attr_set(). */
-  BLE_GATTS_EVT_HVC,                              /**< Handle Value Confirmation. */
-  BLE_GATTS_EVT_SC_CONFIRM,                       /**< Service Changed Confirmation. */
-  BLE_GATTS_EVT_TIMEOUT                           /**< Timeout. */
-};
-
-
-/**@brief Event structure for BLE_GATTS_EVT_WRITE. */
-typedef struct
-{
-  uint16_t                    handle;             /**< Attribute Handle. */
-  uint8_t                     op;                 /**< Type of write operation, see @ref BLE_GATTS_OPS. */
-  ble_gatts_attr_context_t    context;            /**< Attribute Context. */
-  uint16_t                    offset;             /**< Offset for the write operation. */
-  uint16_t                    len;                /**< Length of the incoming data. */
-  uint8_t                     data[1];            /**< Incoming data, variable length. */
-} ble_gatts_evt_write_t;
-
-/**@brief Event structure for authorize read request. */
-typedef struct
-{
-  uint16_t                    handle;             /**< Attribute Handle. */
-  ble_gatts_attr_context_t    context;            /**< Attribute Context. */
-  uint16_t                    offset;             /**< Offset for the read operation. */
-} ble_gatts_evt_read_t;
-
-/**@brief Event structure for BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST. */
-typedef struct
-{
-  uint8_t                     type;             /**< Type of authorize operation, see @ref BLE_GATTS_AUTHORIZE_TYPES. */
-  union {
-    ble_gatts_evt_read_t      read;             /**< Attribute Read Parameters. */
-    ble_gatts_evt_write_t     write;            /**< Attribute Write Parameters. */
-  } request;
-} ble_gatts_evt_rw_authorize_request_t;
-
-/**@brief Event structure for BLE_GATTS_EVT_SYS_ATTR_MISSING. */
-typedef struct
-{
-  uint8_t hint;
-} ble_gatts_evt_sys_attr_missing_t;
-
-
-/**@brief Event structure for BLE_GATTS_EVT_HVC. */
-typedef struct
-{
-  uint16_t          handle;                       /**< Attribute Handle. */
-} ble_gatts_evt_hvc_t;
-
-/**@brief Event structure for BLE_GATTS_EVT_TIMEOUT. */
-typedef struct
-{
-  uint8_t          src;                       /**< Timeout source, see @ref BLE_GATT_TIMEOUT_SOURCES. */
-} ble_gatts_evt_timeout_t;
-
-
-/**@brief GATT Server event callback event structure. */
-typedef struct
-{
-  uint16_t conn_handle;                                       /**< Connection Handle on which event occurred. */
-  union
-  {
-    ble_gatts_evt_write_t                 write;              /**< Write Event Parameters. */
-    ble_gatts_evt_rw_authorize_request_t  authorize_request;  /**< Read or Write Authorize Request Parameters. */
-    ble_gatts_evt_sys_attr_missing_t      sys_attr_missing;   /**< System attributes missing. */
-    ble_gatts_evt_hvc_t                   hvc;                /**< Handle Value Confirmation Event Parameters. */
-    ble_gatts_evt_timeout_t               timeout;            /**< Timeout Event. */
-  } params;
-} ble_gatts_evt_t;
-
-/** @} */
-
-/** @addtogroup BLE_GATTS_FUNCTIONS Functions
- * @{ */
-
-/**@brief Add a service declaration to the local server ATT table.
- *
- * @param[in] type      Toggles between primary and secondary services, see @ref BLE_GATTS_SRVC_TYPES.
- * @param[in] p_uuid    Pointer to service UUID.
- * @param[out] p_handle Pointer to a 16-bit word where the assigned handle will be stored.
- *
- * @note Secondary Services are only relevant in the context of the entity that references them, it is therefore forbidden to
- *       add a secondary service declaration that is not referenced by another service later in the ATT table.
- *
- * @return @ref NRF_SUCCESS Successfully added a service declaration.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, Vendor Specific UUIDs need to be present in the table.
- * @return @ref NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack.
- * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation.
- */
-SVCALL(SD_BLE_GATTS_SERVICE_ADD, uint32_t, sd_ble_gatts_service_add(uint8_t type, ble_uuid_t const*const p_uuid, uint16_t *const p_handle));
-
-
-/**@brief Add an include declaration to the local server ATT table.
- *
- * @note It is currently only possible to add an include declaration to the last added service (i.e. only sequential addition is supported at this time). 
- *
- * @note The included service must already be present in the ATT table prior to this call.
- *
- * @param[in] service_handle    Handle of the service where the included service is to be placed, if BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially.
- * @param[in] inc_srvc_handle   Handle of the included service.
- * @param[out] p_include_handle Pointer to a 16-bit word where the assigned handle will be stored.
- *
- * @return @ref NRF_SUCCESS Successfully added an include declaration.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, handle values need to match previously added services.
- * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation.
- * @return @ref NRF_ERROR_FORBIDDEN Forbidden value supplied, self inclusions are not allowed.
- * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation.
- * @return @ref NRF_ERROR_NOT_FOUND Attribute not found.
- */
-SVCALL(SD_BLE_GATTS_INCLUDE_ADD, uint32_t, sd_ble_gatts_include_add(uint16_t service_handle, uint16_t inc_srvc_handle, uint16_t *const p_include_handle));
-
-
-/**@brief Add a characteristic declaration, a characteristic value declaration and optional characteristic descriptor declarations to the local server ATT table.
- *
- * @note It is currently only possible to add a characteristic to the last added service (i.e. only sequential addition is supported at this time). 
- *
- * @note Several restrictions apply to the parameters, such as matching permissions between the user description descriptor and the writeable auxiliaries bits,
- *       readable (no security) and writeable (selectable) CCCDs and SCCDs and valid presentation format values.
- *
- * @note If no metadata is provided for the optional descriptors, their permissions will be derived from the characteristic permissions.
- *
- * @param[in] service_handle    Handle of the service where the characteristic is to be placed, if BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially.
- * @param[in] p_char_md         Characteristic metadata.
- * @param[in] p_attr_char_value Pointer to the attribute structure corresponding to the characteristic value.
- * @param[out] p_handles        Pointer to the structure where the assigned handles will be stored.
- *
- * @return @ref NRF_SUCCESS Successfully added a characteristic.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, service handle, Vendor Specific UUIDs, lengths, and permissions need to adhere to the constraints.
- * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation, a service context is required.
- * @return @ref NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack.
- * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation.
- * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX.
- */
-SVCALL(SD_BLE_GATTS_CHARACTERISTIC_ADD, uint32_t, sd_ble_gatts_characteristic_add(uint16_t service_handle, ble_gatts_char_md_t const*const p_char_md, ble_gatts_attr_t const*const p_attr_char_value, ble_gatts_char_handles_t *const p_handles));
-
-
-/**@brief Add a descriptor to the local server ATT table.
- *
- * @note It is currently only possible to add a descriptor to the last added characteristic (i.e. only sequential addition is supported at this time). 
- *
- * @param[in] char_handle   Handle of the characteristic where the descriptor is to be placed, if BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially.
- * @param[in] p_attr        Pointer to the attribute structure.
- * @param[out] p_handle     Pointer to a 16-bit word where the assigned handle will be stored.
- *
- * @return @ref NRF_SUCCESS Successfully added a descriptor.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, characteristic handle, Vendor Specific UUIDs, lengths, and permissions need to adhere to the constraints.
- * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation, a characteristic context is required.
- * @return @ref NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack.
- * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation.
- * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX.
- */
-SVCALL(SD_BLE_GATTS_DESCRIPTOR_ADD, uint32_t, sd_ble_gatts_descriptor_add(uint16_t char_handle, ble_gatts_attr_t const * const p_attr, uint16_t* const p_handle));
-
-/**@brief Set the value of a given attribute.
- *
- * @param[in] handle    Attribute handle.
- * @param[in] offset    Offset in bytes to write from.
- * @param[in,out] p_len Length in bytes to be written, length in bytes written after successful return.
- * @param[in] p_value   Pointer to a buffer (at least len bytes long) containing the desired attribute value. If value is stored in user memory, only the attribute length is updated when p_value == NULL.
- *
- * @return @ref NRF_SUCCESS Successfully set the value of the attribute.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
- * @return @ref NRF_ERROR_NOT_FOUND Attribute not found.
- * @return @ref NRF_ERROR_FORBIDDEN Forbidden handle supplied, certain attributes are not modifiable by the application.
- * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX.
- */
-SVCALL(SD_BLE_GATTS_VALUE_SET, uint32_t, sd_ble_gatts_value_set(uint16_t handle, uint16_t offset, uint16_t* const p_len, uint8_t const * const p_value));
-
-/**@brief Get the value of a given attribute.
- *
- * @param[in] handle     Attribute handle.
- * @param[in] offset     Offset in bytes to read from.
- * @param[in,out] p_len  Length in bytes to be read, total length of attribute value (in bytes, starting from offset) after successful return.
- * @param[in,out] p_data Pointer to a buffer (at least len bytes long) where to store the attribute value. Set to NULL to obtain the complete length of attribute value.
- *
- * @note                 If the attribute value is longer than the size of the supplied buffer,
- *                       p_len will return the total attribute value length (excluding offset),
- *                       and not the number of bytes actually returned in p_data.
- *                       The application may use this information to allocate a suitable buffer size.
- * 
- * @return @ref NRF_SUCCESS Successfully retrieved the value of the attribute.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_NOT_FOUND Attribute not found.
- */
-SVCALL(SD_BLE_GATTS_VALUE_GET, uint32_t, sd_ble_gatts_value_get(uint16_t handle, uint16_t offset, uint16_t *const p_len, uint8_t* const p_data));
-
-/**@brief Notify or Indicate an attribute value.
- *
- * @details This function checks for the relevant Client Characteristic Configuration descriptor value to verify that the relevant operation
- *          (notification or indication) has been enabled by the client. It is also able to update the attribute value before issuing the PDU, so that
- *          the application can atomically perform a value update and a server initiated transaction with a single API call.
- *          If the application chooses to indicate an attribute value, a @ref BLE_GATTS_EVT_HVC will be sent up as soon as the confirmation arrives from
- *          the peer.
- *
- * @note    The local attribute value may be updated even if an outgoing packet is not sent to the peer due to an error during execution. 
- *          When receiveing the error codes @ref NRF_ERROR_INVALID_STATE, @ref NRF_ERROR_BUSY, @ref BLE_ERROR_GATTS_SYS_ATTR_MISSING and 
- *          @ref BLE_ERROR_NO_TX_BUFFERS the ATT table has been updated.
- *          The caller can check whether the value has been updated by looking at the contents of *(p_hvx_params->p_len).
- *
- * @note    It is important to note that a notification will <b>consume an application buffer</b>, and will therefore 
- *          generate a @ref BLE_EVT_TX_COMPLETE event when the packet has been transmitted. An indication on the other hand will use the 
- *          standard server internal buffer and thus will only generate a @ref BLE_GATTS_EVT_HVC event as soon as the confirmation 
- *          has been received from the peer. Please see the documentation of @ref sd_ble_tx_buffer_count_get for more details.
- *
- * @param[in] conn_handle  Connection handle.
- * @param[in] p_hvx_params Pointer to an HVx parameters structure. If the p_data member contains a non-NULL pointer the attribute value will be updated with
- *                         the contents pointed by it before sending the notification or indication.
- *
- * @return @ref NRF_SUCCESS Successfully queued a notification or indication for transmission, and optionally updated the attribute value.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
- * @return @ref BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle(s) supplied. Only attributes added directly by the application are available to notify and indicate.
- * @return @ref BLE_ERROR_GATTS_INVALID_ATTR_TYPE Invalid attribute type(s) supplied, only characteristic values may be notified and indicated.
- * @return @ref NRF_ERROR_NOT_FOUND Attribute not found.
- * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied.
- * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation, notifications or indications must be enabled in the CCCD.
- * @return @ref NRF_ERROR_BUSY Procedure already in progress.
- * @return @ref BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value.
- * @return @ref BLE_ERROR_NO_TX_BUFFERS There are no available buffers to send the data, applies only to notifications.
- */
-SVCALL(SD_BLE_GATTS_HVX, uint32_t, sd_ble_gatts_hvx(uint16_t conn_handle, ble_gatts_hvx_params_t const*const p_hvx_params));
-
-/**@brief Indicate the Service Changed attribute value.
- *
- * @details This call will send a Handle Value Indication to one or more peers connected to inform them that the attribute
- *          table layout has changed. As soon as the peer has confirmed the indication, a @ref BLE_GATTS_EVT_SC_CONFIRM event will
- *          be issued.
- *
- * @note    Some of the restrictions and limitations that apply to @ref sd_ble_gatts_hvx also apply here.
- *
- * @param[in] conn_handle  Connection handle.
- * @param[in] start_handle Start of affected attribute handle range.
- * @param[in] end_handle   End of affected attribute handle range.
- *
- * @return @ref NRF_SUCCESS Successfully queued the Service Changed indication for transmission.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
- * @return @ref BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle(s) supplied, handles must be in the range populated by the application.
- * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation, notifications or indications must be enabled in the CCCD.
- * @return @ref NRF_ERROR_BUSY Procedure already in progress.
- * @return @ref BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value.
- */
-SVCALL(SD_BLE_GATTS_SERVICE_CHANGED, uint32_t, sd_ble_gatts_service_changed(uint16_t conn_handle, uint16_t start_handle, uint16_t end_handle));
-
-/**@brief Respond to a Read/Write authorization request.
- *
- * @note This call should only be used as a response to a @ref BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST event issued to the application.
- *
- * @param[in] conn_handle                 Connection handle.
- * @param[in] p_rw_authorize_reply_params Pointer to a structure with the attribute provided by the application.
- *
- * @return @ref NRF_SUCCESS               Successfully queued a response to the peer, and in the case of a write operation, ATT table updated.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
- * @return @ref NRF_ERROR_INVALID_STATE   No authorization request pending.
- * @return @ref NRF_ERROR_INVALID_PARAM   Authorization op invalid,
- *                                         or for Read Authorization reply: requested handles not replied with,
- *                                         or for Write Authorization reply: handle supplied does not match requested handle.
- */
-SVCALL(SD_BLE_GATTS_RW_AUTHORIZE_REPLY, uint32_t, sd_ble_gatts_rw_authorize_reply(uint16_t conn_handle, ble_gatts_rw_authorize_reply_params_t const*const p_rw_authorize_reply_params));
-
-
-/**@brief Update persistent system attribute information.
- *
- * @details Supply to the stack information about persistent system attributes.
- *          This call is legal in the connected state only, and is usually 
- *          made immediately after a connection is established and the bond identified.
- *          usually as a response to a BLE_GATTS_EVT_SYS_ATTR_MISSING.
- *
- *          p_sysattrs may point directly to the application's stored copy of the struct.
- *          If the pointer is NULL, the system attribute info is initialized, assuming that
- *          the application does not have any previously saved data for this bond.
- *
- * @note The state of persistent system attributes is reset upon connection and then remembered for its duration. 
- *
- * @note If this call returns with an error code different from @ref NRF_SUCCESS, the storage of persistent system attributes may have been completed only partially.
- *       This means that the state of the attribute table is undefined, and the application should either provide a new set of attributes using this same call or
- *       reset the SoftDevice to return to a known state.
- *
- * @param[in]  conn_handle        Connection handle.
- * @param[in]  p_sys_attr_data    Pointer to a saved copy of system attributes supplied to the stack, or NULL.
- * @param[in]  len                Size of data pointed by p_sys_attr_data, in octets. 
- *
- * @return @ref NRF_SUCCESS Successfully set the system attribute information.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
- * @return @ref NRF_ERROR_INVALID_DATA Invalid data supplied, the data should be exactly the same as retrieved with @ref sd_ble_gatts_sys_attr_get.
- * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation.
- */ 
-SVCALL(SD_BLE_GATTS_SYS_ATTR_SET, uint32_t, sd_ble_gatts_sys_attr_set(uint16_t conn_handle, uint8_t const*const p_sys_attr_data, uint16_t len)); 
-
- 
-/**@brief Retrieve persistent system attribute information from the stack.
- *
- * @details This call is used to retrieve information about values to be stored perisistently by the application
- *          after a connection has been terminated. When a new connection is made to the same bond, the values
- *          should be restored using @ref sd_ble_gatts_sys_attr_set.
- *          The data should be read before any new advertising is started, or any new connection established. The connection handle for
- *          the previous now defunct connection will remain valid until a new one is created to allow this API call to refer to it.
- *
- * @param[in]     conn_handle       Connection handle of the recently terminated connection.
- * @param[in]     p_sys_attr_data   Pointer to a buffer where updated information about system attributes will be filled in. NULL can be provided to 
- *                                  obtain the length of the data
- * @param[in,out] p_len             Size of application buffer if p_sys_attr_data is not NULL. Unconditially updated to actual length of system attribute data.
- *
- * @return @ref NRF_SUCCESS Successfully retrieved the system attribute information.
- * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_DATA_SIZE The system attribute information did not fit into the provided buffer.
- */ 
-SVCALL(SD_BLE_GATTS_SYS_ATTR_GET, uint32_t, sd_ble_gatts_sys_attr_get(uint16_t conn_handle, uint8_t * const p_sys_attr_data, uint16_t* const p_len)); 
-
-/** @} */
-
-#endif // BLE_GATTS_H__
-
-/**
-  @}
-*/
--- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/ble_hci.h	Fri Oct 17 14:00:07 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/*
-  Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved.
-
-  The information contained herein is confidential property of Nordic Semiconductor. The use,
-  copying, transfer or disclosure of such information is prohibited except by express written
-  agreement with Nordic Semiconductor.
- */
-/**
-  @addtogroup BLE_COMMON 
-  @{
-*/
-
-
-#ifndef BLE_HCI_H__
-#define BLE_HCI_H__ 
-
-/** @defgroup BLE_HCI_STATUS_CODES Bluetooth status codes
- * @{ */
-
-#define BLE_HCI_STATUS_CODE_SUCCESS                        0x00
-#define BLE_HCI_STATUS_CODE_UNKNOWN_BTLE_COMMAND           0x01
-#define BLE_HCI_STATUS_CODE_UNKNOWN_CONNECTION_IDENTIFIER  0x02 
-/*0x03 Hardware Failure
-0x04 Page Timeout
-*/
-#define BLE_HCI_AUTHENTICATION_FAILURE                     0x05
-#define BLE_HCI_STATUS_CODE_PIN_OR_KEY_MISSING             0x06
-#define BLE_HCI_MEMORY_CAPACITY_EXCEEDED                   0x07
-#define BLE_HCI_CONNECTION_TIMEOUT                         0x08
-/*0x09 Connection Limit Exceeded
-0x0A Synchronous Connection Limit To A Device Exceeded
-0x0B ACL Connection Already Exists*/
-#define BLE_HCI_STATUS_CODE_COMMAND_DISALLOWED             0x0C
-/*0x0D Connection Rejected due to Limited Resources
-0x0E Connection Rejected Due To Security Reasons
-0x0F Connection Rejected due to Unacceptable BD_ADDR
-0x10 Connection Accept Timeout Exceeded
-0x11 Unsupported Feature or Parameter Value*/
-#define BLE_HCI_STATUS_CODE_INVALID_BTLE_COMMAND_PARAMETERS 0x12
-#define BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION           0x13
-#define BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_LOW_RESOURCES 0x14
-#define BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_POWER_OFF     0x15
-#define BLE_HCI_LOCAL_HOST_TERMINATED_CONNECTION            0x16
-/*
-0x17 Repeated Attempts
-0x18 Pairing Not Allowed
-0x19 Unknown LMP PDU
-*/
-#define BLE_HCI_UNSUPPORTED_REMOTE_FEATURE 0x1A
-/*
-0x1B SCO Offset Rejected
-0x1C SCO Interval Rejected
-0x1D SCO Air Mode Rejected*/
-#define BLE_HCI_STATUS_CODE_INVALID_LMP_PARAMETERS     0x1E
-#define BLE_HCI_STATUS_CODE_UNSPECIFIED_ERROR          0x1F
-/*0x20 Unsupported LMP Parameter Value
-0x21 Role Change Not Allowed
-*/
-#define BLE_HCI_STATUS_CODE_LMP_RESPONSE_TIMEOUT       0x22
-/*0x23 LMP Error Transaction Collision*/
-#define BLE_HCI_STATUS_CODE_LMP_PDU_NOT_ALLOWED        0x24
-/*0x25 Encryption Mode Not Acceptable
-0x26 Link Key Can Not be Changed
-0x27 Requested QoS Not Supported
-*/
-#define BLE_HCI_INSTANT_PASSED                         0x28
-#define BLE_HCI_PAIRING_WITH_UNIT_KEY_UNSUPPORTED      0x29
-#define BLE_HCI_DIFFERENT_TRANSACTION_COLLISION        0x2A
-/*
-0x2B Reserved
-0x2C QoS Unacceptable Parameter
-0x2D QoS Rejected
-0x2E Channel Classification Not Supported
-0x2F Insufficient Security
-0x30 Parameter Out Of Mandatory Range
-0x31 Reserved
-0x32 Role Switch Pending
-0x33 Reserved
-0x34 Reserved Slot Violation
-0x35 Role Switch Failed
-0x36 Extended Inquiry Response Too Large
-0x37 Secure Simple Pairing Not Supported By Host.
-0x38 Host Busy - Pairing
-0x39 Connection Rejected due to No Suitable Channel Found*/
-#define BLE_HCI_CONTROLLER_BUSY                        0x3A
-#define BLE_HCI_CONN_INTERVAL_UNACCEPTABLE             0x3B
-#define BLE_HCI_DIRECTED_ADVERTISER_TIMEOUT            0x3C
-#define BLE_HCI_CONN_TERMINATED_DUE_TO_MIC_FAILURE     0x3D
-#define BLE_HCI_CONN_FAILED_TO_BE_ESTABLISHED          0x3E
-
-/** @} */
-
-
-#endif // BLE_HCI_H__
-
-/** @} */
--- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/ble_l2cap.h	Fri Oct 17 14:00:07 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,144 +0,0 @@
-/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved.
- *
- * The information contained herein is confidential property of Nordic Semiconductor. The use,
- * copying, transfer or disclosure of such information is prohibited except by express written
- * agreement with Nordic Semiconductor.
- *
- */
-/**
-  @addtogroup BLE_L2CAP Logical Link Control and Adaptation Protocol (L2CAP)
-  @{
-  @brief Definitions and prototypes for the L2CAP interface.
- */
-
-#ifndef BLE_L2CAP_H__
-#define BLE_L2CAP_H__ 
-
-#include "ble_types.h"
-#include "ble_ranges.h"
-#include "ble_err.h"
-#include "nrf_svc.h"
-
-/**@addtogroup BLE_L2CAP_ENUMERATIONS Enumerations
- * @{ */
-
-/**@brief L2CAP API SVC numbers. */
-enum BLE_L2CAP_SVCS 
-{
-  SD_BLE_L2CAP_CID_REGISTER = BLE_L2CAP_SVC_BASE,  /**< Register a CID. */
-  SD_BLE_L2CAP_CID_UNREGISTER,                     /**< Unregister a CID. */
-  SD_BLE_L2CAP_TX                                  /**< Transmit a packet. */
-};
-
-/** @} */
-
-/**@addtogroup BLE_L2CAP_DEFINES Defines
- * @{ */
-
-/**@defgroup BLE_ERRORS_L2CAP SVC return values specific to L2CAP
- * @{ */
-#define BLE_ERROR_L2CAP_CID_IN_USE            (NRF_L2CAP_ERR_BASE + 0x000)  /**< CID already in use. */
-/** @} */
-
-/**@brief Default L2CAP MTU. */
-#define BLE_L2CAP_MTU_DEF           (23)    
-
-/**@brief Invalid Channel Identifier. */
-#define BLE_L2CAP_CID_INVALID       (0x0000) 
-
-/**@brief Dynamic Channel Identifier base. */
-#define BLE_L2CAP_CID_DYN_BASE      (0x0040) 
-
-/**@brief Maximum amount of dynamic CIDs. */
-#define BLE_L2CAP_CID_DYN_MAX       (8) 
-
-/** @} */
-
-/**@addtogroup BLE_L2CAP_STRUCTURES Structures
- * @{ */
-
-/**@brief Packet header format for L2CAP transmission. */
-typedef struct
-{
-  uint16_t   len;                                 /**< Length of valid info in data member. */
-  uint16_t   cid;                                 /**< Channel ID on which packet is transmitted. */
-} ble_l2cap_header_t;
-
-/**@brief L2CAP Event IDs. */
-enum BLE_L2CAP_EVTS 
-{
-  BLE_L2CAP_EVT_RX  = BLE_L2CAP_EVT_BASE          /**< L2CAP packet received. */
-};
-
-
-/**@brief L2CAP Received packet event report. */
-typedef struct
-{
-  ble_l2cap_header_t header;                      /** L2CAP packet header. */
-  uint8_t    data[1];                             /**< Packet data, variable length. */
-} ble_l2cap_evt_rx_t;
-
-
-/**@brief L2CAP event callback event structure. */
-typedef struct
-{
-  uint16_t conn_handle;                           /**< Connection Handle on which event occured. */
-  union
-  {
-    ble_l2cap_evt_rx_t rx;                        /**< RX Event parameters. */
-  } params;
-} ble_l2cap_evt_t;
-
-
-/**@brief Register a CID with L2CAP.
- *
- * @details This registers a higher protocol layer with the L2CAP multiplexer, and is requried prior to all operations on the CID.
- *          
- * @param[in] cid L2CAP CID.
- *
- * @return @ref NRF_SUCCESS Successfully registered a CID with the L2CAP layer.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, CID must be above @ref BLE_L2CAP_CID_DYN_BASE.
- * @return @ref BLE_ERROR_L2CAP_CID_IN_USE L2CAP CID already in use.
- * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation.
- */
-SVCALL(SD_BLE_L2CAP_CID_REGISTER, uint32_t, sd_ble_l2cap_cid_register(uint16_t cid));
-
-/**@brief Unregister a CID with L2CAP.
- *
- * @details This unregisters a previously registerd higher protocol layer with the L2CAP multiplexer.
- *          
- * @param[in] cid L2CAP CID.
- *
- * @return @ref NRF_SUCCESS Successfully unregistered the CID.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
- * @return @ref NRF_ERROR_NOT_FOUND CID not previously registered.
- */
-SVCALL(SD_BLE_L2CAP_CID_UNREGISTER, uint32_t, sd_ble_l2cap_cid_unregister(uint16_t cid));
-
-/**@brief Transmit an L2CAP packet.
- *
- * @note    It is important to note that a call to this function will <b>consume an application buffer</b>, and will therefore 
- *          generate a @ref BLE_EVT_TX_COMPLETE event when the packet has been transmitted. 
- *          Please see the documentation of @ref sd_ble_tx_buffer_count_get for more details.
- *
- * @param[in] conn_handle Connection Handle.
- * @param[in] p_header    Pointer to a packet header containing length and CID.
- * @param[in] p_data      Pointer to the data to be transmitted.
- *
- * @return @ref NRF_SUCCESS Successfully queued an L2CAP packet for transmission.
- * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
- * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, CIDs must be registered beforehand with @ref sd_ble_l2cap_cid_register.
- * @return @ref NRF_ERROR_NOT_FOUND CID not found.
- * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation.
- * @return @ref BLE_ERROR_NO_TX_BUFFERS Not enough application buffers available.
- * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, see @ref BLE_L2CAP_MTU_DEF.
- */
-SVCALL(SD_BLE_L2CAP_TX, uint32_t, sd_ble_l2cap_tx(uint16_t conn_handle, ble_l2cap_header_t const * const p_header, uint8_t const * const p_data));
-
-/** @} */
-
-#endif // BLE_L2CAP_H__
-
-/**
-  @}
-*/
--- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/ble_ranges.h	Fri Oct 17 14:00:07 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
-  Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved.
-
-  The information contained herein is confidential property of Nordic Semiconductor. The use,
-  copying, transfer or disclosure of such information is prohibited except by express written
-  agreement with Nordic Semiconductor.
- */
-/**
-  @addtogroup BLE_COMMON
-  @{
-  @defgroup ble_ranges Module specific SVC and event number subranges
-  @{
-
-  @brief Definition of SVC and event number subranges for each API module.
-
-  @note
-  SVCs and event numbers are split into subranges for each API module.
-  Each module receives its entire allocated range of SVC calls, whether implemented or not,
-  but return BLE_ERROR_NOT_SUPPORTED for unimplemented or undefined calls in its range.
-
-  Note that the symbols BLE_<module>_SVC_LAST is the end of the allocated SVC range,
-  rather than the last SVC function call actually defined and implemented.
-
-  Specific SVC and event values are defined in each module's ble_<module>.h file,
-  which defines names of each individual SVC code based on the range start value.
-*/
-
-#ifndef BLE_RANGES_H__
-#define BLE_RANGES_H__
-
-#define BLE_SVC_BASE           0x60
-#define BLE_SVC_LAST           0x6B       /* Total: 12. */
-
-#define BLE_RESERVED_SVC_BASE  0x6C
-#define BLE_RESERVED_SVC_LAST  0x6F       /* Total: 4. */
-
-#define BLE_GAP_SVC_BASE       0x70
-#define BLE_GAP_SVC_LAST       0x8F       /* Total: 32. */
-
-#define BLE_GATTC_SVC_BASE     0x90
-#define BLE_GATTC_SVC_LAST     0x9F       /* Total: 16. */
-
-#define BLE_GATTS_SVC_BASE     0xA0
-#define BLE_GATTS_SVC_LAST     0xAF       /* Total: 16. */
-
-#define BLE_L2CAP_SVC_BASE     0xB0
-#define BLE_L2CAP_SVC_LAST     0xBF       /* Total: 16. */
-
-
-#define BLE_EVT_INVALID        0x00
-
-#define BLE_EVT_BASE           0x01
-#define BLE_EVT_LAST           0x0F       /* Total: 15. */
-
-#define BLE_GAP_EVT_BASE       0x10
-#define BLE_GAP_EVT_LAST       0x2F       /* Total: 32. */
-
-#define BLE_GATTC_EVT_BASE     0x30
-#define BLE_GATTC_EVT_LAST     0x4F       /* Total: 32. */
-
-#define BLE_GATTS_EVT_BASE     0x50
-#define BLE_GATTS_EVT_LAST     0x6F       /* Total: 32. */
-
-#define BLE_L2CAP_EVT_BASE     0x70
-#define BLE_L2CAP_EVT_LAST     0x8F       /* Total: 32.  */
-
-#define BLE_OPT_INVALID        0x00       /**< Invalid BLE Option. */
-
-#define BLE_OPT_BASE           0x01       /**< Common BLE Option base. */
-#define BLE_OPT_LAST           0x1F       /**< Total: 31. */
-
-#define BLE_GAP_OPT_BASE       0x20       /**< GAP BLE Option base. */
-#define BLE_GAP_OPT_LAST       0x3F       /**< Total: 32. */
-
-#define BLE_GATTC_OPT_BASE     0x40       /**< GATTC BLE Option base. */
-#define BLE_GATTC_OPT_LAST     0x5F       /**< Total: 32. */
-
-#define BLE_GATTS_OPT_BASE     0x60       /**< GATTS BLE Option base. */
-#define BLE_GATTS_OPT_LAST     0x7F       /**< Total: 32. */
-
-#define BLE_L2CAP_OPT_BASE     0x80       /**< L2CAP BLE Option base. */
-#define BLE_L2CAP_OPT_LAST     0x9F       /**< Total: 32.  */
-
-#endif /* BLE_RANGES_H__ */
-
-/**
-  @}
-  @}
-*/
--- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/ble_types.h	Fri Oct 17 14:00:07 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +0,0 @@
-/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved.
- *
- * The information contained herein is confidential property of Nordic Semiconductor. The use,
- * copying, transfer or disclosure of such information is prohibited except by express written
- * agreement with Nordic Semiconductor.
- *
- */
-/**
-  @addtogroup BLE_COMMON
-  @{
-  @defgroup ble_types Common types and macro definitions
-  @{
-
-  @brief Common types and macro definitions for the S110 SoftDevice.
- */
-
-#ifndef BLE_TYPES_H__
-#define BLE_TYPES_H__
-
-#include <stdint.h>
-
-/** @addtogroup BLE_COMMON_DEFINES Defines
- * @{ */
-
-/** @defgroup BLE_CONN_HANDLES BLE Connection Handles
- * @{ */
-#define BLE_CONN_HANDLE_INVALID 0xFFFF  /**< Invalid Connection Handle. */
-#define BLE_CONN_HANDLE_ALL     0xFFFE  /**< Applies to all Connection Handles. */
-/** @} */
-
-
-/** @defgroup BLE_UUID_VALUES Assigned Values for BLE UUIDs
- * @{ */
-/* Generic UUIDs, applicable to all services */
-#define BLE_UUID_UNKNOWN                              0x0000 /**< Reserved UUID. */
-#define BLE_UUID_SERVICE_PRIMARY                      0x2800 /**< Primary Service. */
-#define BLE_UUID_SERVICE_SECONDARY                    0x2801 /**< Secondary Service. */
-#define BLE_UUID_SERVICE_INCLUDE                      0x2802 /**< Include. */
-#define BLE_UUID_CHARACTERISTIC                       0x2803 /**< Characteristic. */
-#define BLE_UUID_DESCRIPTOR_CHAR_EXT_PROP             0x2900 /**< Characteristic Extended Properties Descriptor. */
-#define BLE_UUID_DESCRIPTOR_CHAR_USER_DESC            0x2901 /**< Characteristic User Description Descriptor. */
-#define BLE_UUID_DESCRIPTOR_CLIENT_CHAR_CONFIG        0x2902 /**< Client Characteristic Configuration Descriptor. */
-#define BLE_UUID_DESCRIPTOR_SERVER_CHAR_CONFIG        0x2903 /**< Server Characteristic Configuration Descriptor. */
-#define BLE_UUID_DESCRIPTOR_CHAR_PRESENTATION_FORMAT  0x2904 /**< Characteristic Presentation Format Descriptor. */
-#define BLE_UUID_DESCRIPTOR_CHAR_AGGREGATE_FORMAT     0x2905 /**< Characteristic Aggregate Format Descriptor. */
-/* GATT specific UUIDs */
-#define BLE_UUID_GATT                                 0x1801 /**< Generic Attribute Profile. */
-#define BLE_UUID_GATT_CHARACTERISTIC_SERVICE_CHANGED  0x2A05 /**< Service Changed Characteristic. */
-/* GAP specific UUIDs */
-#define BLE_UUID_GAP                                  0x1800 /**< Generic Access Profile. */
-#define BLE_UUID_GAP_CHARACTERISTIC_DEVICE_NAME       0x2A00 /**< Device Name Characteristic. */
-#define BLE_UUID_GAP_CHARACTERISTIC_APPEARANCE        0x2A01 /**< Appearance Characteristic. */
-#define BLE_UUID_GAP_CHARACTERISTIC_PPF               0x2A02 /**< Peripheral Privacy Flag Characteristic. */
-#define BLE_UUID_GAP_CHARACTERISTIC_RECONN_ADDR       0x2A03 /**< Reconnection Address Characteristic. */
-#define BLE_UUID_GAP_CHARACTERISTIC_PPCP              0x2A04 /**< Peripheral Preferred Connection Parameters Characteristic. */
-/** @} */
-
-
-/** @defgroup BLE_UUID_TYPES Types of UUID
- * @{ */
-#define BLE_UUID_TYPE_UNKNOWN       0x00 /**< Invalid UUID type. */
-#define BLE_UUID_TYPE_BLE           0x01 /**< Bluetooth SIG UUID (16-bit). */
-#define BLE_UUID_TYPE_VENDOR_BEGIN  0x02 /**< Vendor UUID types start at this index (128-bit). */
-/** @} */
-
-
-/** @defgroup BLE_APPEARANCES Bluetooth Appearance values
- *  @note Retrieved from http://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.gap.appearance.xml
- * @{ */
-#define BLE_APPEARANCE_UNKNOWN                                0 /**< Unknown. */
-#define BLE_APPEARANCE_GENERIC_PHONE                         64 /**< Generic Phone. */
-#define BLE_APPEARANCE_GENERIC_COMPUTER                     128 /**< Generic Computer. */
-#define BLE_APPEARANCE_GENERIC_WATCH                        192 /**< Generic Watch. */
-#define BLE_APPEARANCE_WATCH_SPORTS_WATCH                   193 /**< Watch: Sports Watch. */
-#define BLE_APPEARANCE_GENERIC_CLOCK                        256 /**< Generic Clock. */
-#define BLE_APPEARANCE_GENERIC_DISPLAY                      320 /**< Generic Display. */
-#define BLE_APPEARANCE_GENERIC_REMOTE_CONTROL               384 /**< Generic Remote Control. */
-#define BLE_APPEARANCE_GENERIC_EYE_GLASSES                  448 /**< Generic Eye-glasses. */
-#define BLE_APPEARANCE_GENERIC_TAG                          512 /**< Generic Tag. */
-#define BLE_APPEARANCE_GENERIC_KEYRING                      576 /**< Generic Keyring. */
-#define BLE_APPEARANCE_GENERIC_MEDIA_PLAYER                 640 /**< Generic Media Player. */
-#define BLE_APPEARANCE_GENERIC_BARCODE_SCANNER              704 /**< Generic Barcode Scanner. */
-#define BLE_APPEARANCE_GENERIC_THERMOMETER                  768 /**< Generic Thermometer. */
-#define BLE_APPEARANCE_THERMOMETER_EAR                      769 /**< Thermometer: Ear. */
-#define BLE_APPEARANCE_GENERIC_HEART_RATE_SENSOR            832 /**< Generic Heart rate Sensor. */
-#define BLE_APPEARANCE_HEART_RATE_SENSOR_HEART_RATE_BELT    833 /**< Heart Rate Sensor: Heart Rate Belt. */
-#define BLE_APPEARANCE_GENERIC_BLOOD_PRESSURE               896 /**< Generic Blood Pressure. */
-#define BLE_APPEARANCE_BLOOD_PRESSURE_ARM                   897 /**< Blood Pressure: Arm. */
-#define BLE_APPEARANCE_BLOOD_PRESSURE_WRIST                 898 /**< Blood Pressure: Wrist. */
-#define BLE_APPEARANCE_GENERIC_HID                          960 /**< Human Interface Device (HID). */
-#define BLE_APPEARANCE_HID_KEYBOARD                         961 /**< Keyboard (HID Subtype). */
-#define BLE_APPEARANCE_HID_MOUSE                            962 /**< Mouse (HID Subtype). */
-#define BLE_APPEARANCE_HID_JOYSTICK                         963 /**< Joystiq (HID Subtype). */
-#define BLE_APPEARANCE_HID_GAMEPAD                          964 /**< Gamepad (HID Subtype). */
-#define BLE_APPEARANCE_HID_DIGITIZERSUBTYPE                 965 /**< Digitizer Tablet (HID Subtype). */
-#define BLE_APPEARANCE_HID_CARD_READER                      966 /**< Card Reader (HID Subtype). */
-#define BLE_APPEARANCE_HID_DIGITAL_PEN                      967 /**< Digital Pen (HID Subtype). */
-#define BLE_APPEARANCE_HID_BARCODE                          968 /**< Barcode Scanner (HID Subtype). */
-#define BLE_APPEARANCE_GENERIC_GLUCOSE_METER               1024 /**< Generic Glucose Meter. */
-#define BLE_APPEARANCE_GENERIC_RUNNING_WALKING_SENSOR      1088 /**< Generic Running Walking Sensor. */
-#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_IN_SHOE      1089 /**< Running Walking Sensor: In-Shoe. */
-#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_ON_SHOE      1090 /**< Running Walking Sensor: On-Shoe. */
-#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_ON_HIP       1091 /**< Running Walking Sensor: On-Hip. */
-#define BLE_APPEARANCE_GENERIC_CYCLING                     1152 /**< Generic Cycling. */
-#define BLE_APPEARANCE_CYCLING_CYCLING_COMPUTER            1153 /**< Cycling: Cycling Computer. */
-#define BLE_APPEARANCE_CYCLING_SPEED_SENSOR                1154 /**< Cycling: Speed Sensor. */
-#define BLE_APPEARANCE_CYCLING_CADENCE_SENSOR              1155 /**< Cycling: Cadence Sensor. */
-#define BLE_APPEARANCE_CYCLING_POWER_SENSOR                1156 /**< Cycling: Power Sensor. */
-#define BLE_APPEARANCE_CYCLING_SPEED_CADENCE_SENSOR        1157 /**< Cycling: Speed and Cadence Sensor. */
-#define BLE_APPEARANCE_GENERIC_PULSE_OXIMETER              3136 /**< Generic Pulse Oximeter. */
-#define BLE_APPEARANCE_PULSE_OXIMETER_FINGERTIP            3137 /**< Fingertip (Pulse Oximeter subtype). */
-#define BLE_APPEARANCE_PULSE_OXIMETER_WRIST_WORN           3138 /**< Wrist Worn(Pulse Oximeter subtype). */
-#define BLE_APPEARANCE_GENERIC_WEIGHT_SCALE                3200 /**< Generic Weight Scale. */
-#define BLE_APPEARANCE_GENERIC_OUTDOOR_SPORTS_ACT          5184 /**< Generic Outdoor Sports Activity. */
-#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_DISP         5185 /**< Location Display Device (Outdoor Sports Activity subtype). */
-#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_AND_NAV_DISP 5186 /**< Location and Navigation Display Device (Outdoor Sports Activity subtype). */
-#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_POD          5187 /**< Location Pod (Outdoor Sports Activity subtype). */
-#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_AND_NAV_POD  5188 /**< Location and Navigation Pod (Outdoor Sports Activity subtype). */
-/** @} */
-
-/** @brief Set .type and .uuid fields of ble_uuid_struct to specified uuid value. */
-#define BLE_UUID_BLE_ASSIGN(instance, value) do {\
-            instance.type = BLE_UUID_TYPE_BLE; \
-            instance.uuid = value;} while(0)
-
-/** @brief Copy type and uuid members from src to dst ble_uuid_t pointer. Both pointers must be valid/non-null. */
-#define BLE_UUID_COPY_PTR(dst, src) do {\
-            (dst)->type = (src)->type; \
-            (dst)->uuid = (src)->uuid;} while(0)
-
-/** @brief Copy type and uuid members from src to dst ble_uuid_t struct. */
-#define BLE_UUID_COPY_INST(dst, src) do {\
-            (dst).type = (src).type; \
-            (dst).uuid = (src).uuid;} while(0)
-
-/** @brief Compare for equality both type and uuid members of two (valid, non-null) ble_uuid_t pointers. */
-#define BLE_UUID_EQ(p_uuid1, p_uuid2) \
-            (((p_uuid1)->type == (p_uuid2)->type) && ((p_uuid1)->uuid == (p_uuid2)->uuid))
-
-/** @brief Compare for difference both type and uuid members of two (valid, non-null) ble_uuid_t pointers. */
-#define BLE_UUID_NEQ(p_uuid1, p_uuid2) \
-            (((p_uuid1)->type != (p_uuid2)->type) || ((p_uuid1)->uuid != (p_uuid2)->uuid))
-
-/** @} */
-
-/** @addtogroup BLE_TYPES_STRUCTURES Structures
- * @{ */
-
-/** @brief 128 bit UUID values. */
-typedef struct
-{ 
-    unsigned char uuid128[16];
-} ble_uuid128_t;
-
-/** @brief  Bluetooth Low Energy UUID type, encapsulates both 16-bit and 128-bit UUIDs. */
-typedef struct
-{
-    uint16_t    uuid; /**< 16-bit UUID value or octets 12-13 of 128-bit UUID. */
-    uint8_t     type; /**< UUID type, see @ref BLE_UUID_TYPES. If type is BLE_UUID_TYPE_UNKNOWN, the value of uuid is undefined. */
-} ble_uuid_t;
-
-/** @} */
-
-#endif /* BLE_TYPES_H__ */
-
-/**
-  @}
-  @}
-*/
--- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/nrf_error.h	Fri Oct 17 14:00:07 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved.
- *
- * The information contained herein is confidential property of Nordic Semiconductor. The use,
- * copying, transfer or disclosure of such information is prohibited except by express written
- * agreement with Nordic Semiconductor.
- *
- */
- /**
-  @defgroup nrf_error SoftDevice Global Error Codes
-  @{
-   
-  @brief Global Error definitions
-*/
-
-/* Header guard */
-#ifndef NRF_ERROR_H__
-#define NRF_ERROR_H__
-
-/** @defgroup NRF_ERRORS_BASE Error Codes Base number definitions
- * @{ */
-#define NRF_ERROR_BASE_NUM      (0x0)       ///< Global error base
-#define NRF_ERROR_SDM_BASE_NUM  (0x1000)    ///< SDM error base
-#define NRF_ERROR_SOC_BASE_NUM  (0x2000)    ///< SoC error base
-#define NRF_ERROR_STK_BASE_NUM  (0x3000)    ///< STK error base
-/** @} */
-
-#define NRF_SUCCESS                           (NRF_ERROR_BASE_NUM + 0)  ///< Successful command
-#define NRF_ERROR_SVC_HANDLER_MISSING         (NRF_ERROR_BASE_NUM + 1)  ///< SVC handler is missing
-#define NRF_ERROR_SOFTDEVICE_NOT_ENABLED      (NRF_ERROR_BASE_NUM + 2)  ///< SoftDevice has not been enabled
-#define NRF_ERROR_INTERNAL                    (NRF_ERROR_BASE_NUM + 3)  ///< Internal Error
-#define NRF_ERROR_NO_MEM                      (NRF_ERROR_BASE_NUM + 4)  ///< No Memory for operation
-#define NRF_ERROR_NOT_FOUND                   (NRF_ERROR_BASE_NUM + 5)  ///< Not found
-#define NRF_ERROR_NOT_SUPPORTED               (NRF_ERROR_BASE_NUM + 6)  ///< Not supported
-#define NRF_ERROR_INVALID_PARAM               (NRF_ERROR_BASE_NUM + 7)  ///< Invalid Parameter
-#define NRF_ERROR_INVALID_STATE               (NRF_ERROR_BASE_NUM + 8)  ///< Invalid state, operation disallowed in this state
-#define NRF_ERROR_INVALID_LENGTH              (NRF_ERROR_BASE_NUM + 9)  ///< Invalid Length
-#define NRF_ERROR_INVALID_FLAGS               (NRF_ERROR_BASE_NUM + 10) ///< Invalid Flags
-#define NRF_ERROR_INVALID_DATA                (NRF_ERROR_BASE_NUM + 11) ///< Invalid Data
-#define NRF_ERROR_DATA_SIZE                   (NRF_ERROR_BASE_NUM + 12) ///< Data size exceeds limit
-#define NRF_ERROR_TIMEOUT                     (NRF_ERROR_BASE_NUM + 13) ///< Operation timed out
-#define NRF_ERROR_NULL                        (NRF_ERROR_BASE_NUM + 14) ///< Null Pointer
-#define NRF_ERROR_FORBIDDEN                   (NRF_ERROR_BASE_NUM + 15) ///< Forbidden Operation
-#define NRF_ERROR_INVALID_ADDR                (NRF_ERROR_BASE_NUM + 16) ///< Bad Memory Address
-#define NRF_ERROR_BUSY                        (NRF_ERROR_BASE_NUM + 17) ///< Busy
-
-#endif // NRF_ERROR_H__
-
-/**
-  @}
-*/
--- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/nrf_error_sdm.h	Fri Oct 17 14:00:07 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved.
- *
- * The information contained herein is confidential property of Nordic Semiconductor. The use,
- * copying, transfer or disclosure of such information is prohibited except by express written
- * agreement with Nordic Semiconductor.
- *
- */
- /**
-  @addtogroup nrf_sdm_api
-  @{
-  @defgroup nrf_sdm_error SoftDevice Manager Error Codes
-  @{
-     
-  @brief Error definitions for the SDM API
-*/
-
-/* Header guard */
-#ifndef NRF_ERROR_SDM_H__
-#define NRF_ERROR_SDM_H__
-
-#include "nrf_error.h"
-
-#define NRF_ERROR_SDM_LFCLK_SOURCE_UNKNOWN              (NRF_ERROR_SDM_BASE_NUM + 0)  ///< Unknown lfclk source
-#define NRF_ERROR_SDM_INCORRECT_INTERRUPT_CONFIGURATION (NRF_ERROR_SDM_BASE_NUM + 1)  ///< Incorrect interrupt configuration (can be caused by using illegal priority levels, or having enabled SoftDevice interrupts)
-#define NRF_ERROR_SDM_INCORRECT_CLENR0                  (NRF_ERROR_SDM_BASE_NUM + 2)  ///< Incorrect CLENR0 (can be caused by erronous SoftDevice flashing)
-
-#endif // NRF_ERROR_SDM_H__
-
-/**
-  @}
-  @}
-*/
--- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/nrf_error_soc.h	Fri Oct 17 14:00:07 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved.
- *
- * The information contained herein is confidential property of Nordic Semiconductor. The use,
- * copying, transfer or disclosure of such information is prohibited except by express written
- * agreement with Nordic Semiconductor.
- *
- */
- /**
-  @addtogroup nrf_soc_api
-  @{
-  @defgroup nrf_soc_error SoC Library Error Codes
-  @{
-     
-  @brief Error definitions for the SoC library
-
-*/
-
-/* Header guard */
-#ifndef NRF_ERROR_SOC_H__
-#define NRF_ERROR_SOC_H__
-
-#include "nrf_error.h"
-
-/* Mutex Errors */
-#define NRF_ERROR_SOC_MUTEX_ALREADY_TAKEN                 (NRF_ERROR_SOC_BASE_NUM + 0)  ///< Mutex already taken
-
-/* NVIC errors */
-#define NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE        (NRF_ERROR_SOC_BASE_NUM + 1)  ///< NVIC interrupt not available
-#define NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED (NRF_ERROR_SOC_BASE_NUM + 2)  ///< NVIC interrupt priority not allowed
-#define NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN              (NRF_ERROR_SOC_BASE_NUM + 3)  ///< NVIC should not return
-
-/* Power errors */
-#define NRF_ERROR_SOC_POWER_MODE_UNKNOWN                  (NRF_ERROR_SOC_BASE_NUM + 4)  ///< Power mode unknown
-#define NRF_ERROR_SOC_POWER_POF_THRESHOLD_UNKNOWN         (NRF_ERROR_SOC_BASE_NUM + 5)  ///< Power POF threshold unknown
-#define NRF_ERROR_SOC_POWER_OFF_SHOULD_NOT_RETURN         (NRF_ERROR_SOC_BASE_NUM + 6)  ///< Power off should not return
-
-/* Rand errors */
-#define NRF_ERROR_SOC_RAND_NOT_ENOUGH_VALUES              (NRF_ERROR_SOC_BASE_NUM + 7)  ///< RAND not enough values
-
-/* PPI errors */
-#define NRF_ERROR_SOC_PPI_INVALID_CHANNEL                 (NRF_ERROR_SOC_BASE_NUM + 8)  ///< Invalid PPI Channel
-#define NRF_ERROR_SOC_PPI_INVALID_GROUP                   (NRF_ERROR_SOC_BASE_NUM + 9)  ///< Invalid PPI Group
-
-#endif // NRF_ERROR_SOC_H__
-/**
-  @}
-  @}
-*/
--- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/nrf_mbr.h	Fri Oct 17 14:00:07 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,155 +0,0 @@
-/*
- * Copyright (c) 2014 Nordic Semiconductor. All Rights Reserved.
- *
- * The information contained herein is confidential property of Nordic Semiconductor. The use,
- * copying, transfer or disclosure of such information is prohibited except by express written
- * agreement with Nordic Semiconductor.
- *
- */
-/**
-  @defgroup nrf_mbr_api Master Boot Record API
-  @{
-     
-  @brief APIs for updating SoftDevice and BootLoader
- 
-*/
-
-/* Header guard */
-#ifndef NRF_MBR_H__
-#define NRF_MBR_H__
-
-#include "nrf_svc.h"
-#include <stdint.h>
-
-
-/** @addtogroup NRF_MBR_DEFINES Defines
- * @{ */
-
-/**@brief MBR SVC Base number. */
-#define MBR_SVC_BASE 0x18   
-/** @} */
-
-/** @addtogroup NRF_MBR_ENUMS Enumerations
- * @{ */
-
-/**@brief nRF Master Boot Record API SVC numbers. */
-enum NRF_MBR_SVCS
-{
-  SD_MBR_COMMAND = MBR_SVC_BASE, /**< ::sd_mbr_command */
-};
-
-/**@brief Possible values for ::sd_mbr_command_t.command */
-enum NRF_MBR_COMMANDS
-{
-  SD_MBR_COMMAND_COPY_BL,               /**< Copy a new a new BootLoader. @see sd_mbr_command_copy_bl_t */
-  SD_MBR_COMMAND_COPY_SD,               /**< Copy a new SoftDevice. @see ::sd_mbr_command_copy_sd_t*/
-  SD_MBR_COMMAND_INIT_SD,               /**< Init forwarding interrupts to SD, and run reset function in SD*/
-  SD_MBR_COMMAND_COMPARE,               /**< This command works like memcmp. @see ::sd_mbr_command_compare_t*/
-  SD_MBR_COMMAND_VECTOR_TABLE_BASE_SET, /**< Start forwarding all exception to this address @see ::sd_mbr_command_vector_table_base_set_t*/
-};
-
-/** @} */
-
-/** @addtogroup NRF_MBR_TYPES Types
- * @{ */
-
-/**@brief This command copies part of a new SoftDevice
- * The destination area is erased before copying. 
- * If dst is in the middle of a flash page, that whole flash page will be erased.
- * If (dst+len) is in the middle of a flash page, that whole flash page will be erased.
- * 
- * The user of this function is responsible for setting the PROTENSET registers.
- * 
- * @retval ::NRF_SUCCESS indicates that the contents of the memory blocks where copied correctly.
- * @retval ::NRF_ERROR_INTERNAL indicates that the contents of the memory blocks where not verified correctly after copying.
- */
-typedef struct
-{
-  uint32_t *src;  /**< Pointer to the source of data to be copied.*/
-  uint32_t *dst;  /**< Pointer to the destination where the content is to be copied.*/
-  uint32_t len;   /**< Number of 32 bit words to copy. Must be a multiple of 256 words*/
-}sd_mbr_command_copy_sd_t;
-
-
-/**@brief This command works like memcmp, but takes the length in words.
- *
- * @retval ::NRF_SUCCESS indicates that the contents of both memory blocks are equal.
- * @retval ::NRF_ERROR_NULL indicates that the contents of the memory blocks are not equal.
- */
-typedef struct
-{
-  uint32_t *ptr1; /**< Pointer to block of memory */
-  uint32_t *ptr2; /**< Pointer to block of memory */
-  uint32_t len;   /**< Number of 32 bit words to compare*/
-}sd_mbr_command_compare_t;
-
-
-/**@brief This command copies a new BootLoader.
- *  With this command, destination of BootLoader is always the address written in NRF_UICR->BOOTADDR.
- *
- *  Destination is erased by this function.
- *  If (destination+bl_len) is in the middle of a flash page, that whole flash page will be erased.
- *
- *  This function will use PROTENSET to protect the flash that is not intended to be written.
- * 
- *  On Success, this function will not return. It will start the new BootLoader from reset-vector as normal.
- *
- * @retval ::NRF_ERROR_INVALID_STATE indicates that something was wrong.
- * @retval ::NRF_ERROR_INTERNAL indicates an internal error that should not happen.
- * @retval ::NRF_ERROR_FORBIDDEN if NRF_UICR->BOOTADDR is not set
- * @retval ::NRF_ERROR_INVALID_LENGTH is invalid.
- */
-typedef struct
-{
-  uint32_t *bl_src;  /**< Pointer to the source of the Bootloader to be be copied.*/
-  uint32_t bl_len;   /**< Number of 32 bit words to copy for BootLoader */
-}sd_mbr_command_copy_bl_t;
-
-/**@brief Sets the base address of the interrupt vector table for interrupts forwarded from the MBR
- * 
- * Once this function has been called, this address is where the MBR will start to forward interrupts to after a reset.
- *
- * To restore default forwarding thiss function should be called with @param address set to 0.
- * The MBR will then start forwarding to interrupts to the adress in NFR_UICR->BOOTADDR or to the SoftDevice if the BOOTADDR is not set.
- *
- * @retval ::NRF_SUCCESS
- */
-typedef struct
-{ 
-  uint32_t address; /**< The base address of the interrupt vector table for forwarded interrupts.*/
-}sd_mbr_command_vector_table_base_set_t;
-
-typedef struct
-{
-  uint32_t command;  /**< type of command to be issued see @ref NRF_MBR_COMMANDS. */
-  union 
-  {
-    sd_mbr_command_copy_sd_t copy_sd;  /**< Parameters for copy*/
-    sd_mbr_command_copy_bl_t copy_bl;  /**< Parameters for copy SoftDevice and BootLoader*/
-    sd_mbr_command_compare_t compare;  /**< Parameters for verify*/
-    sd_mbr_command_vector_table_base_set_t base_set; /**< Parameters for vector table base set.*/
-  } params;
-}sd_mbr_command_t;
-
-/** @} */
-
-/** @addtogroup NRF_MBR_FUNCTIONS Functions
- * @{ */
-
-/**@brief Issue Master Boot Record commands
- *
- * Commands used when updating a SoftDevice and bootloader
- *
- * @param[in]  param Pointer to a struct describing the command
- *
- *@note for retvals see ::sd_mbr_command_copy_sd_t ::sd_mbr_command_copy_bl_t ::sd_mbr_command_compare_t
-
-*/
-SVCALL(SD_MBR_COMMAND, uint32_t, sd_mbr_command(sd_mbr_command_t* param));
-
-/** @} */
-#endif // NRF_MBR_H__
-
-/**
-  @}
-*/
--- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/nrf_sdm.h	Fri Oct 17 14:00:07 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,167 +0,0 @@
-/*
- * Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved.
- *
- * The information contained herein is confidential property of Nordic Semiconductor. The use,
- * copying, transfer or disclosure of such information is prohibited except by express written
- * agreement with Nordic Semiconductor.
- *
- */
-/**
-  @defgroup nrf_sdm_api SoftDevice Manager API
-  @{
-     
-  @brief APIs for SoftDevice management.
- 
-*/
-
-/* Header guard */
-#ifndef NRF_SDM_H__
-#define NRF_SDM_H__
-
-#include "nrf_svc.h"
-#include "nrf51.h"
-#include "nrf_soc.h"
-#include "nrf_error_sdm.h"
-
-/** @addtogroup NRF_SDM_DEFINES Defines
- * @{ */
-
-/**@brief SoftDevice Manager SVC Base number. */
-#define SDM_SVC_BASE  (0x10)
-
-/** @} */
-
-/** @addtogroup NRF_SDM_ENUMS Enumerations
- * @{ */
-
-/**@brief nRF SoftDevice Manager API SVC numbers. */
-enum NRF_SD_SVCS
-{
-  SD_SOFTDEVICE_ENABLE = SDM_SVC_BASE, /**< ::sd_softdevice_enable */
-  SD_SOFTDEVICE_DISABLE,               /**< ::sd_softdevice_disable */
-  SD_SOFTDEVICE_IS_ENABLED,            /**< ::sd_softdevice_is_enabled */
-  SD_SOFTDEVICE_VECTOR_TABLE_BASE_SET, /**< ::sd_softdevice_vector_table_base_set */
-  SVC_SDM_LAST                         /**< Placeholder for last SDM SVC */
-};
-
-/**@brief Possible lfclk oscillator sources. */
-enum NRF_CLOCK_LFCLKSRCS
-{
-  NRF_CLOCK_LFCLKSRC_SYNTH_250_PPM,                       /**< LFCLK Synthesized from HFCLK.                    */
-  NRF_CLOCK_LFCLKSRC_XTAL_500_PPM,                        /**< LFCLK crystal oscillator 500 PPM accuracy.       */
-  NRF_CLOCK_LFCLKSRC_XTAL_250_PPM,                        /**< LFCLK crystal oscillator 250 PPM accuracy.       */
-  NRF_CLOCK_LFCLKSRC_XTAL_150_PPM,                        /**< LFCLK crystal oscillator 150 PPM accuracy.       */
-  NRF_CLOCK_LFCLKSRC_XTAL_100_PPM,                        /**< LFCLK crystal oscillator 100 PPM accuracy.       */
-  NRF_CLOCK_LFCLKSRC_XTAL_75_PPM,                         /**< LFCLK crystal oscillator 75 PPM accuracy.        */
-  NRF_CLOCK_LFCLKSRC_XTAL_50_PPM,                         /**< LFCLK crystal oscillator 50 PPM accuracy.        */
-  NRF_CLOCK_LFCLKSRC_XTAL_30_PPM,                         /**< LFCLK crystal oscillator 30 PPM accuracy.        */
-  NRF_CLOCK_LFCLKSRC_XTAL_20_PPM,                         /**< LFCLK crystal oscillator 20 PPM accuracy.        */
-  NRF_CLOCK_LFCLKSRC_RC_250_PPM_250MS_CALIBRATION,        /**< LFCLK RC oscillator, 250ms  calibration interval.*/
-  NRF_CLOCK_LFCLKSRC_RC_250_PPM_500MS_CALIBRATION,        /**< LFCLK RC oscillator, 500ms  calibration interval.*/
-  NRF_CLOCK_LFCLKSRC_RC_250_PPM_1000MS_CALIBRATION,       /**< LFCLK RC oscillator, 1000ms calibration interval.*/
-  NRF_CLOCK_LFCLKSRC_RC_250_PPM_2000MS_CALIBRATION,       /**< LFCLK RC oscillator, 2000ms calibration interval.*/
-  NRF_CLOCK_LFCLKSRC_RC_250_PPM_4000MS_CALIBRATION,       /**< LFCLK RC oscillator, 4000ms calibration interval.*/
-  NRF_CLOCK_LFCLKSRC_RC_250_PPM_8000MS_CALIBRATION,       /**< LFCLK RC oscillator, 8000ms calibration interval.*/
-  NRF_CLOCK_LFCLKSRC_RC_250_PPM_TEMP_1000MS_CALIBRATION,  /**< LFCLK RC oscillator. Temperature checked every 1000ms, if changed above a threshold, a calibration is done.*/
-  NRF_CLOCK_LFCLKSRC_RC_250_PPM_TEMP_2000MS_CALIBRATION,  /**< LFCLK RC oscillator. Temperature checked every 2000ms, if changed above a threshold, a calibration is done.*/
-  NRF_CLOCK_LFCLKSRC_RC_250_PPM_TEMP_4000MS_CALIBRATION,  /**< LFCLK RC oscillator. Temperature checked every 4000ms, if changed above a threshold, a calibration is done.*/
-  NRF_CLOCK_LFCLKSRC_RC_250_PPM_TEMP_8000MS_CALIBRATION,  /**< LFCLK RC oscillator. Temperature checked every 8000ms, if changed above a threshold, a calibration is done.*/
-  NRF_CLOCK_LFCLKSRC_RC_250_PPM_TEMP_16000MS_CALIBRATION, /**< LFCLK RC oscillator. Temperature checked every 16000ms, if changed above a threshold, a calibration is done.*/
-};
-
-/** @} */
-
-/** @addtogroup NRF_SDM_TYPES Types
- * @{ */
-
-/**@brief Type representing lfclk oscillator source. */
-typedef uint32_t nrf_clock_lfclksrc_t;
-
-
-/**@brief SoftDevice Assertion Handler type.
- *
- * When an unexpected error occurs within the SoftDevice it will call the SoftDevice assertion handler callback.
- * The protocol stack will be in an undefined state when this happens and the only way to recover will be to
- * perform a reset, using e.g. CMSIS NVIC_SystemReset().
- *
- * @note This callback is executed in HardFault context, thus SVC functions cannot be called from the SoftDevice assert callback.
- *       
- * @param[in] pc The program counter of the failed assert.
- * @param[in] line_number Line number where the assert failed.
- * @param[in] file_name File name where the assert failed.
- */
-typedef void (*softdevice_assertion_handler_t)(uint32_t pc, uint16_t line_number, const uint8_t * p_file_name);
-
-/** @} */
-
-/** @addtogroup NRF_SDM_FUNCTIONS Functions
- * @{ */
-
-/**@brief Enables the SoftDevice and by extension the protocol stack.
- *
- * Idempotent function to enable the SoftDevice.
- *
- * @note Some care must be taken if a low frequency clock source is already running when calling this function:
- *       If the LF clock has a different source then the one currently running, it will be stopped. Then, the new
- *       clock source will be started.
- *
- * @note This function has no effect when returning with an error.
- *
- * @post If return code is ::NRF_SUCCESS 
- *       - SoC library and protocol stack APIs are made available
- *       - A portion of RAM will be unavailable (see relevant SDS documentation)
- *       - Some peripherals will be unavailable or available only through the SoC API (see relevant SDS documentation)
- *       - Interrupts will not arrive from protected peripherals or interrupts
- *       - nrf_nvic_ functions must be used instead of CMSIS NVIC_ functions for reliable usage of the softdevice.
- *       - Interrupt latency may be affected by the SoftDevice  (see relevant SDS documentation)
- *       - Chosen low frequency clock source will be running
- *
- * @param clock_source Low frequency clock source and accuracy. (Note: In the case of XTAL source, the PPM accuracy of the chosen clock source must be greater than or equal to the actual characteristics of your XTAL clock).
- * @param assertion_handler Callback for SoftDevice assertions.
- *
- * @retval ::NRF_SUCCESS
- * @retval ::NRF_ERROR_SDM_INCORRECT_INTERRUPT_CONFIGURATION SoftDeviceinterrupt is already enabled, or an enabled interrupt has an illegal priority level
- * @retval ::NRF_ERROR_SDM_LFCLK_SOURCE_UNKNOWN Unknown low frequency clock source selected
- */
-SVCALL(SD_SOFTDEVICE_ENABLE, uint32_t, sd_softdevice_enable(nrf_clock_lfclksrc_t clock_source, softdevice_assertion_handler_t assertion_handler));
-
-/**@brief Disables the SoftDevice and by extension the protocol stack.
- * 
- * Idempotent function to disable the SoftDevice.
- *
- * @post SoC library and protocol stack APIs are made unavailable.
- * @post All interrupts that was protected by the SoftDevice will be disabled and initialized to priority 0 (highest).
- * @post All peripherals used by the SoftDevice will be reset to default values.
- * @post All of RAM become available.
- * @post All interrupts are forwarded to the application.
- * @post LFCLK source chosen in ::sd_softdevice_enable will be left running.
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_SOFTDEVICE_DISABLE, uint32_t, sd_softdevice_disable(void));
-
-/**@brief Check if the SoftDevice is enabled.
- *
- * @param[out]  p_softdevice_enabled If the SoftDevice is enabled: 1 else 0.
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_SOFTDEVICE_IS_ENABLED, uint32_t, sd_softdevice_is_enabled(uint8_t * p_softdevice_enabled));
-
-/**@brief Sets the base address of the interrupt vector table for interrupts forwarded from the SoftDevice
- * 
- * This function is only intended to be called when a bootloader is enabled.
- *
- * @param[in] address The base address of the interrupt vector table for forwarded interrupts.
- 
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_SOFTDEVICE_VECTOR_TABLE_BASE_SET, uint32_t, sd_softdevice_vector_table_base_set(uint32_t address)); 
-
-/** @} */
-
-#endif // NRF_SDM_H__
-
-/**
-  @}
-*/
--- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/nrf_soc.h	Fri Oct 17 14:00:07 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,958 +0,0 @@
-/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved.
- *
- * The information contained herein is confidential property of Nordic Semiconductor. The use,
- * copying, transfer or disclosure of such information is prohibited except by express written
- * agreement with Nordic Semiconductor.
- *
- */
- 
-/**
- * @defgroup nrf_soc_api SoC Library API
- * @{
- * 
- * @brief APIs for the SoC library.
- * 
-*/
-
-#ifndef NRF_SOC_H__
-#define NRF_SOC_H__
-
-#include <stdint.h>
-#include <stdbool.h>
-#include "nrf_svc.h"
-#include "nrf51.h"
-#include "nrf51_bitfields.h"
-#include "nrf_error_soc.h"
-
-/** @addtogroup NRF_SOC_DEFINES Defines
- * @{ */
-
-/**@brief The number of the lowest SVC number reserved for the SoC library. */
-#define SOC_SVC_BASE               (0x20)
-#define SOC_SVC_BASE_NOT_AVAILABLE (0x23)
-
-/**@brief Guranteed time for application to process radio inactive notification. */
-#define NRF_RADIO_NOTIFICATION_INACTIVE_GUARANTEED_TIME_US  (62)
-
-/**@brief The minimum allowed timeslot extension time. */
-#define NRF_RADIO_MINIMUM_TIMESLOT_LENGTH_EXTENSION_TIME_US (200)
-
-#define SOC_ECB_KEY_LENGTH            (16)                       /**< ECB key length. */
-#define SOC_ECB_CLEARTEXT_LENGTH      (16)                       /**< ECB cleartext length. */
-#define SOC_ECB_CIPHERTEXT_LENGTH     (SOC_ECB_CLEARTEXT_LENGTH) /**< ECB ciphertext length. */
-
-#define SD_EVT_IRQn                   (SWI2_IRQn)        /**< SoftDevice Event IRQ number. Used for both protocol events and SoC events. */
-#define SD_EVT_IRQHandler             (SWI2_IRQHandler)  /**< SoftDevice Event IRQ handler. Used for both protocol events and SoC events. */
-#define RADIO_NOTIFICATION_IRQn       (SWI1_IRQn)        /**< The radio notification IRQ number. */
-#define RADIO_NOTIFICATION_IRQHandler (SWI1_IRQHandler)  /**< The radio notification IRQ handler. */
-
-#define NRF_RADIO_LENGTH_MIN_US       (100)               /**< The shortest allowed radio timeslot, in microseconds. */
-#define NRF_RADIO_LENGTH_MAX_US       (100000)            /**< The longest allowed radio timeslot, in microseconds. */
-
-#define NRF_RADIO_DISTANCE_MAX_US         (128000000UL - 1UL) /**< The longest timeslot distance, in microseconds, allowed for the distance parameter (see @ref nrf_radio_request_normal_t) in the request. */
-
-#define NRF_RADIO_EARLIEST_TIMEOUT_MAX_US (128000000UL - 1UL) /**< The longest timeout, in microseconds, allowed when requesting the earliest possible timeslot. */
-
-#define NRF_RADIO_START_JITTER_US     (2)                 /**< The maximum jitter in NRF_RADIO_CALLBACK_SIGNAL_TYPE_START relative to the requested start time. */
-
-/** @} */
-
-/** @addtogroup NRF_SOC_TYPES Types
- * @{ */
-
-/**@brief The SVC numbers used by the SVC functions in the SoC library. */
-enum NRF_SOC_SVCS
-{
-  SD_FLASH_PAGE_ERASE = SOC_SVC_BASE,
-  SD_FLASH_WRITE,
-  SD_FLASH_PROTECT,
-  SD_MUTEX_NEW = SOC_SVC_BASE_NOT_AVAILABLE,
-  SD_MUTEX_ACQUIRE,
-  SD_MUTEX_RELEASE,
-  SD_NVIC_ENABLEIRQ,
-  SD_NVIC_DISABLEIRQ,
-  SD_NVIC_GETPENDINGIRQ,
-  SD_NVIC_SETPENDINGIRQ,
-  SD_NVIC_CLEARPENDINGIRQ,
-  SD_NVIC_SETPRIORITY,
-  SD_NVIC_GETPRIORITY,
-  SD_NVIC_SYSTEMRESET,
-  SD_NVIC_CRITICAL_REGION_ENTER,
-  SD_NVIC_CRITICAL_REGION_EXIT,
-  SD_RAND_APPLICATION_POOL_CAPACITY,
-  SD_RAND_APPLICATION_BYTES_AVAILABLE,
-  SD_RAND_APPLICATION_GET_VECTOR,
-  SD_POWER_MODE_SET,
-  SD_POWER_SYSTEM_OFF,
-  SD_POWER_RESET_REASON_GET,
-  SD_POWER_RESET_REASON_CLR,
-  SD_POWER_POF_ENABLE,
-  SD_POWER_POF_THRESHOLD_SET,
-  SD_POWER_RAMON_SET,
-  SD_POWER_RAMON_CLR,
-  SD_POWER_RAMON_GET,
-  SD_POWER_GPREGRET_SET,
-  SD_POWER_GPREGRET_CLR,
-  SD_POWER_GPREGRET_GET,
-  SD_POWER_DCDC_MODE_SET,
-  SD_APP_EVT_WAIT,
-  SD_CLOCK_HFCLK_REQUEST,
-  SD_CLOCK_HFCLK_RELEASE,
-  SD_CLOCK_HFCLK_IS_RUNNING,
-  SD_PPI_CHANNEL_ENABLE_GET,
-  SD_PPI_CHANNEL_ENABLE_SET,
-  SD_PPI_CHANNEL_ENABLE_CLR,
-  SD_PPI_CHANNEL_ASSIGN,
-  SD_PPI_GROUP_TASK_ENABLE,
-  SD_PPI_GROUP_TASK_DISABLE,
-  SD_PPI_GROUP_ASSIGN,
-  SD_PPI_GROUP_GET,
-  SD_RADIO_NOTIFICATION_CFG_SET,
-  SD_ECB_BLOCK_ENCRYPT,
-  SD_RADIO_SESSION_OPEN,
-  SD_RADIO_SESSION_CLOSE,
-  SD_RADIO_REQUEST,
-  SD_EVT_GET,
-  SD_TEMP_GET,
-  SVC_SOC_LAST
-};
-
-/**@brief Possible values of a ::nrf_mutex_t. */
-enum NRF_MUTEX_VALUES
-{
-  NRF_MUTEX_FREE,
-  NRF_MUTEX_TAKEN
-};
-
-/**@brief Possible values of ::nrf_app_irq_priority_t. */
-enum NRF_APP_PRIORITIES
-{
-  NRF_APP_PRIORITY_HIGH = 1,
-  NRF_APP_PRIORITY_LOW = 3
-};
-
-/**@brief Possible values of ::nrf_power_mode_t. */
-enum NRF_POWER_MODES
-{
-  NRF_POWER_MODE_CONSTLAT,  /**< Constant latency mode. See power management in the reference manual. */
-  NRF_POWER_MODE_LOWPWR     /**< Low power mode. See power management in the reference manual. */
-};
-
-
-/**@brief Possible values of ::nrf_power_failure_threshold_t */
-enum NRF_POWER_THRESHOLDS
-{
-  NRF_POWER_THRESHOLD_V21,  /**< 2.1 Volts power failure threshold. */
-  NRF_POWER_THRESHOLD_V23,  /**< 2.3 Volts power failure threshold. */
-  NRF_POWER_THRESHOLD_V25,  /**< 2.5 Volts power failure threshold. */ 
-  NRF_POWER_THRESHOLD_V27   /**< 2.7 Volts power failure threshold. */
-};
-
-
-/**@brief Possible values of ::nrf_power_dcdc_mode_t. */
-enum NRF_POWER_DCDC_MODES
-{
-  NRF_POWER_DCDC_MODE_OFF,          /**< The DCDC is always off. */
-  NRF_POWER_DCDC_MODE_ON,           /**< The DCDC is always on. */
-  NRF_POWER_DCDC_MODE_AUTOMATIC     /**< The DCDC is automatically managed. */
-};
-
-/**@brief Possible values of ::nrf_radio_notification_distance_t. */
-enum NRF_RADIO_NOTIFICATION_DISTANCES
-{
-  NRF_RADIO_NOTIFICATION_DISTANCE_NONE = 0, /**< The event does not have a notification. */
-  NRF_RADIO_NOTIFICATION_DISTANCE_800US,    /**< The distance from the active notification to start of radio activity. */
-  NRF_RADIO_NOTIFICATION_DISTANCE_1740US,   /**< The distance from the active notification to start of radio activity. */
-  NRF_RADIO_NOTIFICATION_DISTANCE_2680US,   /**< The distance from the active notification to start of radio activity. */
-  NRF_RADIO_NOTIFICATION_DISTANCE_3620US,   /**< The distance from the active notification to start of radio activity. */
-  NRF_RADIO_NOTIFICATION_DISTANCE_4560US,   /**< The distance from the active notification to start of radio activity. */
-  NRF_RADIO_NOTIFICATION_DISTANCE_5500US    /**< The distance from the active notification to start of radio activity. */
-};
-
-
-/**@brief Possible values of ::nrf_radio_notification_type_t. */
-enum NRF_RADIO_NOTIFICATION_TYPES
-{
-  NRF_RADIO_NOTIFICATION_TYPE_NONE = 0,        /**< The event does not have a radio notification signal. */
-  NRF_RADIO_NOTIFICATION_TYPE_INT_ON_ACTIVE,   /**< Using interrupt for notification when the radio will be enabled. */
-  NRF_RADIO_NOTIFICATION_TYPE_INT_ON_INACTIVE, /**< Using interrupt for notification when the radio has been disabled. */
-  NRF_RADIO_NOTIFICATION_TYPE_INT_ON_BOTH,     /**< Using interrupt for notification both when the radio will be enabled and disabled. */
-};
-
-/**@brief SoC Events. */
-enum NRF_SOC_EVTS
-{
-  NRF_EVT_HFCLKSTARTED,                         /**< Event indicating that the HFCLK has started. */
-  NRF_EVT_POWER_FAILURE_WARNING,                /**< Event indicating that a power failure warning has occurred. */
-  NRF_EVT_FLASH_OPERATION_SUCCESS,              /**< Event indicating that the ongoing flash operation has completed successfully. */
-  NRF_EVT_FLASH_OPERATION_ERROR,                /**< Event indicating that the ongoing flash operation has timed out with an error. */
-  NRF_EVT_RADIO_BLOCKED,                        /**< Event indicating that a radio timeslot was blocked. */
-  NRF_EVT_RADIO_CANCELED,                       /**< Event indicating that a radio timeslot was canceled by SoftDevice. */
-  NRF_EVT_RADIO_SIGNAL_CALLBACK_INVALID_RETURN, /**< Event indicating that a radio signal callback handler return was invalid. */
-  NRF_EVT_RADIO_SESSION_IDLE,                   /**< Event indicating that a radio session is idle. */
-  NRF_EVT_RADIO_SESSION_CLOSED,                 /**< Event indicating that a radio session is closed. */
-  NRF_EVT_NUMBER_OF_EVTS
-};
-
-/** @} */
-
-/** @addtogroup NRF_SOC_TYPES Types
- * @{ */
-
-/**@brief Represents a mutex for use with the nrf_mutex functions.
- * @note Accessing the value directly is not safe, use the mutex functions!
- */
-typedef volatile uint8_t nrf_mutex_t;
-
-/**@brief The interrupt priorities available to the application while the softdevice is active. */
-typedef uint8_t nrf_app_irq_priority_t;
-
-/**@brief Represents a power mode, used in power mode functions */
-typedef uint8_t nrf_power_mode_t;
-
-/**@brief Represents a power failure threshold value. */
-typedef uint8_t nrf_power_failure_threshold_t;
-
-/**@brief Represents a DCDC mode value. */
-typedef uint32_t nrf_power_dcdc_mode_t;
-
-/**@brief Radio notification distances. */
-typedef uint8_t nrf_radio_notification_distance_t;
-
-/**@brief Radio notification types. */
-typedef uint8_t nrf_radio_notification_type_t;
-
-/** @brief The Radio signal callback types. */
-enum NRF_RADIO_CALLBACK_SIGNAL_TYPE
-{
-  NRF_RADIO_CALLBACK_SIGNAL_TYPE_START,            /**< This signal indicates the start of the radio timeslot. */
-  NRF_RADIO_CALLBACK_SIGNAL_TYPE_TIMER0,            /**< This signal indicates the NRF_TIMER0 interrupt. */
-  NRF_RADIO_CALLBACK_SIGNAL_TYPE_RADIO,             /**< This signal indicates the NRF_RADIO interrupt. */
-  NRF_RADIO_CALLBACK_SIGNAL_TYPE_EXTEND_FAILED,     /**< This signal indicates extend action failed. */
-  NRF_RADIO_CALLBACK_SIGNAL_TYPE_EXTEND_SUCCEEDED   /**< This signal indicates extend action succeeded. */
-};
-
-/** @brief The actions requested by the signal callback.
- *
- *  This code gives the SOC instructions about what action to take when the signal callback has
- *  returned.
- */
-enum NRF_RADIO_SIGNAL_CALLBACK_ACTION
-{
-  NRF_RADIO_SIGNAL_CALLBACK_ACTION_NONE,            /**< Return without action. */
-  NRF_RADIO_SIGNAL_CALLBACK_ACTION_EXTEND,          /**< Request an extension of the current timeslot (maximum execution time for this action is when the extension succeeded). */
-  NRF_RADIO_SIGNAL_CALLBACK_ACTION_END,             /**< End the current radio timeslot. */
-  NRF_RADIO_SIGNAL_CALLBACK_ACTION_REQUEST_AND_END  /**< Request a new radio timeslot and end the current timeslot. */
-};
-
-/**@brief Radio timeslot high frequency clock source configuration. */
-enum NRF_RADIO_HFCLK_CFG
-{
-  NRF_RADIO_HFCLK_CFG_DEFAULT,                      /**< Use the currently selected oscillator as HF clock source during the timeslot (i.e. the source is not specified). */
-  NRF_RADIO_HFCLK_CFG_FORCE_XTAL,                   /**< Force external crystal to be used as HF clock source during whole the timeslot. */
-};
-
-/** @brief Radio timeslot priorities. */
-enum NRF_RADIO_PRIORITY
-{
-  NRF_RADIO_PRIORITY_HIGH,                          /**< High (equal priority as the normal connection priority of the SoftDevice stack(s)). */
-  NRF_RADIO_PRIORITY_NORMAL,                        /**< Normal (equal priority as the priority of secondary activites of the SoftDevice stack(s)). */
-};
-
-/** @brief Radio timeslot request type. */
-enum NRF_RADIO_REQUEST_TYPE
-{
-  NRF_RADIO_REQ_TYPE_EARLIEST,                      /**< Request timeslot as early as possible. This should always be used for the first request in a session. */
-  NRF_RADIO_REQ_TYPE_NORMAL                         /**< Normal timeslot request. */
-};
-
-/** @brief Parameters for a request for a timeslot as early as possible. */
-typedef struct
-{
-  uint8_t       hfclk;                              /**< High frequency clock source, see @ref NRF_RADIO_HFCLK_CFG. */
-  uint8_t       priority;                           /**< The radio timeslot priority, see @ref NRF_RADIO_PRIORITY. */
-  uint32_t      length_us;                          /**< The radio timeslot length (in the range 100 to 100,000] microseconds). */
-  uint32_t      timeout_us;                         /**< Longest acceptable delay until the start of the requested timeslot (up to @ref NRF_RADIO_EARLIEST_TIMEOUT_MAX_US microseconds). */
-} nrf_radio_request_earliest_t;
-
-/** @brief Parameters for a normal radio request. */
-typedef struct
-{
-  uint8_t       hfclk;                              /**< High frequency clock source, see @ref NRF_RADIO_HFCLK_CFG. */
-  uint8_t       priority;                           /**< The radio timeslot priority, see @ref NRF_RADIO_PRIORITY. */
-  uint32_t      distance_us;                        /**< Distance from the start of the previous radio timeslot (up to @ref NRF_RADIO_DISTANCE_MAX_US microseconds). */
-  uint32_t      length_us;                          /**< The radio timeslot length (in the range [100..100,000] microseconds). */
-} nrf_radio_request_normal_t;
-
-/** @brief Radio request parameters. */
-typedef struct
-{
-  uint8_t                         request_type;     /**< Type of request, see @ref NRF_RADIO_REQUEST_TYPE. */
-  union
-  {
-    nrf_radio_request_earliest_t  earliest;         /**< Parameters for a request for a timeslot as early as possible. */
-    nrf_radio_request_normal_t    normal;           /**< Parameters for a normal radio request. */
-  } params;
-} nrf_radio_request_t;
-
-/**@brief Return parameters of the radio timeslot signal callback. */
-typedef struct
-{
-  uint8_t               callback_action;            /**< The action requested by the application when returning from the signal callback, see @ref NRF_RADIO_SIGNAL_CALLBACK_ACTION. */
-  union
-  {
-    struct
-    {
-      nrf_radio_request_t * p_next;                 /**< The request parameters for the next radio timeslot. */
-    } request;                                      /**< Additional parameters for return_code @ref NRF_RADIO_SIGNAL_CALLBACK_ACTION_REQUEST_AND_END. */
-    struct
-    {
-      uint32_t              length_us;              /**< Requested extension of the timeslot duration (microseconds) (for minimum time see @ref NRF_RADIO_MINIMUM_TIMESLOT_LENGTH_EXTENSION_TIME_US). */
-    } extend;                                       /**< Additional parameters for return_code @ref NRF_RADIO_SIGNAL_CALLBACK_ACTION_EXTEND. */
-  } params;
-} nrf_radio_signal_callback_return_param_t;
-
-/**@brief The radio signal callback type.
- *
- * @note In case of invalid return parameters, the radio timeslot will automatically end
- *       immediately after returning from the signal callback and the
- *       @ref NRF_EVT_RADIO_SIGNAL_CALLBACK_INVALID_RETURN event will be sent.
- * @note The returned struct pointer must remain valid after the signal callback
- *       function returns. For instance, this means that it must not point to a stack variable.
- *
- * @param[in] signal_type Type of signal, see @ref NRF_RADIO_CALLBACK_SIGNAL_TYPE.
- *
- * @return Pointer to structure containing action requested by the application.
- */
-typedef nrf_radio_signal_callback_return_param_t * (*nrf_radio_signal_callback_t) (uint8_t signal_type);
-
-/**@brief AES ECB data structure */
-typedef struct
-{
-  uint8_t key[SOC_ECB_KEY_LENGTH];                  /**< Encryption key. */
-  uint8_t cleartext[SOC_ECB_CLEARTEXT_LENGTH];      /**< Clear Text data. */
-  uint8_t ciphertext[SOC_ECB_CIPHERTEXT_LENGTH];    /**< Cipher Text data. */
-} nrf_ecb_hal_data_t;
-
-/** @} */
-
-/** @addtogroup NRF_SOC_FUNCTIONS Functions
- * @{ */
-
-/**@brief Initialize a mutex.
- *
- * @param[in] p_mutex Pointer to the mutex to initialize.
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_MUTEX_NEW, uint32_t, sd_mutex_new(nrf_mutex_t * p_mutex));
-
-/**@brief Attempt to acquire a mutex.
- *
- * @param[in] p_mutex Pointer to the mutex to acquire.
- *
- * @retval ::NRF_SUCCESS The mutex was successfully acquired.
- * @retval ::NRF_ERROR_SOC_MUTEX_ALREADY_TAKEN The mutex could not be acquired.
- */
-SVCALL(SD_MUTEX_ACQUIRE, uint32_t, sd_mutex_acquire(nrf_mutex_t * p_mutex));
-
-/**@brief Release a mutex.
- *
- * @param[in] p_mutex Pointer to the mutex to release.
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_MUTEX_RELEASE, uint32_t, sd_mutex_release(nrf_mutex_t * p_mutex));
-
-/**@brief Enable External Interrupt.
- * @note Corresponds to NVIC_EnableIRQ in CMSIS.
- *
- * @pre{IRQn is valid and not reserved by the stack}
- *
- * @param[in] IRQn See the NVIC_EnableIRQ documentation in CMSIS.
- *
- * @retval ::NRF_SUCCESS The interrupt was enabled.
- * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE The interrupt is not available for the application.
- * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED The interrupt has a priority not available for the application.
- */
-SVCALL(SD_NVIC_ENABLEIRQ, uint32_t, sd_nvic_EnableIRQ(IRQn_Type IRQn));
-
-/**@brief  Disable External Interrupt.
- * @note Corresponds to NVIC_DisableIRQ in CMSIS.
- *
- * @pre{IRQn is valid and not reserved by the stack}
- *
- * @param[in] IRQn See the NVIC_DisableIRQ documentation in CMSIS
- *
- * @retval ::NRF_SUCCESS The interrupt was disabled.
- * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE The interrupt is not available for the application.
- */
-SVCALL(SD_NVIC_DISABLEIRQ, uint32_t, sd_nvic_DisableIRQ(IRQn_Type IRQn));
-
-/**@brief  Get Pending Interrupt.
- * @note Corresponds to NVIC_GetPendingIRQ in CMSIS.
- *
- * @pre{IRQn is valid and not reserved by the stack}
- *
- * @param[in]   IRQn          See the NVIC_GetPendingIRQ documentation in CMSIS.
- * @param[out]  p_pending_irq Return value from NVIC_GetPendingIRQ.
- *
- * @retval ::NRF_SUCCESS The interrupt is available for the application.
- * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application.
- */
-SVCALL(SD_NVIC_GETPENDINGIRQ, uint32_t, sd_nvic_GetPendingIRQ(IRQn_Type IRQn, uint32_t * p_pending_irq));
-
-/**@brief  Set Pending Interrupt.
- * @note Corresponds to NVIC_SetPendingIRQ in CMSIS.
- *
- * @pre{IRQn is valid and not reserved by the stack}
- *
- * @param[in] IRQn See the NVIC_SetPendingIRQ documentation in CMSIS.
- *
- * @retval ::NRF_SUCCESS The interrupt is set pending.
- * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application.
- */
-SVCALL(SD_NVIC_SETPENDINGIRQ, uint32_t, sd_nvic_SetPendingIRQ(IRQn_Type IRQn));
-
-/**@brief  Clear Pending Interrupt.
- * @note Corresponds to NVIC_ClearPendingIRQ in CMSIS.
- *
- * @pre{IRQn is valid and not reserved by the stack}
- *
- * @param[in] IRQn See the NVIC_ClearPendingIRQ documentation in CMSIS.
- *
- * @retval ::NRF_SUCCESS The interrupt pending flag is cleared.
- * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application.
- */
-SVCALL(SD_NVIC_CLEARPENDINGIRQ, uint32_t, sd_nvic_ClearPendingIRQ(IRQn_Type IRQn));
-
-/**@brief Set Interrupt Priority.
- * @note Corresponds to NVIC_SetPriority in CMSIS.
- *
- * @pre{IRQn is valid and not reserved by the stack}
- * @pre{priority is valid and not reserved by the stack}
- *
- * @param[in] IRQn      See the NVIC_SetPriority documentation in CMSIS.
- * @param[in] priority  A valid IRQ priority for use by the application.
- *
- * @retval ::NRF_SUCCESS The interrupt and priority level is available for the application.
- * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application.
- * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED The interrupt priority is not available for the application.
- */
-SVCALL(SD_NVIC_SETPRIORITY, uint32_t, sd_nvic_SetPriority(IRQn_Type IRQn, nrf_app_irq_priority_t priority));
-
-/**@brief Get Interrupt Priority.
- * @note Corresponds to NVIC_GetPriority in CMSIS.
- *
- * @pre{IRQn is valid and not reserved by the stack}
- *
- * @param[in]  IRQn         See the NVIC_GetPriority documentation in CMSIS.
- * @param[out] p_priority   Return value from NVIC_GetPriority.
- *
- * @retval ::NRF_SUCCESS The interrupt priority is returned in p_priority.
- * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE - IRQn is not available for the application.
- */
-SVCALL(SD_NVIC_GETPRIORITY, uint32_t, sd_nvic_GetPriority(IRQn_Type IRQn, nrf_app_irq_priority_t * p_priority));
-
-/**@brief System Reset.
- * @note Corresponds to NVIC_SystemReset in CMSIS.
- *
- * @retval ::NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN
- */
-SVCALL(SD_NVIC_SYSTEMRESET, uint32_t, sd_nvic_SystemReset(void));
-
-/**@brief Enters critical region.
- *
- * @post Application interrupts will be disabled.
- * @sa sd_nvic_critical_region_exit
- *
- * @param[out]  p_is_nested_critical_region  1: If in a nested critical region.
- *                                           0: Otherwise.
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_NVIC_CRITICAL_REGION_ENTER, uint32_t, sd_nvic_critical_region_enter(uint8_t * p_is_nested_critical_region));
-
-/**@brief Exit critical region.
- *
- * @pre Application has entered a critical region using ::sd_nvic_critical_region_enter.
- * @post If not in a nested critical region, the application interrupts will restored to the state before ::sd_nvic_critical_region_enter was called. 
- *
- * @param[in] is_nested_critical_region If this is set to 1, the critical region won't be exited. @sa sd_nvic_critical_region_enter.
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_NVIC_CRITICAL_REGION_EXIT, uint32_t, sd_nvic_critical_region_exit(uint8_t is_nested_critical_region));
-
-/**@brief Query the capacity of the application random pool.
- *
- * @param[out] p_pool_capacity The capacity of the pool.
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_RAND_APPLICATION_POOL_CAPACITY, uint32_t, sd_rand_application_pool_capacity_get(uint8_t * p_pool_capacity));
-
-/**@brief Get number of random bytes available to the application.
- *
- * @param[out] p_bytes_available The number of bytes currently available in the pool.
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_RAND_APPLICATION_BYTES_AVAILABLE, uint32_t, sd_rand_application_bytes_available_get(uint8_t * p_bytes_available));
-
-/**@brief Get random bytes from the application pool.
- *
- * @param[out]  p_buff  Pointer to unit8_t buffer for storing the bytes.
- * @param[in]   length  Number of bytes to take from pool and place in p_buff.
- *
- * @retval ::NRF_SUCCESS The requested bytes were written to p_buff.
- * @retval ::NRF_ERROR_SOC_RAND_NOT_ENOUGH_VALUES No bytes were written to the buffer, because there were not enough bytes available.
-*/
-SVCALL(SD_RAND_APPLICATION_GET_VECTOR, uint32_t, sd_rand_application_vector_get(uint8_t * p_buff, uint8_t length));
-
-/**@brief Gets the reset reason register. 
- *
- * @param[out]  p_reset_reason  Contents of the NRF_POWER->RESETREAS register.
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_POWER_RESET_REASON_GET, uint32_t, sd_power_reset_reason_get(uint32_t * p_reset_reason));
-
-/**@brief Clears the bits of the reset reason register. 
- *
- * @param[in] reset_reason_clr_msk Contains the bits to clear from the reset reason register.
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_POWER_RESET_REASON_CLR, uint32_t, sd_power_reset_reason_clr(uint32_t reset_reason_clr_msk));
-
-/**@brief Sets the power mode when in CPU sleep.
- *
- * @param[in] power_mode The power mode to use when in CPU sleep. @sa sd_app_evt_wait
- *
- * @retval ::NRF_SUCCESS The power mode was set.
- * @retval ::NRF_ERROR_SOC_POWER_MODE_UNKNOWN The power mode was unknown.
- */
-SVCALL(SD_POWER_MODE_SET, uint32_t, sd_power_mode_set(nrf_power_mode_t power_mode));
-
-/**@brief Puts the chip in System OFF mode. 
- *
- * @retval ::NRF_ERROR_SOC_POWER_OFF_SHOULD_NOT_RETURN
- */
-SVCALL(SD_POWER_SYSTEM_OFF, uint32_t, sd_power_system_off(void));
-
-/**@brief Enables or disables the power-fail comparator.
- *
- * Enabling this will give a softdevice event (NRF_EVT_POWER_FAILURE_WARNING) when the power failure warning occurs.
- * The event can be retrieved with sd_evt_get();
- *
- * @param[in] pof_enable    True if the power-fail comparator should be enabled, false if it should be disabled.
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_POWER_POF_ENABLE, uint32_t, sd_power_pof_enable(uint8_t pof_enable));
-
-/**@brief Sets the power-fail threshold value.
- *
- * @param[in] threshold The power-fail threshold value to use.
- *
- * @retval ::NRF_SUCCESS The power failure threshold was set.
- * @retval ::NRF_ERROR_SOC_POWER_POF_THRESHOLD_UNKNOWN The power failure threshold is unknown.
- */
-SVCALL(SD_POWER_POF_THRESHOLD_SET, uint32_t, sd_power_pof_threshold_set(nrf_power_failure_threshold_t threshold));
-
-/**@brief Sets bits in the NRF_POWER->RAMON register.
- *
- * @param[in] ramon Contains the bits needed to be set in the NRF_POWER->RAMON register.
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_POWER_RAMON_SET, uint32_t, sd_power_ramon_set(uint32_t ramon));
-
-/** @brief Clears bits in the NRF_POWER->RAMON register.
- *
- * @param ramon Contains the bits needed to be cleared in the NRF_POWER->RAMON register.
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_POWER_RAMON_CLR, uint32_t, sd_power_ramon_clr(uint32_t ramon));
-
-/**@brief Get contents of NRF_POWER->RAMON register, indicates power status of ram blocks.
- *
- * @param[out] p_ramon Content of NRF_POWER->RAMON register.
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_POWER_RAMON_GET, uint32_t, sd_power_ramon_get(uint32_t * p_ramon));
-
-/**@brief Set bits in the NRF_POWER->GPREGRET register.
- *
- * @param[in] gpregret_msk Bits to be set in the GPREGRET register.
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_POWER_GPREGRET_SET, uint32_t, sd_power_gpregret_set(uint32_t gpregret_msk));
-
-/**@brief Clear bits in the NRF_POWER->GPREGRET register.
- *
- * @param[in] gpregret_msk Bits to be clear in the GPREGRET register.
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_POWER_GPREGRET_CLR, uint32_t, sd_power_gpregret_clr(uint32_t gpregret_msk));
-
-/**@brief Get contents of the NRF_POWER->GPREGRET register.
- *
- * @param[out] p_gpregret Contents of the GPREGRET register.
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_POWER_GPREGRET_GET, uint32_t, sd_power_gpregret_get(uint32_t *p_gpregret));
-
-/**@brief Sets the DCDC mode.
- *
- * Depending on the internal state of the SoftDevice, the mode change may not happen immediately.
- * The DCDC mode switch will be blocked when occurring in close proximity to radio transmissions. When
- * the radio transmission is done, the last mode will be used.
- *
- * @param[in] dcdc_mode The mode of the DCDC.
- *
- * @retval ::NRF_SUCCESS
- * @retval ::NRF_ERROR_INVALID_PARAM The DCDC mode is invalid.
- */
-SVCALL(SD_POWER_DCDC_MODE_SET, uint32_t, sd_power_dcdc_mode_set(nrf_power_dcdc_mode_t dcdc_mode));
-
-/**@brief Request the high frequency crystal oscillator.
- *
- * Will start the high frequency crystal oscillator, the startup time of the crystal varies
- * and the ::sd_clock_hfclk_is_running function can be polled to check if it has started.
- *
- * @see sd_clock_hfclk_is_running
- * @see sd_clock_hfclk_release
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_CLOCK_HFCLK_REQUEST, uint32_t, sd_clock_hfclk_request(void));
-
-/**@brief Releases the high frequency crystal oscillator.
- *
- * Will stop the high frequency crystal oscillator, this happens immediately.
- *
- * @see sd_clock_hfclk_is_running
- * @see sd_clock_hfclk_request
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_CLOCK_HFCLK_RELEASE, uint32_t, sd_clock_hfclk_release(void));
-
-/**@brief Checks if the high frequency crystal oscillator is running.
- *
- * @see sd_clock_hfclk_request
- * @see sd_clock_hfclk_release
- *
- * @param[out] p_is_running 1 if the external crystal oscillator is running, 0 if not.
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_CLOCK_HFCLK_IS_RUNNING, uint32_t, sd_clock_hfclk_is_running(uint32_t * p_is_running));
-
-/**@brief Waits for an application event.
- * 
- * An application event is either an application interrupt or a pended interrupt when the
- * interrupt is disabled. When the interrupt is enabled it will be taken immediately since
- * this function will wait in thread mode, then the execution will return in the application's
- * main thread. When an interrupt is disabled and gets pended it will return to the application's 
- * thread main. The application must ensure that the pended flag is cleared using 
- * ::sd_nvic_ClearPendingIRQ in order to sleep using this function. This is only necessary for
- * disabled interrupts, as the interrupt handler will clear the pending flag automatically for
- * enabled interrupts.
- *
- * In order to wake up from disabled interrupts, the SEVONPEND flag has to be set in the Cortex-M0
- * System Control Register (SCR). @sa CMSIS_SCB
- *
- * @note If an application interrupt has happened since the last time sd_app_evt_wait was
- *       called this function will return immediately and not go to sleep. This is to avoid race
- *       conditions that can occur when a flag is updated in the interrupt handler and processed
- *       in the main loop.
- *
- * @post An application interrupt has happened or a interrupt pending flag is set.
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_APP_EVT_WAIT, uint32_t, sd_app_evt_wait(void));
-
-/**@brief Get PPI channel enable register contents.
- *
- * @param[out] p_channel_enable The contents of the PPI CHEN register.
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_PPI_CHANNEL_ENABLE_GET, uint32_t, sd_ppi_channel_enable_get(uint32_t * p_channel_enable));
-
-/**@brief Set PPI channel enable register.
- *
- * @param[in] channel_enable_set_msk Mask containing the bits to set in the PPI CHEN register.
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_PPI_CHANNEL_ENABLE_SET, uint32_t, sd_ppi_channel_enable_set(uint32_t channel_enable_set_msk));
-
-/**@brief Clear PPI channel enable register.
- *
- * @param[in] channel_enable_clr_msk Mask containing the bits to clear in the PPI CHEN register.
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_PPI_CHANNEL_ENABLE_CLR, uint32_t, sd_ppi_channel_enable_clr(uint32_t channel_enable_clr_msk));
-
-/**@brief Assign endpoints to a PPI channel.
- *
- * @param[in] channel_num Number of the PPI channel to assign.
- * @param[in] evt_endpoint Event endpoint of the PPI channel.
- * @param[in] task_endpoint Task endpoint of the PPI channel.
- *
- * @retval ::NRF_ERROR_SOC_PPI_INVALID_CHANNEL The channel number is invalid.
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_PPI_CHANNEL_ASSIGN, uint32_t, sd_ppi_channel_assign(uint8_t channel_num, const volatile void * evt_endpoint, const volatile void * task_endpoint));
-
-/**@brief Task to enable a channel group.
- *
- * @param[in] group_num Number of the channel group.
- *
- * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_PPI_GROUP_TASK_ENABLE, uint32_t, sd_ppi_group_task_enable(uint8_t group_num));
-
-/**@brief Task to disable a channel group.
- *
- * @param[in] group_num Number of the PPI group.
- *
- * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid.
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_PPI_GROUP_TASK_DISABLE, uint32_t, sd_ppi_group_task_disable(uint8_t group_num));
-
-/**@brief Assign PPI channels to a channel group.
- *
- * @param[in] group_num Number of the channel group.
- * @param[in] channel_msk Mask of the channels to assign to the group.
- *
- * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid.
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_PPI_GROUP_ASSIGN, uint32_t, sd_ppi_group_assign(uint8_t group_num, uint32_t channel_msk));
-
-/**@brief Gets the PPI channels of a channel group.
- *
- * @param[in]   group_num Number of the channel group.
- * @param[out]  p_channel_msk Mask of the channels assigned to the group.
- *
- * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid.
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_PPI_GROUP_GET, uint32_t, sd_ppi_group_get(uint8_t group_num, uint32_t * p_channel_msk));
-
-/**@brief Configures the Radio Notification signal.
- *
- * @note
- *      - The notification signal latency depends on the interrupt priority settings of SWI used
- *        for notification signal.
- *      - In the period between the ACTIVE signal and the start of the Radio Event, the SoftDevice
- *        will interrupt the application to do Radio Event preparation.
- *      - Using the Radio Notification feature may limit the bandwidth, as the SoftDevice may have
- *        to shorten the connection events to have time for the Radio Notification signals.
- *
- * @param[in]  type      Type of notification signal.
- *                       @ref NRF_RADIO_NOTIFICATION_TYPE_NONE shall be used to turn off radio
- *                       notification. Using @ref NRF_RADIO_NOTIFICATION_DISTANCE_NONE is
- *                       recommended (but not required) to be used with
- *                       @ref NRF_RADIO_NOTIFICATION_TYPE_NONE.
- *
- * @param[in]  distance  Distance between the notification signal and start of radio activity.
- *                       This parameter is ignored when @ref NRF_RADIO_NOTIFICATION_TYPE_NONE or 
- *                       @ref NRF_RADIO_NOTIFICATION_TYPE_INT_ON_INACTIVE is used.
- *
- * @retval ::NRF_ERROR_INVALID_PARAM The group number is invalid.
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_RADIO_NOTIFICATION_CFG_SET, uint32_t, sd_radio_notification_cfg_set(nrf_radio_notification_type_t type, nrf_radio_notification_distance_t distance));
-
-/**@brief Encrypts a block according to the specified parameters.
- *
- * 128-bit AES encryption.
- *
- * @param[in, out] p_ecb_data Pointer to the ECB parameters' struct (two input
- *                            parameters and one output parameter).
- *
- * @retval ::NRF_SUCCESS
- */
-SVCALL(SD_ECB_BLOCK_ENCRYPT, uint32_t, sd_ecb_block_encrypt(nrf_ecb_hal_data_t * p_ecb_data));
-
-/**@brief Gets any pending events generated by the SoC API.
- *
- * The application should keep calling this function to get events, until ::NRF_ERROR_NOT_FOUND is returned.
- *
- * @param[out] p_evt_id Set to one of the values in @ref NRF_SOC_EVTS, if any events are pending.
- *
- * @retval ::NRF_SUCCESS An event was pending. The event id is written in the p_evt_id parameter.
- * @retval ::NRF_ERROR_NOT_FOUND No pending events. 
- */
-SVCALL(SD_EVT_GET, uint32_t, sd_evt_get(uint32_t * p_evt_id));
-
-/**@brief Get the temperature measured on the chip
- * 
- * This function will block until the temperature measurement is done.
- * It takes around 50us from call to return.
- *
- * @note Pan #28 in PAN-028 v 1.6 "Negative measured values are not represented correctly" is corrected by this function.
- *
- * @param[out] p_temp Result of temperature measurement. Die temperature in 0.25 degrees celsius.
- *
- * @retval ::NRF_SUCCESS A temperature measurement was done, and the temperature was written to temp
- */
-SVCALL(SD_TEMP_GET, uint32_t, sd_temp_get(int32_t * p_temp));
-
-/**@brief Flash Write
- *
- * Commands to write a buffer to flash
- *
- * This call initiates the flash access command, and its completion will be communicated to the
- * application with exactly one of the following events:
- *      - NRF_EVT_FLASH_OPERATION_SUCCESS - The command was successfully completed.
- *      - NRF_EVT_FLASH_OPERATION_ERROR   - The command could not be started.
- *
- * @note
- *      - This call takes control over the radio and the CPU during flash erase and write to make sure that
- *        they will not interfere with the flash access. This means that all interrupts will be blocked
- *        for a predictable time (depending on the NVMC specification in nRF51 Series Reference Manual
- *        and the command parameters).
- *
- *
- * @param[in]  p_dst Pointer to start of flash location to be written.
- * @param[in]  p_src Pointer to buffer with data to be written
- * @param[in]  size  Number of 32-bit words to write. Maximum size is 256 32bit words.
- *
- * @retval ::NRF_ERROR_INVALID_ADDR   Tried to write to a non existing flash address, or p_dst or p_src was unaligned.
- * @retval ::NRF_ERROR_BUSY           The previous command has not yet completed.
- * @retval ::NRF_ERROR_INVALID_LENGTH Size was 0, or more than 256 words.
- * @retval ::NRF_ERROR_FORBIDDEN      Tried to write to or read from protected location.
- * @retval ::NRF_SUCCESS              The command was accepted.
- */
-SVCALL(SD_FLASH_WRITE, uint32_t, sd_flash_write(uint32_t * const p_dst, uint32_t const * const p_src, uint32_t size));
-
-
-/**@brief Flash Erase page
- *
- * Commands to erase a flash page
- *
- * This call initiates the flash access command, and its completion will be communicated to the
- * application with exactly one of the following events:
- *      - NRF_EVT_FLASH_OPERATION_SUCCESS - The command was successfully completed.
- *      - NRF_EVT_FLASH_OPERATION_ERROR   - The command could not be started.
- *
- * @note
- *      - This call takes control over the radio and the CPU during flash erase and write to make sure that
- *        they will not interfere with the flash access. This means that all interrupts will be blocked
- *        for a predictable time (depending on the NVMC specification in nRF51 Series Reference Manual
- *        and the command parameters).
- *
- *
- * @param[in]  page_number Pagenumber of the page to erase
- * @retval ::NRF_ERROR_INTERNAL      If a new session could not be opened due to an internal error.
- * @retval ::NRF_ERROR_INVALID_ADDR  Tried to erase to a non existing flash page.
- * @retval ::NRF_ERROR_BUSY          The previous command has not yet completed.
- * @retval ::NRF_ERROR_FORBIDDEN     Tried to erase a protected page.
- * @retval ::NRF_SUCCESS             The command was accepted.
- */
-SVCALL(SD_FLASH_PAGE_ERASE, uint32_t, sd_flash_page_erase(uint32_t page_number));
-
-
-/**@brief Flash Protection set
- *
- * Commands to set the flash protection registers PROTENSETx
- *
- * @note To read the values in PROTENSETx you can read them directly. They are only write-protected.
- *
- * @param[in]  protenset0 Value to be written to PROTENSET0
- * @param[in]  protenset1 Value to be written to PROTENSET1
- *
- * @retval ::NRF_ERROR_FORBIDDEN Tried to protect the SoftDevice
- * @retval ::NRF_SUCCESS Values successfully written to PROTENSETx
- */
-SVCALL(SD_FLASH_PROTECT, uint32_t, sd_flash_protect(uint32_t protenset0, uint32_t protenset1));
-
-/**@brief Opens a session for radio requests.
- *
- * @note Only one session can be open at a time.
- * @note p_radio_signal_callback(NRF_RADIO_CALLBACK_SIGNAL_TYPE_START) will be called when the radio timeslot
- *       starts. From this point the NRF_RADIO and NRF_TIMER0 peripherals can be freely accessed
- *       by the application.
- * @note p_radio_signal_callback(NRF_RADIO_CALLBACK_SIGNAL_TYPE_TIMER0) is called whenever the NRF_TIMER0
- *       interrupt occurs.
- * @note p_radio_signal_callback(NRF_RADIO_CALLBACK_SIGNAL_TYPE_RADIO) is called whenever the NRF_RADIO
- *       interrupt occurs.
- * @note p_radio_signal_callback() will be called at ARM interrupt priority level 0. This
- *       implies that none of the sd_* API calls can be used from p_radio_signal_callback().
- *
- * @param[in] p_radio_signal_callback The signal callback.
- *
- * @retval ::NRF_ERROR_INVALID_ADDR p_radio_signal_callback is an invalid function pointer.
- * @retval ::NRF_ERROR_BUSY If session cannot be opened.
- * @retval ::NRF_ERROR_INTERNAL If a new session could not be opened due to an internal error.
- * @retval ::NRF_SUCCESS Otherwise.
- */
- SVCALL(SD_RADIO_SESSION_OPEN, uint32_t, sd_radio_session_open(nrf_radio_signal_callback_t p_radio_signal_callback));
-
-/**@brief Closes a session for radio requests.
- *
- * @note Any current radio timeslot will be finished before the session is closed.
- * @note If a radio timeslot is scheduled when the session is closed, it will be canceled.
- * @note The application cannot consider the session closed until the NRF_EVT_RADIO_SESSION_CLOSED
- *       event is received.
- *
- * @retval ::NRF_ERROR_FORBIDDEN If session not opened.
- * @retval ::NRF_ERROR_BUSY If session is currently being closed.
- * @retval ::NRF_SUCCESS Otherwise.
- */
- SVCALL(SD_RADIO_SESSION_CLOSE, uint32_t, sd_radio_session_close(void));
-
- /**@brief Requests a radio timeslot.
- *
- * @note The timing of the radio timeslot is specified by p_request->distance_us. For the first
- *       request in a session, p_request->distance_us is required to be 0 by convention, and
- *       the timeslot is scheduled at the first possible opportunity. All following radio timeslots are
- *       requested with a distance of p_request->distance_us measured from the start of the
- *       previous radio timeslot.
- * @note A too small p_request->distance_us will lead to a NRF_EVT_RADIO_BLOCKED event.
- * @note Timeslots scheduled too close will lead to a NRF_EVT_RADIO_BLOCKED event.
- * @note See the SoftDevice Specification for more on radio timeslot scheduling, distances and lengths.
- * @note If an opportunity for the first radio timeslot is not found before 100ms after the call to this
- *       function, it is not scheduled, and instead a NRF_EVT_RADIO_BLOCKED event is sent.
- *       The application may then try to schedule the first radio timeslot again.
- * @note Successful requests will result in nrf_radio_signal_callback_t(NRF_RADIO_CALLBACK_SIGNAL_TYPE_START).
- *       Unsuccessful requests will result in a NRF_EVT_RADIO_BLOCKED event, see @ref NRF_SOC_EVTS.
- * @note The jitter in the start time of the radio timeslots is +/- NRF_RADIO_START_JITTER_US us.
- * @note The nrf_radio_signal_callback_t(NRF_RADIO_CALLBACK_SIGNAL_TYPE_START) call has a latency relative to the
- *       specified radio timeslot start, but this does not affect the actual start time of the timeslot.
- * @note NRF_TIMER0 is reset at the start of the radio timeslot, and is clocked at 1MHz from the high frequency
- *       (16 MHz) clock source. If p_request->hfclk_force_xtal is true, the high frequency clock is 
- *       guaranteed to be clocked from the external crystal.
- * @note The SoftDevice will neither access the NRF_RADIO peripheral nor the NRF_TIMER0 peripheral
- *       during the radio timeslot.
- *
- * @param[in] p_request Pointer to the request parameters.
- *
- * @retval ::NRF_ERROR_FORBIDDEN If session not opened or the session is not IDLE.
- * @retval ::NRF_ERROR_INVALID_ADDR If the p_request pointer is invalid.
- * @retval ::NRF_ERROR_INVALID_PARAM If the parameters of p_request are not valid.
- * @retval ::NRF_SUCCESS Otherwise.
- */
- SVCALL(SD_RADIO_REQUEST, uint32_t, sd_radio_request(nrf_radio_request_t * p_request ));
-
-/** @} */
-
-#endif // NRF_SOC_H__
-
-/**@} */
--- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/nrf_svc.h	Fri Oct 17 14:00:07 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-#ifndef NRF_SVC__
-#define NRF_SVC__
-
-#ifdef SVCALL_AS_NORMAL_FUNCTION
-#define SVCALL(number, return_type, signature) return_type signature
-#else
-
-#ifndef SVCALL
-#if defined (__CC_ARM)
-#define SVCALL(number, return_type, signature) return_type __svc(number) signature
-#elif defined (__GNUC__)
-#define SVCALL(number, return_type, signature) \
-  _Pragma("GCC diagnostic ignored \"-Wreturn-type\"") \
-  _Pragma("GCC diagnostic ignored \"-Wunused-function\"") \
-  __attribute__((naked)) static return_type signature \
-  { \
-    __asm( \
-        "svc %0\n" \
-        "bx r14" : : "I" ((uint32_t)number) : "r0" \
-    ); \
-  }
-#elif defined (__ICCARM__)
-#define PRAGMA(x) _Pragma(#x)
-#define SVCALL(number, return_type, signature) \
-PRAGMA(swi_number = number) \
- __swi return_type signature;
-#else
-#define SVCALL(number, return_type, signature) return_type signature  
-#endif
-#endif  // SVCALL
-
-#endif  // SVCALL_AS_NORMAL_FUNCTION
-#endif  // NRF_SVC__
--- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_API/include/softdevice_assert.h	Fri Oct 17 14:00:07 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved.
- *
- * The information contained herein is confidential property of Nordic Semiconductor. The use,
- * copying, transfer or disclosure of such information is prohibited except by express written
- * agreement with Nordic Semiconductor.
- *
- */
-
-/** @brief Utilities for verifying program logic
- */
-
-#ifndef SOFTDEVICE_ASSERT_H_
-#define SOFTDEVICE_ASSERT_H_
-
-#include <stdint.h>
-
-/** @brief This function handles assertions.
- *
- *
- * @note
- * This function is called when an assertion has triggered.
- * 
- *
- * @param line_num The line number where the assertion is called
- * @param file_name Pointer to the file name
- */
-void assert_softdevice_callback(uint16_t line_num, const uint8_t *file_name);
-
-
-/*lint -emacro(506, ASSERT) */ /* Suppress "Constant value Boolean */ 
-/*lint -emacro(774, ASSERT) */ /* Suppress "Boolean within 'if' always evaluates to True" */ \
-/** @brief Check intended for production code
- *
- * Check passes if "expr" evaluates to true. */
-#define ASSERT(expr) \
-if (expr)                                                                     \
-{                                                                             \
-}                                                                             \
-else                                                                          \
-{                                                                             \
-  assert_softdevice_callback((uint16_t)__LINE__, (uint8_t *)__FILE__);        \
-  /*lint -unreachable */                                                      \
-}
-
-#endif /* SOFTDEVICE_ASSERT_H_ */
Binary file targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_licence_agreement.pdf has changed
Binary file targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_migration-document.pdf has changed
--- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_readme.txt	Fri Oct 17 14:00:07 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,14 +0,0 @@
-s110_nrf51822_7.0.0
-
-This release consists of the following:
-- This readme file
-- The s110_nrf51822_7.0.0 license
-- The s110_nrf51822_7.0.0 softdevice (binary hex file)
-- The s110_nrf51822_7.0.0 API (softdevice header files)
-- The s110_nrf51822_7.0.0 release notes
-- The s110_nrf51822_7.0.0 migration document
-
-
-IMPORTANT NOTE: If you intend to use the softdevice with the nRF51
-SDK only, you do _not_ need the API files. The API header files are
-already installed as part of the nRF51 SDK versions 6.0.0.
Binary file targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_releasenotes.pdf has changed
--- a/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_0_0/s110_nrf51822_7.0.0_softdevice.hex	Fri Oct 17 14:00:07 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5290 +0,0 @@
-:020000040000FA
-:10000000C0070000D1060000D1000000B1060000CA
-:1000100000000000000000000000000000000000E0
-:100020000000000000000000000000005107000078
-:100030000000000000000000DB000000E500000000
-:10004000EF000000F9000000030100000D010000B6
-:1000500017010000210100002B0100003501000004
-:100060003F01000049010000530100005D01000054
-:1000700067010000710100007B01000085010000A4
-:100080008F01000099010000A3010000AD010000F4
-:10009000B7010000C1010000CB010000D501000044
-:1000A000DF010000E9010000F3010000FD01000094
-:1000B00007020000110200001B02000025020000E0
-:1000C0001FB5C046C04600F0EFFA04B00FB41FBD24
-:1000D00008205A49096809580847382057490968CB
-:1000E000095808473C2055490968095808474020E5
-:1000F0005249096809580847442050490968095875
-:10010000084748204D490968095808474C204B4981
-:10011000096809580847502048490968095808479C
-:100120005420464909680958084758204349096836
-:10013000095808475C204149096809580847602068
-:100140003E4909680958084764203C49096809582C
-:100150000847682039490968095808476C20374919
-:100160000968095808477020344909680958084740
-:100170007420324909680958084778202F490968CE
-:10018000095808477C202D490968095808478020EC
-:100190002A490968095808478420284909680958E4
-:1001A0000847882025490968095808478C202349B1
-:1001B00009680958084790202049096809580847E4
-:1001C00094201E4909680958084798201B49096866
-:1001D000095808479C201949096809580847A02070
-:1001E0001649096809580847A4201449096809589C
-:1001F0000847A8201149096809580847AC200F4949
-:10020000096809580847B0200C4909680958084787
-:10021000B4200A49096809580847B82007490968FD
-:1002200009580847BC2005490968095808470000D3
-:1002300003480449024A034B7047000000000020B5
-:10024000C0070000C00700000122D84B5A6000BF61
-:10025000D74A1268002AFBD0016000BFD44A126856
-:10026000002AFBD00022D14B5A6000BFD04A12684E
-:10027000002AFBD07047F0B505460E46174600240D
-:1002800006E0A200B158A2005019FFF7DDFF641C80
-:10029000BC42F6D30020F0BD0120C043C549086030
-:1002A000401048607047014601229204086890425D
-:1002B00001D9102070470020FCE7F0B505460C4638
-:1002C0001646002706E028462168FFF7BDFF2D1DD2
-:1002D000241D7F1CB742F6D3F0BD70B505460C4611
-:1002E0002E460BE0304600F075F9FF2C01D80024B3
-:1002F00001E0FF3C013C012080023618002CF1D1C6
-:1003000070BD0146012292044868904201D909203B
-:100310007047A9484069401C01D10F20F8E7002030
-:10032000F6E7FEB504462068030000F037FA05043E
-:100330002B4249598B00201DFFF7E3FF0546002D96
-:1003400001D02846FEBDFFF7A7FF0120C00200F044
-:1003500041F9042221469948FFF78DFF002801D07A
-:100360000320EFE708222146944800F06DF90028A9
-:1003700006D1002192480068FFF766FF00F00CF9F3
-:100380000320DFE7A768E6686068019031463846D9
-:10039000FFF7A3FF324638460199FFF78EFFB20000
-:1003A0003846019900F050F9002800D1CAE703202F
-:1003B000C8E700F0E3F9834800688349086041E03A
-:1003C00060680190E668A0680090B200009901980A
-:1003D00000F03AF90746002F00D1B3E70E20B1E74D
-:1003E000201DFFF760FF0546002D01D02846A9E734
-:1003F0006068002807D1FFF74FFF0320800200F05C
-:10040000E9F800F0C9F8FFF747FF0120C00200F04B
-:10041000E1F8042221466948FFF72DFF002801D0AA
-:1004200003208FE708222146644800F00DF90028D8
-:1004300006D1002162480068FFF706FF00F0ACF823
-:1004400003207FE700BF00207CE770B505460C461F
-:10045000182D04D12068FFF764FF206002E001201E
-:10046000206000BF00BF70BDF0B589B05248406940
-:1004700003905248806881000398081802900398FE
-:10048000000B01900121090302984018401E000B47
-:1004900000900124002520462946019A00F0C4F866
-:1004A0000022401E91410791069001260027304608
-:1004B0003946009A00F0B8F80022401E914105919B
-:1004C0000490049BDB43059AD2430698184307998E
-:1004D00011430791069037490698086007984860CD
-:1004E00009B0F0BD70B53448446934488568466841
-:1004F000AA003146204600F0A7F8002801D00020CD
-:1005000070BD0120FCE72D484068002801D0012083
-:1005100000E000200546FFF7E5FF002807D0FFF7C1
-:10052000BBFE0320800200F055F800F035F8FFF71D
-:100530009BFF002D0ED020484669204884684768FC
-:1005400021463046FFF7C9FE224639463046FFF7BE
-:10055000B4FE00BF00F020F810B5184844681A48EF
-:100560000460204600F0DCF810BD15480068006803
-:10057000401C01D100BFFEE710480068002802D0EF
-:10058000042806D101E0FFF7BEFFFFF7E5FF00BF3B
-:10059000FEE700BF00BFFEE7BFF34F8F0B480C49DB
-:1005A000C860BFF34F8F00BFFEE7000000E50140C9
-:1005B00000E40140000600400010001000080000A8
-:1005C000B8070000BC070000000000200400FA0586
-:1005D00000ED00E010B50146104B1A6808460223F2
-:1005E0000F4C636000BF0F4B1B68002BFBD0531CEC
-:1005F00004D0904202D20A4B186101E0084B986087
-:1006000000BF084B1B68002BFBD00023044C636029
-:1006100000BF044B1B68002BFBD010BD0010001066
-:1006200000E5014000E4014010B5202A04DB01464A
-:10063000203A9140002010BD914020239C1A03468F
-:10064000E3401943904010BD034610B50B439B0790
-:100650000FD1042A0DD308C810C9121FA342F8D025
-:1006600018BA21BA884201D9012010BD0020C04328
-:1006700010BD002A03D0D30703D0521C07E000208E
-:1006800010BD03780C78401C491C1B1B07D1037854
-:100690000C78401C491C1B1B01D1921EF1D118463D
-:1006A00010BD70477047704710B500F007F810BDD7
-:1006B000014B1B68DB6818470000002019481A49E5
-:1006C0007047FFF7FBFFFFF7FBFC00BD20BFFDE716
-:1006D0001649174C24688C420BD1164B1B68994263
-:1006E0000CD1154B154A1360186810498842EDD09B
-:1006F0000AE0134880F30888124B18470F4A13602A
-:1007000018680A498842E1D080F308880E49884277
-:1007100004DD0E48026802210A4302605B68184744
-:100720000346DFE7C0070000C0070000FFFFFFFF30
-:10073000000C000014100010001000000000002049
-:10074000000400206B05000000200020240500406C
-:100750000D48704502D1EFF3098101E0EFF3088104
-:10076000886902380078182802D1C046074A104725
-:10077000074A12682C3212681047000000B5054B7A
-:10078000054A9B58984700BDFDFFFFFF4B04000042
-:1007900000000020001000000400000030B4744687
-:1007A000641E2578641CAB4204D3635D5B00E318D0
-:1007B00030BC18471D46F8E7000C00000010000090
-:10100000901D002079500100ED3D0000DF4F0100F0
-:1010100000000000000000000000000000000000D0
-:10102000000000000000000000000000E950010086
-:101030000000000000000000ED3D0000ED3D00005C
-:10104000555101005B510100ED3D0000ED3D0000F8
-:10105000ED3D0000ED3D0000ED3D0000ED3D0000E8
-:1010600061510100ED3D0000ED3D000067510100C0
-:10107000ED3D00006D5101007351010079510100F7
-:10108000ED3D0000ED3D0000ED3D0000ED3D0000B8
-:10109000ED3D0000ED3D0000ED3D0000ED3D0000A8
-:1010A0007F51010085510100ED3D0000ED3D000044
-:1010B000ED3D0000ED3D0000ED3D0000ED3D000088
-:1010C00000F002F813F0B9FF0CA030C8083824185B
-:1010D0002D18A246671EAB4654465D46AC4201D170
-:1010E00013F0ABFF7E460F3E0FCCB64601263342CF
-:1010F00000D0FB1AA246AB463343184744410100D7
-:1011000074410100103A02D378C878C1FAD8520766
-:1011100001D330C830C101D504680C6070470000AD
-:101120000023002400250026103A01D378C1FBD803
-:10113000520700D330C100D50B6070471FB5C046C1
-:10114000C04613F01BFF04B00FB41FBD82690249F3
-:1011500081610248104470476111000001000000E5
-:1011600001B41EB400B510F02FFC01B401988646FE
-:1011700001BC01B01EBD0000F0B4404649465246D5
-:101180005B460FB402A0013001B50648004700BF1E
-:1011900001BC86460FBC8046894692469B46F0BC01
-:1011A00070470000C1100000401E00BF00BF00BF1C
-:1011B00000BF00BF00BF00BF00BF00BF00BF00BF37
-:1011C00000BFF1D17047000070B505460C461646C9
-:1011D00002E00FCC0FC5103E102EFAD2082E02D31B
-:1011E00003CC03C5083E042E07D301CC01C5361F2E
-:1011F00003E021782970641C6D1C761EF9D270BD45
-:101200008307FF22DB0E9A408907090E99400028C8
-:101210000BDA0007000F0838830828489B001B18CA
-:10122000D86990430843D8617047830824489B00DD
-:101230001B181868904308431860704710B504469F
-:1012400000210120FFF7DCFF00211820FFF7D8FF65
-:1012500000210B20FFF7D4FF02211920FFF7D0FF58
-:1012600002210D20FFF7CCFF02210E20FFF7C8FF5F
-:1012700002210F20FFF7C4FF0221C81FFFF7C0FFA4
-:1012800003211620FFF7BCFF03211520FFF7B8FF4D
-:10129000204600F019F8002010BD4F210180704752
-:1012A00010B500F03AF810BD0648704710B500F0D0
-:1012B00035F810BD704770477047000000ED00E042
-:1012C00000E400E003F900C330B50446374D95B0A3
-:1012D00007202870A81CFFF7E0FF5920A880344899
-:1012E00001F020FC0546072000F0DCF929462F48D4
-:1012F00000F08CFA641E072C0AD830216846017071
-:10130000847001F0DDFA002802D009A800F0DDFCAD
-:10131000284601F083FE15B030BD7047F8B5234E66
-:101320000446B61E307801270D46002807D0204617
-:1013300060380B2808D8204601F096FB2BE0602C83
-:10134000F9D01C480860F8BD20466C38032803D843
-:10135000204601F0CBFB1EE0204670381F2803D842
-:10136000204600F037F816E0204690380F2803D8C2
-:10137000204600F0BBF80EE02046A0380F2803D826
-:10138000204600F023F906E02046B0380F2804D8A4
-:10139000204600F000F9286000E02F60602CD2D1D8
-:1013A00028680028CFD13770F8BD00001A0000204F
-:1013B000C33300000130000070477047704770472A
-:1013C000704770477047704710B5012801D100F091
-:1013D00042FA10BD10B57038030013F0EBFE150C87
-:1013E00012161E22252C33383D41454950555C6468
-:1013F0006C747B8085004A680878114603F081FF91
-:1014000010BD086803F0F9FF10BD0C790B7B8A68EA
-:101410000868214604F005F810BD086804F07EF85D
-:1014200010BD03F05BFC10BD08884A6880B211460D
-:1014300004F043FA10BD0A790888114680B204F01E
-:1014400091FA10BD087840B204F09CFA10BD0888EB
-:1014500080B204F0B8FA10BD086804F0C7FA10BDF5
-:10146000086804F0DFFA10BD086804F00AFB10BD3C
-:10147000088982B209C9194604F034FB10BD05C9B8
-:10148000114604F082FB10BD08884A6880B21146FC
-:1014900004F0A0FB10BD0B7908888A6880B2194659
-:1014A00004F0FDFB10BD0B7908888A6880B21946EC
-:1014B00004F0B3FC10BD08884B688A6880B21946F6
-:1014C00004F0F3FC10BD08884A6880B2114604F0AD
-:1014D0003EFD10BD088880B204F056FD10BD08889E
-:1014E00080B204F076FD10BD012010BD10B590381B
-:1014F000030013F05FFE09060F161D242C363F462D
-:101500004E0088888A6883B20888194680B205F040
-:1015100093F910BD08884A6880B2114605F0E9F9D0
-:1015200010BD08884A6880B2114605F02DFA10BD3A
-:1015300008884A6880B2114605F063FA10BD088831
-:101540004B688A6880B2194605F094FA10BD088984
-:1015500082B2888883B20888194680B205F0C9FA39
-:1015600010BD08894B6882B20888194680B205F020
-:10157000FEFA10BD08884A6880B2114605F02EFBBD
-:1015800010BD888882B20888114680B205F0C2FB7F
-:1015900010BD012010BD10B5B02805D0B12808D06D
-:1015A000B2280BD0012010BD088880B205F0A6FE3D
-:1015B00010BD088880B205F0D1FE10BD08884B68C8
-:1015C0008A6880B2194605F0DAFE10BD10B5A03861
-:1015D000030013F0EFFD0B070E172028323C434D9C
-:1015E000545D65004B6808788A68194607F017FA59
-:1015F00010BD88888A6883B20888194680B207F0CF
-:1016000023FA10BD08884C68CB688A6880B22146EE
-:1016100007F02AFA10BD08884B688A6880B219461C
-:1016200007F044FA10BD8888CB6884B208888A68BD
-:1016300080B2214607F064FA10BD8888CB6884B276
-:1016400008888A6880B2214607F089FA10BD0888A8
-:101650004A6880B2114607F0BDFA10BD088982B20F
-:10166000888883B20888194680B207F0BDFA10BD99
-:1016700008884A6880B2114607F0DAFA10BD088976
-:101680004B6882B20888194680B207F057FB10BD3C
-:1016900008884B688A6880B2194607F014FC10BDB0
-:1016A000012010BD10B507F0FAFC0FF0A7FF00F005
-:1016B00007F810F0F5F808F0F5F908F081F910BD19
-:1016C00001202B49C00308602A490020087003202C
-:1016D0002949800288607047F8B5264D044628786D
-:1016E000A04207D0002C05D0002803D023A14D2014
-:1016F00013F06FFC2878A04213D02C700325002330
-:101700002349AD021C48002C27D01B4A214E4032F1
-:10171000214F012C06D0022C13D018A16E2013F0FB
-:1017200058FCF8BD0B6002230B604E6185601B49BD
-:1017300011625762091D91621749091DD162456006
-:10174000F8BD0B6003230B604E610121C90281606B
-:10175000134B9362D7624160F8BD0B600B608560EC
-:10176000F8BD10B505A1772013F033FC10BD0000C3
-:1017700080E100E02000002000F501407372635C0E
-:1017800068616C5F63636D5F6161722E630000006E
-:1017900000F500407C01002000F0004000110040F6
-:1017A000488100401CB50446002069460870204668
-:1017B00009F0F6F86946204608F0B4FF002803D186
-:1017C000FBA1B62013F005FC01A9204608F009FF93
-:1017D000002803D1F6A1BB2013F0FBFB684600787C
-:1017E0001CBD70B5F74D002428462C76203084713E
-:1017F000C47113F0EDFC2846403804702030847327
-:10180000847484762C74AC7070BDEAE710B50C4615
-:10181000ED4982888A8042884A80007808700846AC
-:101820000A38847008F0B3FEFFF7DBFF20460AF0A9
-:101830002FFAE44AE0321146383908461446813816
-:1018400009F020F92146E0480BF0C2FC09F09FF8AE
-:1018500013F0BEFC10BD10B50120FFF7ADFD10BDAB
-:10186000F8B509F083FDD84DD64C0A3D022802D0C8
-:10187000207C00287CD0207E0026102819D1A0785A
-:10188000002803D0CAA1D14813F0A3FBCD48E83803
-:10189000817A89070DD50146267160398989E180F1
-:1018A000C17A217281896181C089A0810120A070E3
-:1018B0002676C44F203FB87C002859D1C4486946D9
-:1018C000808908F02FFF002805D0694668780978DC
-:1018D0004018687004E0BD48B5A11D3013F079FBD5
-:1018E000207C002838D0BA488189FF300930406D0B
-:1018F0008089814204D0B548ADA1223013F069FB44
-:10190000B348808908F0B4FF002804D1AF48A8A1EB
-:10191000283013F05EFB09F022F800281CD0AC48F8
-:101920008089FFF73FFF697840186870A548403804
-:10193000416D20318A7C012A0DD1A54A3E779289DA
-:10194000C287C87C20700120B876207E102801D084
-:10195000282800D1267626746978002908D09C486A
-:101960008289FF300930C28601870120B8746E7009
-:1019700009F0CCFC002805D1207C002802D0A878F2
-:1019800001F0F4F8F8BDF8B50F460446FFF768FF1C
-:101990008C4D403D28788B4E002813D0002F10D15D
-:1019A000307E002804D0FF2081A1C63013F011FB47
-:1019B0002C22A91C204613F06FF90E202070002065
-:1019C00028708FE07F4D203DA87B002818D0002F85
-:1019D000F7D1307E102808D0282806D0002804D05F
-:1019E000FF2073A1D23013F0F4FA0120E070E87BFD
-:1019F000A070287C60700F2020700020A87371E018
-:101A00000121204608F0E4FF002807D0307C0028A0
-:101A100051D13946204608F0DBFFF8BDA97C694862
-:101A20000C38009068480A38002913D0017805293D
-:101A300010D2002F56D1491C0170002666700D206F
-:101A40002070012028750622A01C009913F024F9AB
-:101A5000AE7447E05C4800210A380170B078002875
-:101A600014D0002F3ED1307E002803D050A1594819
-:101A700013F0AFFA002565700120524920700A2248
-:101A8000091DA01C13F008F9B5702BE0394620465B
-:101A90000BF008FB002825D1A87C002805D0002FDA
-:101AA00020D149480A380178C5E7A87E002802D02D
-:101AB000307C002801D00020F8BD002F12D1307EEC
-:101AC000002804D08F203AA1800013F082FA00266B
-:101AD00066700A203B4920700622091FA01C13F0E3
-:101AE000DBF8AE760120F8BD10B53648017E00293E
-:101AF00008D1007C012805D001210020FFF743FF19
-:101B0000002801D0072010BD012010BD10B5012410
-:101B10000AF006F90443FFF7E7FF044308F038FF33
-:101B200001462143084610BDF8B51D4614460E4631
-:101B300008F077FD002807D0684608F07DFD0028F2
-:101B400003D0002C07D101E00120F8BD9B2018A193
-:101B5000800013F03EFA08F01BFDA04204D21D489D
-:101B600013A1583013F035FA009808F089F931467E
-:101B7000009808F097F9E2B22946009808F04EFB69
-:101B800008F06CFD002804D19F2009A1800013F00B
-:101B900020FA08F0FFFE0E4800244030417C002966
-:101BA00002D044740AF0A7F90948C480CCE70000C9
-:101BB0007372635C6C6C5F6374726C2E73302E6333
-:101BC00000000000200300202C00002082060000FE
-:101BD000D80100201502000010B50179002908D0B5
-:101BE00001290BD0FF20FE49043013F0F2F9002048
-:101BF00010BD831D42880488022103E042880488C6
-:101C0000831D01212046FFF78FFF10BDF8B51F4649
-:101C100015460E46044609F0A9FB022803D0F148F8
-:101C2000007C00281FD0F0488089208008F020FE2A
-:101C3000002803D1EA49ED4813F0CBF905246846A2
-:101C400008F021FE00280ED0009808F063F93070EB
-:101C5000022809D0012807D008F055FE641E24068A
-:101C6000240EECD10020F8BD3946009808F0EEFAB9
-:101C70002880002804D1AF20D949800013F0A9F9A9
-:101C800008F041FE002804D1D848D549193013F096
-:101C9000A0F90120F8BD38B50446831D821C6946B1
-:101CA000FFF7B4FF00280DD000206071684600786F
-:101CB000012808D0022806D0FF20C949253013F09A
-:101CC00088F9012038BD2071FBE700215BE670B583
-:101CD000C44C0546403C2078002803D1C148007E12
-:101CE000002804D0C120BE49C00013F072F9287842
-:101CF00008F085FF28780BF0C1FB0020207101203F
-:101D000060713921E170207070BD70B5B54D044629
-:101D1000403D2878002803D1B248007E002804D036
-:101D20005F20AF49000113F054F9AF4E2188B0890C
-:101D3000884203D109F01AFB022807D0022028713B
-:101D4000012068713821E970287070BD7F2070769D
-:101D5000A548E17820304174A17801740020EEE7B5
-:101D600010B5A04C403C207800280BD19D48007E47
-:101D7000002807D109F0FAFA032803D009F0FAFA8B
-:101D8000032804D199489649653013F022F9954902
-:101D900000202031C8712071012060713A21E1706A
-:101DA000207010BD70B58F4C0646403C207800284E
-:101DB0000BD18C48007E002807D109F0D7FA032800
-:101DC00003D009F0D7FA032804D1884884497B302E
-:101DD00013F0FFF8834D2035E87908280CD2E87914
-:101DE0001022000100196830314600F025FEE87924
-:101DF000401CE871002000E0072020710120607184
-:101E00003B21E170207070BDF8B5764D0446403D31
-:101E10002878002803D17348007E002803D0704939
-:101E2000734813F0D6F8704F2188B889884203D1DF
-:101E300009F09CFA022801D0022022E03E8C64883E
-:101E40007200788CF98B521C944217D3694A514323
-:101E50009200504312F09AFF401EFF2180B2F531EC
-:101E6000884200D90846844200D22046711C401C9A
-:101E700012F08CFF761C7043401E86B2FE85EE8009
-:101E800000202871012068713C21E9702870F8BD9C
-:101E9000F8B5544C0546403C2078002803D1514801
-:101EA000007E002804D052484D492C3813F091F898
-:101EB000A878002801D0012804D1A888FF21F53195
-:101EC000884204D959204649000113F082F8464E51
-:101ED0002988B089884203D109F048FA022807D03E
-:101EE00002202071012060713621E1702070F8BD60
-:101EF0003D48002720308772A988B18501213176BD
-:101F0000A978012900D00021817237484030407CF7
-:101F1000002801D009F0EFFF2771E3E770B5314CDD
-:101F20000546403C2078002807D12E48007E002836
-:101F300003D109F01BFA002804D02D482849533852
-:101F400013F047F8287809F0EEFE002020710120F8
-:101F500060713021E170207070BD70B5214C054674
-:101F6000403C2078002803D11E48007E002804D081
-:101F70001F481B495F3013F02CF8287800280BD03D
-:101F8000012809D0022807D06878402804D31848CF
-:101F90001349663013F01DF8284609F0DEF90028D1
-:101FA00001D0002000E00C2020710120607134215C
-:101FB000E170207070BD70B50A4C0546403C207839
-:101FC000002807D10748007E002803D109F0CEF988
-:101FD000002804D057200249000112F0FAFF0BE05C
-:101FE000B01B000020030020D8010020AA0200003E
-:101FF000B6050000C40900002978002913D00A2979
-:1020000011D014290FD01E290DD028290BD0322928
-:1020100009D04B2907D0642905D0FF2903D0FE49F8
-:10202000FE4812F0D6FF284609F0FCFE0020207181
-:10203000012060713321E170207070BD70B5F84CE3
-:1020400006462078251D002804D120464030007E19
-:10205000002804D05520F049000112F0BAFF3146A3
-:10206000002008F0A1FD2870002804D10622314686
-:10207000EC4812F011FE012060713221E1702070F5
-:1020800070BD70B5E64C05462078002804D1204686
-:102090004030007E002804D0A720DF49C00012F0A5
-:1020A00098FF00216956042914D0002912D0081D78
-:1020B00010D0001D0ED0001D0CD0001D0AD0001D38
-:1020C00008D00A3006D0283104D0D448D249443848
-:1020D00012F07FFFD448297801700120607131210E
-:1020E000E170207070BD10B5CD4C2078002804D16F
-:1020F00020464030007E002803D0C749CB4812F06C
-:1021000068FF08F045FAE08008F00AFB2072002022
-:102110002071012060710521E170207010BDF8B5BB
-:10212000BF4C07462034A07B25462035002805D12A
-:10213000287E002802D1A878002804D0B748B649E4
-:10214000703812F046FF09F011F91026022822D14A
-:10215000B7483988808988421DD1B1494839084635
-:102160000A7F6038807A002A03D080070CD40C20C4
-:102170000CE0800708D406200877AD484030407C4A
-:10218000002801D009F0B7FE2E760020E0732674F7
-:102190000120A073F8BD0220F8E710B5A04C20780C
-:1021A000002804D120464030007E002804D09B48FF
-:1021B0009949823812F00DFF002020710E20A07086
-:1021C0000F20E070FF20A0710020C04320819548BF
-:1021D000C01D0178A1728188A1814088E081012021
-:1021E0006071207010BD10B58D4C2078002804D18E
-:1021F00020464030007E002803D087498D4812F0E9
-:10220000E8FE0821A01D0FF095FA002020710120A2
-:1022100060712B21E170207010BD70B5804D0446B7
-:102220002878002804D128464030007E002804D0B9
-:102230007A487949B13012F0CCFE7D48102221460F
-:10224000303800F0F9FB7A481022A118203800F04D
-:10225000F3FB774830380FF074FB754910221039C2
-:102260002C46A81D00F0E8FB002020710E20A07075
-:102270002A20E07001206071207070BDF8B5684CB4
-:1022800005462034A07B26462036002802D1307E29
-:10229000002804D067486049E53012F09AFEA9781A
-:1022A000052912D0132910D014290ED015290CD0CD
-:1022B0001A290AD0292908D03D2906D03B2904D063
-:1022C0005C485549ED3012F084FE28885A4988420E
-:1022D00004D958485049F63012F07BFE09F046F810
-:1022E0000C212827022809D151482A888089904248
-:1022F00015D14B484838027E002A01D0E17310E026
-:10230000A97841760121017637760020E0734848AC
-:102310004030407C002804D009F0EDFD01E00220AF
-:10232000E07327740120A073F8BDF8B53C4F064652
-:1023300038783D1D002804D138464030007E002802
-:1023400004D089203449C00012F043FE31460120F8
-:1023500008F02AFC01242870002807D13048062202
-:1023600060303146054612F097FCAC717C71172045
-:10237000F8703C70F8BDF0B52B4F85B0403F3D7A0A
-:10238000064627480078002804D13846A038007E49
-:10239000002804D0D3202049800012F01AFE3078A3
-:1023A000002806D0012804D022481B492C3812F0FE
-:1023B00010FE082D4CD21C4820380190C46930789A
-:1023C00000283FD0012804D01A4813491E3812F0C3
-:1023D00000FE294608310120884004430120A8401E
-:1023E00020430090B1790E4C0802727969000919F6
-:1023F0001043FF3101318881B01C12F0AEFC7178BE
-:1024000000020843A9000919C031C862387A401C8B
-:1024100038720199009811E0B01B00007E050000A1
-:10242000E00200202500002000040020E706000054
-:10243000D801002079030000FF0E0000C8610020D1
-:10244000207108E029460831012088408443C5E70F
-:10245000FE48072101710121FC480B224171C27025
-:10246000017005B0F0BD10B5F84C2078002804D1FB
-:1024700020464030007E002803D0F549F54812F090
-:10248000A8FD12F0A5FE00202071012060710A2134
-:10249000E170207010BD10B509F0DDFB002804D0FC
-:1024A000EC48EB49583812F094FD08F06FFA08F048
-:1024B00052F80AF07EFE002804D0BD20E4498000D6
-:1024C00012F087FD08F0B3FA002804D05F20E0493D
-:1024D000C00012F07EFD12F07BFEDF480024047085
-:1024E000FFF77FF9D9480121047141710222C270BE
-:1024F000017010BD70B5D54D04462878002804D170
-:1025000028464030007E002804D0F320D0498000C7
-:1025100012F05FFD20781F2801D8601C04D1CD483F
-:10252000CB498F3012F055FD002028712078611CB6
-:1025300008F054FB012068712021E970287070BDFB
-:10254000F8B5C24C0646207825464035002802D111
-:10255000287E002804D0BF48BD499C3012F039FDC8
-:102560003078012806D0002804D0BA48B8499D30F8
-:1025700012F02FFD012060710C20207130780027AF
-:10258000B64E012808D008F0F1FE032867D008F005
-:10259000F1FE032871D076E008F0E8FE002803D1B0
-:1025A00008F0E8FE002804D008F0E0FE02283DD044
-:1025B00069E008F07EFA002865D0287C002862D106
-:1025C000A64802210C300FF03EF8002806D00F215B
-:1025D000B089090212F0DAFBB18100E0B781012273
-:1025E00003219E4807F05AFE9C4808F006FCB0897B
-:1025F00007F0D0FF002804D196489549B83012F072
-:10260000E8FCB089002108F0C9F9002804D09148FD
-:102610008F49BC3012F0DDFC297F688B09F087FB05
-:1026200000282FD08B488A49C03015E008F0A2FE60
-:10263000002828D1287F002825D0012823D008F0A1
-:1026400038FA00281FD0297F688B09F070FB00281A
-:1026500018D080487E49D33012F0BBFC12E0002035
-:1026600009F098FA00280ED12771287C00280AD199
-:10267000B089FFF797F806E0FFE7002009F08AFA33
-:10268000002800D127711B20E07001202070F8BDC8
-:1026900070B56E4D04462878002804D12846403095
-:1026A000007E002804D06B486949803012F091FC0C
-:1026B00020781F2801D8601C04D166486449813005
-:1026C00012F087FC002028712078611C08F09AFA2B
-:1026D000012068711A21E970287070BDF8B55B4D52
-:1026E000044628780C272E46403600280AD1307E32
-:1026F000002807D108F03AFE032803D008F03AFE7C
-:10270000032804D153485249473012F062FC6079E3
-:10271000002801D001282FD1A079002801D001285C
-:102720002AD1A07B002805D0012803D0022801D09F
-:10273000032821D1607B40071ED0618801208003DF
-:10274000814202D82288824201D920790CE0207986
-:10275000002804D0022805D0032803D004E0202953
-:1027600004D209E0A02A01D2012805D1208888429C
-:1027700007D92079012804D0364835495C3012F059
-:1027800028FC20887083207930776079002802D077
-:10279000012803D00CE0324A002105E02B4A6032C8
-:1027A0009079002804D00121204608F086F90746D8
-:1027B00001202F7168711821E9702870F8BD70B57B
-:1027C000224C05462078002804D120464030007E67
-:1027D000002803D01E49234812F0FBFB08F0C6FD79
-:1027E0000C2102280ED11D482A8883899A4219D1CA
-:1027F0000246C032137F002B04D1807E0E2803D006
-:102800000F2801D0217103E00520107700202071EE
-:102810000E20A0702E20E0702888E08001206071DA
-:10282000207070BD0220F2E770B5084C0546207894
-:10283000002804D120464030007E002804D00948FA
-:1028400003492C3812F0C5FB0EE00000E002002026
-:10285000B01B00003E03000000040020D80100204F
-:1028600025000020D104000008F080FD0C21022882
-:102870000ED178482A8883899A421FD10646C036ED
-:10288000327F002A04D1807E0E2803D00F2801D089
-:10289000217109E06F481022A91CEA3012F0FCF9FE
-:1028A00004203077002020710E20A0702D20E070D1
-:1028B0002888E08001206071207070BD0220F2E75E
-:1028C00010B501780B0012F075FC3D8787388787BB
-:1028D00058878787873B3E878787515487878787B5
-:1028E00087874228872C3087878787348787878721
-:1028F00087878746874A4E872024876B5B5F63679D
-:10290000876F877E827B77738700801CFFF78CFF41
-:1029100060E0801CFFF753FF5CE0801CFFF7DEFEE9
-:1029200058E0801CFFF7B4FE54E0801CFFF708FE5F
-:1029300050E0801CFFF7DEFD4CE0FFF7ACFD49E006
-:10294000FFF791FD46E0801CFFF715FD42E0801C7B
-:10295000FFF7EBFC3EE0801CFFF790FC3AE0801CA8
-:10296000FFF75BFC36E0FFF73EFC33E0FFF715FCBA
-:1029700030E0801CFFF7D3FB2CE0FFF7B4FB29E02D
-:10298000801CFFF77EFB25E0801CFFF757FB21E052
-:10299000801CFFF710FB1DE0801CFFF7DEFA19E03A
-:1029A000801CFFF7BBFA15E0801CFFF771FA11E0FD
-:1029B000801CFFF729FA0DE0801CFFF7F3F909E00E
-:1029C000FFF7CEF906E0801CFFF79FF902E0801CBC
-:1029D000FFF77DF9012010BD002010BD10B51E4984
-:1029E0001E4812F0F6FA10BD70B51D4A01241146BA
-:1029F000184D4031030012F0DDFB05191C1C0419B1
-:102A00001C0001220021134807F048FC1448002153
-:102A1000483801774177C03809F005FA002804D01A
-:102A20000E480D49D33012F0D4FA70BD0C745565C0
-:102A300070BD09490B48F6E730B5134606E0CC18DF
-:102A4000203CE47FD51A44555B1EDBB2002BF6D147
-:102A500030BD0000D8010020B01B0000410600007E
-:102A6000E00200204707000010B56038030012F0B4
-:102A7000A1FB0A060A0F13181F262A31363B0868E5
-:102A800000F093FD10BD05C9114600F0ADFD10BD6D
-:102A9000086800F04CFE10BD05C9114600F054FE58
-:102AA00010BD4B6808788A68194600F065FE10BDB5
-:102AB0004B688A680868194600F07FFE10BD0868F8
-:102AC00000F09AFE10BD08884A6880B2114600F0F6
-:102AD000EAFE10BD05C9114600F00AFF10BD05C988
-:102AE000114600F01DFF10BD012010BD10B56C286F
-:102AF00001D0012010BD087800F0B8FE10BD000024
-:102B000001203F49400608603E4908603E490A6886
-:102B1000FF231B029A4383121A430A603849803903
-:102B20000860704710B502460420384904E0C3002D
-:102B30005B181B79002B0AD00346401EC0B2002B45
-:102B4000F5D133A1432012F044FAFF2010BDC30099
-:102B5000CA50002259184A718A7101220A7110BDA7
-:102B60002A4A0021C00080180171704710B5044640
-:102B7000042803D326A1522012F02BFA2348E100A7
-:102B80000C182079012803D021A1532012F021FA3A
-:102B90006079A179401CC0B2814200D060710120EF
-:102BA000174940068031086010BD70B516480068AE
-:102BB0000004800F022803D015A1692012F009FA41
-:102BC000124E194C03252078C10088190279012A78
-:102BD00007D1427983799A4203D042798271705841
-:102BE00080472078401CC0B22070042801D3002008
-:102BF000207028466D1EEDB20028E4D170BD0000A3
-:102C000080E100E080E200E018E400E02C12002007
-:102C10007372635C736F635F7369676E616C6C6919
-:102C20006E672E63000000003C00002010B5EFF33B
-:102C30001080C407E40F72B6D6484178491C417031
-:102C40004078012801D10FF065F9002C00D162B65F
-:102C500010BD70B5CF4CE07800280AD10125E57091
-:102C6000FFF7E4FF0FF05EF9002804D000200FF01A
-:102C700031F9002070BDC84865714560F9E770B54D
-:102C8000EFF31080C507ED0F72B6C24C60780028D4
-:102C900003D1C2A18F2012F09CF96078401E6070B1
-:102CA0006078002801D10FF039F9002D00D162B60B
-:102CB00070BD10B5B748C178002904D0002141711A
-:102CC000C170FFF7DCFF002010BD10B504460FF007
-:102CD00029F9B049C978084000D0012020600020BF
-:102CE00010BDF8B50246AB4C0026A67108200421A1
-:102CF00001251027130012F05DFA0D080A0C0E10C2
-:102D00001214161E262123252800257122E00220F8
-:102D100001E021711EE020711CE027711AE02020E3
-:102D2000F9E7012616E0FFF781FF0FF0FBF8002816
-:102D3000FBD002260EE02171A5710BE02771FBE7A5
-:102D4000202000E040202071F6E7FF2093A17E3094
-:102D500012F03FF90FF0F2F8002809D00FF0F4F864
-:102D6000B04205D130460FF0F2F80028FAD024E046
-:102D700001208007C5608D4A002151608C4A966110
-:102D8000854B02225A6085608A4803690569DB43E6
-:102D9000DB06DB175B1C10273D430561834D00E01C
-:102DA00020BF6F68002FFBD0002B03D107691023D1
-:102DB0009F430761784882606960A07900280CD041
-:102DC0000FF0B0F805460FF00DF87B4A002D02D049
-:102DD000A260E06001E0E260A060002E01D100F09E
-:102DE000B1F8F8BD10B504460FF0A2F8002805D0E0
-:102DF00068490120C8704A78521C4A702046FFF783
-:102E000070FF10BDF8B5694FB8680025012802D1E0
-:102E1000BD600FF05FF87868012800D17D603868E8
-:102E200001265C4C012814D13D606079002803D054
-:102E300000200FF04FF865712078002809D00FF0BE
-:102E400071F8002805D05948C0388663000606612D
-:102E5000A670386901282CD13D6100F068F8012086
-:102E600080074661A079002815D00FF05BF800902C
-:102E70000EF0B8FF0099002901D0E16800E0A168D8
-:102E8000411A022901DA8A1C13DC0099002901D0B9
-:102E9000E06000E0A060FFF7C9FE0FF043F80028F3
-:102EA00006D04248C038866300060661A67000E07E
-:102EB0002670F868012819D100F039F800F037F8C9
-:102EC00000F035F8A078002804D1FF2033A10530A8
-:102ED00012F07FF8FD60A5702570FFF7D0FE0EF0B0
-:102EE000F8FA002802D03148C038C663F8BD10B5E2
-:102EF000284CE078002801D10FF010F8012081075C
-:102F0000886100F014F8A07800280BD0274CE06806
-:102F1000002803D10FF01BF80028F8D10020E06052
-:102F200000F005F800201C49C043886010BD08B5BA
-:102F30005020694608806A461088411E118000288A
-:102F4000F9D108BDF8B51448192787601749002042
-:102F50000860C8600EF0E6FFBD0701240D4E002892
-:102F600005D01248C03884632C61B47000E034701E
-:102F7000FFF75CFE084847600D4930798863FFF72A
-:102F8000D6FFAC61FFF7D3FF0849002008616C61F0
-:102F9000F8BD000040000020000300407372635C35
-:102FA000736F635F636C6F636B2E6300000100409F
-:102FB0000005004000ED00E0FFFFFF7F10B510F0BE
-:102FC00064F810BD00200449C8630120012181403C
-:102FD000024A116000BF7047C01F004080E200E05D
-:102FE00010B504460BF095F820460CF0AAF810BD79
-:102FF0007047704770477047704770477047704719
-:1030000010FFFFFFDBE5B151006001004F00FFFF43
-:1030100003B40148019001BD09000020FE49487039
-:10302000704710B5030012F0C5F8080E050E080829
-:103030000B0B0E1104F07DF810BDFFF7D1FF10BD92
-:103040000DF0E8FF10BD01F095FE10BDFF20F3A1CB
-:10305000713011F0BEFF10BD7FB5F44905464868D8
-:103060008968082301910090F14A1946F1480EF051
-:103070008BFD0024F0480EF0A5FD641CE4B2082C82
-:10308000F8D3EB490320803140020CF02FF90028DF
-:1030900003D0E2A1962011F09CFF1E220221E748F6
-:1030A0000AF0E7FCE5481E22032110300BF05BFA22
-:1030B000E2480722342174300AF034FCDF484C2106
-:1030C000283011F048FEDD496A46743108464C3814
-:1030D0000164FF317B31416401211172039002F0E0
-:1030E000B4F802A80CF050FC002803D0CBA1AA2011
-:1030F00011F06FFFCF4802222421A8380AF012FCF9
-:10310000CC4802222C215C380AF00CFCCC490B2064
-:103110000EF082F8002803D0C0A1B72011F059FFAB
-:1031200003F0F4FF03F0F8F904F05AFE6B460022B6
-:103130000821C4A001F070FF002803D0B7A1BE2071
-:1031400011F047FF284605F071F9002803D0B3A11C
-:10315000C02011F03EFF8521C900BD4811F0FBFDE4
-:10316000BB49B24A0020135C0C18401CC0B2E3708B
-:103170000428F8D3A849002048608870C8707FBD33
-:1031800070B5B44E0546706A94B00C46401C04D12C
-:10319000B06AC0430004000C0BD0306AC007C00FF7
-:1031A0002870706A11F0EAFDB06A2071000A60713F
-:1031B00013E02B206946087009A968460AF0F8FB5D
-:1031C000002803D095A1E42011F003FF012028700E
-:1031D00006220AA9204611F05FFD2878002803D0B6
-:1031E0006079C0210843607114B070BDF0B5994C8E
-:1031F0000646206895B00D463746401C0837002823
-:1032000008D16068401C05D1A068401C02D1E0686C
-:10321000401C11D02068314611F0B0FD6068311DAE
-:1032200011F0ACFDA068394611F0A8FDE068314608
-:103230000C3111F0A3FD25E02B206946087009A987
-:1032400068460AF0B5FB002804D0FF2073A10E30B9
-:1032500011F0BFFE08220AA9304611F01DFD2B20F7
-:103260006946087009A968460AF0A2FB002804D044
-:10327000FF206AA1153011F0ACFE08220AA93846D9
-:1032800011F00AFD20692E46401C0836002808D19E
-:103290006069401C05D1A069401C02D1E069401C56
-:1032A00012D02069294611F069FD6069291D11F0CD
-:1032B00065FDA069314611F061FDE06929460C31D8
-:1032C00011F05CFD15B0F0BD2B246846047009A90F
-:1032D0000AF06EFB002804D0FF2050A1333011F01B
-:1032E00078FE082209AF0AA9284611F0D5FC6846E5
-:1032F000047009A90AF05CFB002804D0FF2047A154
-:103300003A3011F066FE0822391D304611F0C4FC37
-:10331000D8E710B5002108460EF00CFD0021012071
-:103320000EF008FD002102200EF004FD0021032014
-:103330000EF000FD002104200EF0FCFC0021052011
-:103340000EF0F8FC10BD10B5414CA0780B2804D34A
-:10335000FF2032A18A3011F03CFE207860214843E2
-:1033600000190830002101704178E722C908C9001E
-:10337000C91C11404170284A0121917010BD70B5DF
-:10338000254CA07800280ED0314800250178491C32
-:10339000C9B201700B2900D105708178491C817078
-:1033A0000EF093FDA57070BD70B51B4C05466068AE
-:1033B000002804D0FF2019A1B33011F00AFE656087
-:1033C00070BD70B5144E224DFFF7BDFF7168044605
-:1033D000002907D06022FDF7F7FEFFF7D0FF00209D
-:1033E0007060F1E72879002876D012485C380AF03E
-:1033F000A9FA6060002804D1FF2008A1D13011F0A3
-:10340000E8FD60680AF0FCFA002831D0204600F0A0
-:103410006FFF607801071FE0340000207372635C67
-:10342000686F73745F636F72652E6300E051010013
-:10343000040400200C12002023300000840A002025
-:10344000B41000206E524635313832320000000090
-:103450008C0C00208000001007D5C008C000401C64
-:1034600060702879401E287127E0F74861682AE0DB
-:10347000F54861680AF06FFA687900282CD0F248A4
-:103480004C380AF05FFA6060002804D1FF20EF4951
-:10349000F43011F09EFD60680AF0B6FA002816D0EC
-:1034A000204603F085FE6078010709D5C008C000FA
-:1034B000801C60706879401E6871FFF760FF83E7C9
-:1034C000E14861684C380AF046FA7DE704E0DE48DE
-:1034D00061684C380AF03FFA70BDF7B505460078D0
-:1034E000002700090C463E46062803D0D749D84895
-:1034F00011F06FFD287A00280ED0012814D0D4488E
-:10350000D249213011F065FD0298002C068001D0CF
-:10351000278066800020FEBD02270926002C0ED0E1
-:10352000A889A080A87B08E003271426002C06D0D9
-:103530002869E060A88A2082287B2072E4E702984C
-:103540000680E7E770B50E4600211C461980154637
-:10355000030011F02FFE0723050B1711231D230075
-:1035600022462946304603F0EFFD70BD224629462B
-:10357000304601F078F970BD22462946304604F005
-:103580002AFB70BD22462946304602F0F9FF70BD85
-:10359000224629463046FFF7A0FF70BD9720AB4971
-:1035A000800011F016FD032070BD10B5A94C2178E4
-:1035B000002901D0082010BDFFF74EFD012020702A
-:1035C000002010BD0146A04810B54C380AF0C3F9E0
-:1035D000A1494879401CC0B24871012803D19D48D7
-:1035E0004078FFF7C3FA10BDF8B50546072040073D
-:1035F0000F460A18012189038A4209D2002D02D000
-:103600002818884204D2E81C80088000A84201D013
-:103610001020F8BD90488178002911D03988009198
-:103620004178602251430C18083420783B4600074B
-:10363000000F00222146FFF785FF060004D015E0A9
-:10364000002038800520F8BD002D13D0398800985F
-:10365000814201D90C260DE020783B460007000F7F
-:103660002A462146FFF76EFF060005D00C2E01D03A
-:10367000002038803046F8BD774D6878401CC0B2D5
-:1036800068700B2801D100206870A878401EA870CF
-:1036900061784807400F022810D00128EAD16A4813
-:1036A00061680AF058F92879401CC0B228710128D5
-:1036B000E0D168484078FFF759FADBE7C806D9D46B
-:1036C0006068FFF77FFFD5E770B50446634816468C
-:1036D0000D46814204D15E485C49C53011F079FC49
-:1036E000012E05D05A485949D53011F072FC70BDF1
-:1036F00058480121C1706620207000202072A581E9
-:10370000A17370BD70B516460D46040001D1FFF7D8
-:103710001AFE662101700121017229680161A988E0
-:1037200081820673002C01D1FFF729FE70BD0721AD
-:103730004907012241189203914201D3102070479A
-:103740000721017000207047454A10B590420ED302
-:1037500001239B04C21A434B9A4208D3424B98421E
-:1037600005D2072252078A18DB139A4201D3102090
-:1037700010BD0DF08AFD10BD394B10B599420ED326
-:1037800001239B04374CCB1AA34208D3364B9942F2
-:1037900005D2E3020124D318A403A34201D31020CD
-:1037A00010BD022803D0102801D0092010BD0DF053
-:1037B00092FD0028FAD0052010BD70B5284B984224
-:1037C00012D301239B04274CC31AA3420CD3264BCC
-:1037D000984209D2E4020D19DB139D4204D2002A5B
-:1037E00004D014199C4201D3102070BD0DF099FD36
-:1037F0000028FAD0072070BD10B504460720400706
-:1038000001212018890394B0884202D3102014B0FB
-:1038100010BD01F06AFD002801D01120F7E70F204C
-:1038200008A9087369460BA80AF0C2F80028EED16F
-:103830006846007A207068464089608068468089C2
-:10384000A0800020E3E70000B01100201C3400003D
-:1038500015020000340000208C0C0020FFFF000047
-:10386000006001000000FC1F0040002010B594B073
-:10387000044601F03AFD002801D01120C7E7002CD2
-:1038800001D00720C3E7392168460170002181700B
-:1038900009A90AF08DF8002803D02B492B4811F014
-:1038A00098FB0020B3E770B5294C0846E178002961
-:1038B00013D000280FD007225207012385189B033D
-:1038C0009D4203D20568AA189A4201D3102070BD08
-:1038D0008288002A03D0012903D0082070BD092066
-:1038E00070BD04F0E1FA0028FAD10021E17070BD4A
-:1038F000184A10B5914208D301229204164B8A1A35
-:103900009A4202D3154A914201D3102010BD0246BB
-:10391000203A1F2A02D801F01FFC10BD072010BD5D
-:1039200007225207012310B58A189B039A4201D33C
-:10393000102010BD0246203A1F2A02D801F068FC70
-:1039400010BD072010BD00001C34000079030000EA
-:1039500034000020006001000000FC1F0040002037
-:103960008107C90E002808DA0007000F0838800810
-:103970002C4A80008018C06904E080082A4A800030
-:1039800080180068C8400006800F704710B50D20F1
-:10399000FFF7E6FFC4B20420C043FFF7E1FFC0B267
-:1039A000844203D021A11A2011F013FB10BD012184
-:1039B000234A48031060234B00221A60224A5160B8
-:1039C000224A1060224A11601D4980390860704700
-:1039D00001211B4A480310601D4A5160194A002109
-:1039E00011601A490860704710B516490868012827
-:1039F00004D00EA1562011F0ECFA10BD15488068D5
-:103A00000022C0B20A600DF0BBFE10BD10B50D481B
-:103A100001680029FCD0FFF7E7FF01200B494003B4
-:103A2000086010BD00ED00E000E400E07372635C2C
-:103A3000736F635F68616C5F726E672E6300000076
-:103A400080E100E000D1004000D3004080E200E0CF
-:103A500000D0004000D5004030B40121BC48C9026C
-:103A60000160CD1005604A030260BA4803681B027A
-:103A70001B0A036004680023240A24020460B64879
-:103A80000468240A24020460B44801244460846069
-:103A9000B34C23606360A360B24B19601D601A6071
-:103AA000B14B19601A600121016030BC704710B43D
-:103AB0000121A748CC0204600A0202600B060360E1
-:103AC000A64841608160A64900200860486088607F
-:103AD000A44804600260036010BC70470121A14843
-:103AE000C9020160C91001607047002805D0012893
-:103AF00005D0022805D19D4870479D4870479D48D4
-:103B0000704710B59CA18B2011F063FA002010BD06
-:103B100070B500219F4CA04DA04A914B002808D0C1
-:103B200001281DD0022822D093A1B32011F051FA10
-:103B300070BD01200004A060A86011601960984B5E
-:103B400042109A60974A9060814A0012106096482D
-:103B5000016087480160954801609548017070BD1B
-:103B600001204004A060A8605160596070BD012030
-:103B70008004A060A8609160996070BDF8B594461B
-:103B8000844A854D00240127754E002808D001285D
-:103B900036D0022844D078A1E82011F01AFAF8BDF6
-:103BA000891E0902090A01200004906034606860DF
-:103BB0007A4A1160012B21D000217D4A7D4B517042
-:103BC00061463D31DC63DF637B4B5C6002249C60BB
-:103BD00004241C61744B196074490F60614B891592
-:103BE0001960704B58606048016075487349C16046
-:103BF00086606B49600348601770F8BD0121DCE7FF
-:103C000001205C4E40046F4F012B04D134605060A2
-:103C100068603960F8BD9060346068603960F8BDF4
-:103C20000120524E8004684F012BF4D1EEE7674823
-:103C30004068704770B54A4D28680026554C0128E9
-:103C400006D1A068C00303D501200004A0602E6047
-:103C50006868012809D1A068800306D501204004C6
-:103C6000A0606E6001200FF04CF9A868012809D10E
-:103C7000A068400306D501208004A060AE60022049
-:103C80000FF03FF970BD10B549490878002818D0E9
-:103C90000120434AC0039060424A400090602C4A91
-:103CA00000121060404A00201060314A10603F4A04
-:103CB000106008704A78002A02D048700FF021F98D
-:103CC00010BD0320FAE70120414900060860704753
-:103CD0000120244900060860704701203C49400546
-:103CE0000860704701201F4940050860704731494E
-:103CF0000020C86388151B4908607047410A354A8F
-:103D0000C005C00D5043801C5143400A081870473D
-:103D100010B4314C430B63431B0C5C020C602D4C04
-:103D20006343C31A2D485C0258432A4B400D43435A
-:103D3000E31A0124DB0324041B191B1613700A6801
-:103D40001018086010BC704710B50FF0B2F910BD24
-:103D500080E100E008E400E018E400E000B000408A
-:103D600040B1004080E200E000E100E048B10040E6
-:103D70004081004044B100407372635C72656D5FC6
-:103D800068616C5F6576656E745F74696D65722ECF
-:103D90006300000000B3004040B3004040B5004065
-:103DA00000F5014000830040408500400082004053
-:103DB00050000020C08F004000850040008000407F
-:103DC00080F5014044B5004048B5004000B50040D2
-:103DD00000E200E0093D0000378600006F0C0100A2
-:103DE0000E4A12680C498A420AD118470B4A1268D7
-:103DF000094B9A4204D101B50DF0DDFD03BC8E469E
-:103E0000074909680958084706480749054A064B03
-:103E10007047000000000000BEBAFECA1C0100206E
-:103E200004000020901D0020901D002010B5FA4CC9
-:103E300094B02168087A002836D017206A4610709E
-:103E400000A806220931023010F026FF09A96846B1
-:103E500009F0AEFD112825D02168C03189790629E5
-:103E600020D007291ED008291CD004291AD00929DE
-:103E700018D00A2916D00B2914D0052912D00028F1
-:103E800003D0E6A1F32011F0A4F82168B82040582F
-:103E900006221C30093110F0FFFE2068017A8030C4
-:103EA000806BC17614B010BD3220C7E770B5DA4D13
-:103EB000044629680300C03111F07CF90C077C0B23
-:103EC0001A212E3B48515C677080FF20D3A1093036
-:103ED0006EE0887901286DD009286BD0052869D05B
-:103EE0000A2867D00B2865D0FF20CCA10E305FE0F8
-:103EF000887901285ED0FF20C8A1153058E0887964
-:103F0000062857D0072855D0082853D0052851D067
-:103F1000FF20C2A118304BE0887909284AD00A282E
-:103F200048D00B2846D0042844D0FF20BBA11E3027
-:103F30003EE0887903283DD007283BD0082839D0B7
-:103F4000092837D0FF20B5A1243031E08879062830
-:103F500030D00A282ED0FF20B0A12A3028E088795E
-:103F6000062827D0072825D00B2823D0FF20ABA177
-:103F70002E301DE0887906281CD00A281AD00B287C
-:103F800018D0FF20A5A1333012E08879092811D07C
-:103F90000A280FD0FF20A1A1383009E0887909282C
-:103FA00008D00A2806D0082804D0FF209BA13C3066
-:103FB00011F00FF82868C030847170BDFF2097A100
-:103FC0004130F5E79449C9220968525CD206920F44
-:103FD00005D1A0318A8B824201D1887F70470020B1
-:103FE000704770B504461120207000218A4D617021
-:103FF0002968C031897A002908D003290ED0042904
-:1040000010D0FF2085A16A3010F0E3FF207800096E
-:10401000012802D92868807D607070BD0007000FFC
-:10402000203002E00007000F30302070EEE730B59E
-:1040300003887E497E4C8B4202D09A1FA2421ED238
-:1040400042888A4202D0951FA54218D2934216D8C0
-:1040500083887D24E400A34211D8C088884205D01B
-:10406000734D04460A3C2D1FAC4208D2884208D04A
-:104070008A4206D05B1C5A43C000824201DD072001
-:1040800030BD002030BDFFB50022099B002802D0C2
-:10409000994205DC5CE0002902D1002004B0F0BDAB
-:1040A0000920FBE7845C002C12D085186F780D2F57
-:1040B0004CD010DC3B0011F07DF80A421B2A2A305C
-:1040C0003032323A3A42835C002B3FD1521CD2B29A
-:1040D0008A42F8DBE1E7122F31D004DC0E2F35D015
-:1040E0000F2F2CD132E0142F11D0152F27D116E02D
-:1040F000022CD5D1AB78039C072B237001D25B0730
-:1041000001D40A20CAE7029B01241B7814E0E34390
-:10411000DB0708E0012C08D011E00620BEE70F25E0
-:1041200023072D075B19002BF4D03046B6E7029B1E
-:104130001B789C070AD402242343029C2370835CCF
-:10414000521C9A18D2B28A4204DDA9E70B20A5E7D7
-:10415000192676028A42A5DB9FE705E00278401C1B
-:10416000002A01D0002070470A46491E89B2002A61
-:10417000F4D10120704730B5274D0021286887B061
-:10418000C943A030818300248477214606200DF0A6
-:10419000D1FD002105200DF0CDFD002102200DF004
-:1041A000C9FD0120FFF782FE28686946C030C4714E
-:1041B00004720120087068460BF007FC07B030BDA0
-:1041C00030B5154C95B02268C0329279042A0CD0D3
-:1041D000052A0AD028236A4613705080132906D076
-:1041E0003B2904D0072015B030BD0820FBE7117132
-:1041F000104609A909F0DCFB05000BD12068C0308E
-:104200008179062916D0082914D0072912D0052053
-:10421000FFF74CFE2846E6E7540000207372635C0B
-:104220006761705F636F72652E630000FFFF0000BF
-:104230007B0C00000420EBE730B587B0040003D00E
-:10424000002107200DF076FDFE4D012128686A4609
-:1042500001720421117003210C300DF06BFA2968F2
-:104260004022887B8006800E1043887368460BF0DE
-:10427000ACFB00280DD12968098A00299ED0002CAA
-:104280009CD08B000122002107200DF0AEFC0728F6
-:1042900001D0032092E7002090E770B50025064684
-:1042A000002803D0002107200DF044FDE54C01213A
-:1042B00020680172062109300DF03CFA2068817BEC
-:1042C0008906890E8173FFF7B1FD2068008A0028F6
-:1042D0000AD0002E08D083000122002107200DF013
-:1042E00084FC072802D00325284670BD0025FBE783
-:1042F000F0B59BB0040004D11920D349400110F05F
-:1043000068FE72202070616800260A780825521F16
-:104310000127CC48130010F04DFF0F0976D9FD7628
-:1043200078FCFBB576767676FAF97600C5480068B3
-:10433000C0308079032803D0C349C44810F049FE37
-:10434000002108460DF0F6FC002107200DF0F2FCDC
-:104350006078BC4A28436070106810250146C0315F
-:104360004B7A2B434B7263689D783C2D48D00246B4
-:104370009D88A032977763688030DB890B80636803
-:104380001B8A4B8063685B8A8B8095836168826B34
-:10439000C97911756168806B08311530062210F0FB
-:1043A0007BFC0620FFF782FDA648CA210068FB229D
-:1043B0000E54017E11400176B82109588A7A92087C
-:1043C00092008A724682284602F0ACFE002804D091
-:1043D0009E489D491A3010F0FCFD284602F0BCF8BA
-:1043E000002804D0994898491D3010F0F2FD284665
-:1043F00003F008FD002806D069209349C0003EE183
-:104400000120FFF753FD1BB0F0BD064600688F8802
-:10441000C0308079062812D0072810D008280ED086
-:1044200004280CD009280AD00A2808D00B2806D066
-:10443000052804D0D5208449800010F0CAFD60789A
-:10444000284360703068C030417A294341728079D6
-:10445000092811D00A280FD00B280DD005280BD021
-:10446000FFF789FE384602F062FE384602F07AF81D
-:10447000384603F0FDFCC6E7FFF77DFE0220FFF79C
-:1044800015FDEFE70068C0308079062812D00728B4
-:1044900010D008280ED004280CD009280AD00A28E9
-:1044A00008D00B2806D0052804D06F206649C0002C
-:1044B00010F08FFD6068807902F0F1FE0028A2D034
-:1044C0006178294361706168C8809CE7074600688D
-:1044D000C0308079062812D0072810D008280ED0C6
-:1044E00004280CD009280AD00A2808D00B2806D0A6
-:1044F000052804D055485449623010F06AFD6078B0
-:10450000284360706068C188386804E032E197E150
-:1045100084E084E00FE0C030018061680989418057
-:10452000616849898180002102200DF003FC386810
-:10453000C030C67167E706460068C030807906283B
-:1045400019D0072817D0082815D0042893D0092897
-:1045500011D00A280FD00B280DD005288BD03B484E
-:104560003949793010F035FD3068C0308079042841
-:10457000ABD00528A9D03068807C40063AD5606869
-:1045800002210C30FFF7E9FD002833D060680821D4
-:10459000001DFFF7E2FD00282CD03168B8204058FC
-:1045A000807A800708D1CA20405C002808D1488A58
-:1045B000C20505D5C00703D14A8A402082434A82FA
-:1045C0004A8A802082434A822D2268460270BC209B
-:1045D000425A684642801022973101A810F05CFBD5
-:1045E00009A9684609F0E4F90028A3D0174816493C
-:1045F000A03044E062683068AC2192890A52616858
-:104600000822091DAE3010F047FB10A80574306871
-:10461000AE30159014A80BF0D8F9F4E68F71064669
-:104620000068C030807906281FD007281DD00828D0
-:104630001BD00428F1D0092817D00A2815D00B2840
-:1046400013D005E0540000201C42000029030000A4
-:104650000528E2D0F949FA4810F0BBFC3068C030B8
-:1046600080790428D9D00528D7D0606881790029BD
-:1046700002D08078002805D0F148F0496C3010F065
-:10468000A8FCC0E66078B8212843607030680958FB
-:10469000897A8907890F012952D1817C09064FD473
-:1046A000017E490701D5042100E00321C030817259
-:1046B0002B206946087009A9684609F079F9002895
-:1046C00004D0DF48DD49213010F083FC69463068B2
-:1046D000098D81820E2210A90A74DA49B822159137
-:1046E000125808324A61024660324A6092790A7072
-:1046F000024614320A61521D8A601032CA60133AAF
-:104700008A619632CA61921C0A62473A4A62103242
-:104710008A621032CA62473ACA63521E0A64921F02
-:1047200050304A64886414A80CF038FB022815D075
-:10473000002813D0C248C1494A3010F04AFC0DE0AD
-:10474000817C4906017E490701D5042100E003214F
-:10475000C0308172002106200DF0ECFA3068418AE9
-:104760000A0602D440229143418289B280229143B9
-:10477000418248E6B4480068C0308079032804D0FC
-:10478000AF48AE49783010F024FC002108460DF007
-:10479000D1FA002107200DF0CDFA6078AA4A28430B
-:1047A0006070106810250146C0314B7A2B434B7264
-:1047B00063689D783C2D00D122E602469D88A03298
-:1047C000977763688030DB890B8063681B8A4B8036
-:1047D00063685B8A8B8095836168826BC979117588
-:1047E0006168806B08311530062210F055FA0620FA
-:1047F000FFF75CFB9448CA210068FB220E54017E3F
-:10480000114001764682284602F08CFC002804D034
-:104810008B488A49923010F0DCFB284601F09CFE60
-:10482000002804D086488549953010F0D2FB2846F0
-:1048300003F0E8FA00289CD08148804997301EE7B1
-:10484000607828436070DEE500290BD088807E48C0
-:104850000068C0300288CA8002880A8142884A8182
-:10486000808888817047F7B5064600780C46002797
-:10487000010982B03D46012974D073480068009058
-:10488000C03002296FD0072904D00A296CD06B49A7
-:104890006E48E3E171680A78521F130010F08AFC39
-:1048A0000F09A551A5A52F585847A5A5A5A5656F22
-:1048B000A5008A783C2A1BD010271625002C7DD015
-:1048C0008888A0807068A21DC08920827068C08915
-:1048D000E0817068008A60827068408AA082716896
-:1048E00008460831C07901F09FFB0020607375E035
-:1048F00019270725002CE2D00021A17171E01127B2
-:104900000725002CDBD089880091A1807168F722EF
-:104910008979A171417A11404172009802F008FC36
-:10492000009801F023FE009803F0B0FAC1E10127DE
-:104930000925002CC3D08888A080706880792072F7
-:10494000B7E1888812270E252146FFF77DFFB0E1E9
-:1049500018270825002CB2D08888A080A01DFFF75A
-:1049600040FBA6E145E0A1E15DE01A270725002C08
-:10497000A5D04888A08070680079A07199E18A78F4
-:104980003C2AB5D010271625002C98D08888A08006
-:104990007068C08920827068C089E0817068008A70
-:1049A00060827068408AA0827168607B497D40089F
-:1049B0004000C907C90F0843607300E036E1716821
-:1049C000C007497DC00F49084900084360737168FA
-:1049D000A21D08460831C07901F026FB1A4800687C
-:1049E000C030417AEF22114046E1532013490001C3
-:1049F00034E1307A012803D014481049C5382DE13C
-:104A000012270E2570892146FFF71EFF002C91D03A
-:104A100070784007400F032888D10B480068C030E9
-:104A2000417AFB22DFE708490968A031002C01D058
-:104A30008A8BA280327A921E0AE000001C4200009B
-:104A4000ED030000AC120020540000200C06000012
-:104A5000130010F0AFFB073D4853EDEE6F05ED007E
-:104A600013270C25002C90D0009900224A82F1686F
-:104A700089788907890F0129217A26D049084900B8
-:104A80002172FD231940F3689B785B07DB0F5B0005
-:104A900019432172E323E2801940F3681B785B0716
-:104AA000DB0E19432172DF231940F3685B78DB07C3
-:104AB0009B0E194321726272F1680122C978A172BA
-:104AC000017A1143F7221140ADE001231943D7E7E2
-:104AD00015270C25002C9AD0F06806220068A11D2D
-:104AE0000EF07CFFE5E016270725002C8FD0317BE8
-:104AF000A171017A08221BE00172DAE01427122565
-:104B0000002C84D00098A21D8030806B01461531A6
-:104B1000007D01F089FAB089E081207C0121084301
-:104B2000F92108402074FE480068C030017A022252
-:104B30001143E1E717273825002C77D03221A01D3B
-:104B400010F007F90020A071207A03210843207299
-:104B5000FB210840F24909680A7E5207D20F9200F1
-:104B600010432072B8204058807A800757D0A07A2E
-:104B70008A7C4008D2074000D20F1043FD2210402B
-:104B8000A0728B7CFB229B07DB0F10409B0018431D
-:104B9000A0728B7CF7269B07DB0F3040DB001843AD
-:104BA000EF231840A072E07A10408A7CD206D20F20
-:104BB00092001043E0728A7C3040D206D20FD200BD
-:104BC0001043E072888AA0812046102267310E309F
-:104BD00010F062F8D249A07F0968C0078A7DC00F33
-:104BE00052001043A0770A7E400852074000D20FBF
-:104BF0001043A077084640304DC820344DC4303CA7
-:104C00003F20405C22463032393101F00DFAC44871
-:104C100000688030806B817A890889008172C04881
-:104C20000068C030017AFB22114065E737E000E000
-:104C300038E0327B022A14D017273825002C2ED0DA
-:104C4000017AFB2319400172012A17D0032A17D0D9
-:104C5000042A18D0052A16D0B249B34810F0B9F981
-:104C600027E019270725002C19D0898BA180012165
-:104C7000A171417A4908490041721AE0012000E01F
-:104C80000220A07106E0707B0007000F8030A07149
-:104C9000052A02D00020E0710BE00120FBE7049818
-:104CA00005800CE0A0489F490A30D7E7317A0029F7
-:104CB00008D00498002C058001D027806580002052
-:104CC00005B0F0BD19270725002CE8D00021C94305
-:104CD000A1800021A171417AFD2284E610B5904C9B
-:104CE00094B02068C0308079022809D0032807D00A
-:104CF000052805D0092803D00A2801D00B2837D170
-:104D00001B2108A801730021817369460BA808F0D4
-:104D10004FFE002804D1684640781B2802D00320AB
-:104D200014B010BD002108460DF004F80021072042
-:104D30000DF000F868468078002819D12068C0304E
-:104D40008079801E030010F035FA0A060613081356
-:104D500013130D0F1113012000E00420FFF7A6F834
-:104D60000020DDE70620F9E70720F7E70820F5E750
-:104D70000820D5E770B50025694C002807D0022827
-:104D800017D0072828D033206649400146E0FFF7B6
-:104D9000A5FF00280CD1FEF7D6FA2221017005727A
-:104DA000FEF7EDFA2068C030417A022211434172C9
-:104DB00070BDFEF7C8FA122101700121017221684D
-:104DC000BC22525A4281C031CD71FEF7D8FA206818
-:104DD000C030417A0422E9E72168C620405C0228FD
-:104DE00009D0032807D0092805D00A2803D00B28AA
-:104DF00001D00528DCD1887B8109012911D08009E7
-:104E000004D0494847496E3010F0E3F80020FFF71E
-:104E100044FA0028CCD044484249723010F0D9F806
-:104E200070BD0020FFF708FAF3E770B50D460400E7
-:104E300004D1CD203B49C00010F0CBF820780128E8
-:104E400005D0394837499D3010F0C3F870BDA188AE
-:104E50003648334E814209D1E288824206D1306819
-:104E60001321A030808BFFF7ABF970BD814202D1D6
-:104E7000E08800280AD012202870687808210843AA
-:104E8000687007CC083507C5002106E000227823AA
-:104E9000114602200CF0A9FE02213068C030C17119
-:104EA00070BD1F480068C030807A704738B51C4C10
-:104EB00005460278206813000146C03110F07AF9E7
-:104EC00009A8060909A21945728AA800FEF7AEFFD3
-:104ED00038BD8879062806D0092804D0124811491F
-:104EE000B53010F076F820680422017E1143017677
-:104EF00088E0A9880029EBD0A030808B0B4988423C
-:104F0000E6D0A868002804D107480649C53010F04B
-:104F100060F8A8680A38A8600090AB88206807E0AD
-:104F2000540000201C420000E9050000FFFF0000C3
-:104F3000A030808B0622042102F028F80028C7D078
-:104F4000F849F94810F045F838BD287902288879E1
-:104F50000DD00428F8D00528F6D0284601F075F8C1
-:104F600020681321A030808BFFF72AF938BD07286D
-:104F700006D00A2804D0EC48EA490A3010F029F893
-:104F8000284601F062F820680122C030417A1143BE
-:104F900041728079072803D00920FEF787FF38BDCA
-:104FA0000620FAE7887906280AD0042808D00928BC
-:104FB00006D0052804D0DC48DA49313010F009F871
-:104FC0000ECDDA480361C2608160A2210170FEF754
-:104FD000EBF938BD8879062818D0072816D009289B
-:104FE0000DD00A280BD0D048CE4944300FF0F1FF45
-:104FF0002068C0308079062808D0072806D00B200A
-:10500000FEF754FF284601F020F838BD0820F7E7E6
-:10501000C548C449583095E7FFB593B001246846A8
-:1050200003218470C9021D4601800AF0A6F90022FE
-:105030006946012003F0ABF906460AF0A2F9002EFA
-:105040005CD16846152184704902018000271C212B
-:1050500001A808970FF07FFE01200146103108A833
-:1050600001700020014608A841708178F9200140B4
-:10507000891C214308A881706846017902263143C2
-:10508000017114998185C7851F21018608A80A909E
-:1050900013980D90684609900AF06FF90EAA09A9B5
-:1050A00001A802F036FF07460AF06BF9002F02D084
-:1050B000384617B0F0BD9E4F68463968008F48806B
-:1050C000684684709B49018008A88078F9210840CF
-:1050D000801C4108490008A88170684686850686BC
-:1050E00015A80D900AF049F90EAA09A901A802F025
-:1050F00010FF06460AF045F9002E01D03046D8E7E9
-:1051000068463968008F88808A4968468470C91C5F
-:105110000180298810A8018069884180A988818040
-:10512000E988C180082168468185018610A80D9014
-:105130000AF023F90EAA09A901A802F0EAFE044622
-:105140000AF01FF9002C01D02046B2E76846396802
-:10515000008FC8800020ACE7F0B5774D95B00C46C5
-:10516000A9423FD30126B604744FA11BB94239D3DB
-:1051700073498C4236D2202806D0212827D02228F5
-:1051800042D0072015B0F0BD3C216846017021884F
-:1051900041806188818009A908F00AFC0028F1D1CA
-:1051A00008A98979002903D002290ED00320E9E754
-:1051B0006168A942E6D38A1BBA42E3D3604A9142AE
-:1051C000E0D26A46128D0A80DCE75E48DAE72068A2
-:1051D000574C002813D00721490701224118920398
-:1051E000914201D31020CDE706210EF0E1FB2168AA
-:1051F000A82250500120A03188750020C2E7206805
-:105200000021A0308175F8E7204600F02AFFB9E7B9
-:10521000494A10B5914208D301229204474B8A1A99
-:105220009A4202D3464A914201D3102010BD202851
-:1052300005D0212803D0222803D0072010BD062046
-:1052400010BD084600F051FF10BD70B50446374848
-:10525000CC21AC300FF07FFD3448354EAC3000210E
-:105260003060C943A0308183002585770120FEF797
-:105270001DFE3068C7210D54E121C57389000182EC
-:10528000B6210D54014609310830FDF779FF316828
-:10529000084629311930FDF7A9FF002C24D03068C9
-:1052A00080308463FEF7C2FD1E20E081607A8F218A
-:1052B0000840303060723068014614312161983105
-:1052C0006162933921601031616025721339A162E6
-:1052D000091FE1628531E163303921631031616377
-:1052E00010310930A163A06470BD11480068C0305E
-:1052F0008079042803D0052801D0002070470120C0
-:10530000704770B506460C480C46814208D3012010
-:1053100080040A49201A884202D30948844213D3E0
-:10532000102070BD1C420000B30600004C1200208B
-:1053300054000020012A0000006001000000FC1F52
-:105340000040002002300000FFF7CFFF002801D00E
-:105350001120E6E7FD48FE4D002E02D0012E46D179
-:105360002FE02278002A0AD00121012A09D0022A3E
-:1053700014D0032AD5D1A2799209D2D112E000210A
-:1053800003E0A2799209032ACBD128680622017290
-:1053900060308171611C0FF07FFC05E0A2799209F9
-:1053A000012ABED128680172002107200CF0C2FC3E
-:1053B00028680622611C09300FF06EFCFEF736FDEE
-:1053C00011E02178002912D0012910D0022910D033
-:1053D0000329A6D10120FEF760FF002803D0DD4994
-:1053E000DD480FF0F6FD2868C673002099E7072016
-:1053F00097E70120FEF720FFEFE707214907012289
-:1054000010B541189203914201D3102010BDD0492C
-:10541000024609680B7A0931184600F005FE0020A3
-:1054200010BDFFB599B005460020694608710872A5
-:1054300008A9087408751E4614460121C748890446
-:10544000C74AC84B002D06D085420DD36F1A97422C
-:105450000AD39D4208D2002C09D0844204D3601A9A
-:10546000904201D39C4202D310201DB0F0BD2846CB
-:10547000204318D01F270CAB01AA009728461A9981
-:10548000FEF701FE0028F0D10DAB02AA31462046FE
-:105490000097FEF7F8FD0028E7D16846007AC107BB
-:1054A00003D00A20E1E70720DFE7800705D568463B
-:1054B0000079800701D50B20D7E7FFF716FF0028FA
-:1054C00001D01120D1E703AF002D0FD01A2069467B
-:1054D00008731A9888732946F81C1A9A0FF0DCFB97
-:1054E0000EA903A808F064FA0028BED1002C0ED043
-:1054F000202168460173867332462146F81C0FF05E
-:10550000CBFB0EA903A808F053FA0028ADD19049AF
-:1055100008A80968007C08700020A6E7F0B50446DA
-:105520008E48002795B084426FD301208004211A51
-:105530008B488142F8D38B48844266D22378012B72
-:105540000BD1864960688842EED39904421A844997
-:105550008A42E9D383498842EFD27D490A681546D9
-:10556000C035A879022814D0032812D0052810D0FD
-:1055700009280ED00A280CD00B280AD0012803D005
-:10558000002B06D0012B04D0687AC506AD0F06D1DA
-:1055900001E00820F6E5850701D4400701D5112078
-:1055A000F0E5012B15D0208A6F4E0546203DB5420F
-:1055B0007ED2022B01D0032B01D1A02878D3012B5E
-:1055C00007D01078C00704D0608A002870D0B428B3
-:1055D0006ED8002B06D0012B08D0022B04D0032B51
-:1055E00066D110E0002512E0022510E06068012578
-:1055F000007800280BD0012808D0022806D0032804
-:1056000004D05248BEE5032501E066E00127D07BC7
-:1056100001281CD1108A002819D0907B810901290A
-:1056200011D0800904D04C484A49E4300FF0D1FC35
-:105630000120FEF732FE00280BD047484549E830EC
-:105640000FF0C7FC05E00120FEF7F6FDF3E7FEF7DB
-:10565000EDFB207A002806D0012806D0022806D0CB
-:10566000032825D105E0002604E0012602E00226F9
-:1056700000E00326002D01D0022D42D1002E40D0A3
-:10568000E068002814D00179002928D008290FD813
-:10569000027B9446082A0BD800290ED02F4A0168B5
-:1056A00091421AD3012292048B1A2D4A934200E0B0
-:1056B00084E012D32B4A91420FD26146002912D0C6
-:1056C00080682649884208D301218904421A244966
-:1056D0008A4202D32349884205D3102052E5027B37
-:1056E000002A6BD0D4E71A4800680078800702D0FF
-:1056F0001648401E46E5022D03D1022E5ED0032E31
-:105700005CD0182168460170218A4180218A8180FD
-:1057100085710F480068007A002801D0012870D1F7
-:105720006946C8716846077221780930012932D06C
-:1057300006210FF00EFB07216846C173067409A904
-:1057400008F036F90028C9D10A210FE00232000022
-:10575000540000201C4200005F08000000600100AF
-:105760000000FC1F00400020E13F0000684601707F
-:1057700009A908F01DF90028B0D13A20694608703F
-:1057800009A9684608F014F90028A7D1002D08D00F
-:10579000022D06D04CE061680622491C0FF07CFA0D
-:1057A000C9E7002E44D00026374623E00168B00048
-:1057B00009580978002903D0012904D00720E1E421
-:1057C00069468F7002E001216A469170E168062205
-:1057D0000968095800A8491C03300FF05DFA0B2036
-:1057E0006946087009A9684608F0E2F80028E6D181
-:1057F000761CF6B2E0680179B142D7D800266F4630
-:1058000012E050E08068B10041581022B81C0FF03F
-:1058100043FA3B206946087009A9684608F0C8F8B1
-:105820000028CCD1761CF6B2E068017BB142E9D801
-:105830001B20694608700120887009A9684608F095
-:10584000B7F80028BBD108A840791B282BD1002D20
-:105850000AD0012D04D0022D08D0032D18D105E067
-:105860000320FEF723FB26E003200FE0FE4800683C
-:10587000C030807903000FF09DFC0916061616183B
-:1058800016081A1C1600022000E00920FEF70EFB85
-:10589000608A00280FD000228300114610460CF0C9
-:1058A000A4F9002807D003206CE40520EEE70A20C5
-:1058B000ECE70B20EAE7002064E470B586B00C004A
-:1058C00006460BD0E94884424AD301208004E849C7
-:1058D000201A884244D3E748844241D2E24D2868E6
-:1058E000C030C179022902D0407A400702D5112088
-:1058F00006B016E5002C04D02046FEF798FB0028E1
-:10590000F6D13046FEF75EFB012803D0022823D0F3
-:10591000D948EDE721001BD1082069468882286814
-:1059200001ABC08805AA002103F019F90028DFD1D6
-:105930006846808A082801D00320D9E76846818814
-:105940008181C188C181018901824189418203A984
-:10595000304601F074FCCBE7002C01D00620C7E7ED
-:105960001020C5E770B50C460546FEF72BFB012855
-:1059700003D0022801D0C048D3E421462846FEF7D0
-:105980001FFCCEE400B50146143095B0192801D2B1
-:10599000880707D008461E3004D00A3002D00720FE
-:1059A00015B000BDFFF7A1FC002801D01120F7E7DA
-:1059B000AD4831220068417068460270817009A9C3
-:1059C00007F0F6FFECE701B582B0022069460880D7
-:1059D000A54802AB00686A468088002102F02AFFD1
-:1059E00069460988022900D003200EBD38B502217E
-:1059F0006A4611800721490701224118920391420A
-:105A000001D3102038BD9849034609686A468C883E
-:105A10000021204603F0A3F8694609880229F1D045
-:105A2000032038BD3EB504460820694608808F48EB
-:105A3000844208D3012080048D49201A884202D371
-:105A40008C48844201D310203EBD2046FEF7EFFA79
-:105A50000028F9D12088694688806088C880A0889D
-:105A60000881E0884881804801AB00686A46C088A8
-:105A7000002102F0DFFE694609880829E4D00320EE
-:105A80003EBD1FB504460820694688817748844298
-:105A900008D3012080047649201A884202D3754831
-:105AA000844202D3102004B010BD6F486B460068DA
-:105AB00003AAC088002103F052F80028F3D16946F8
-:105AC0008989082901D00320EDE7694609882180EA
-:105AD00069464988618069468988A1806946C98884
-:105AE000E180E0E7FEB50546604817460E46814274
-:105AF00008D3012189045E4A731A934202D35D4B95
-:105B00009E4201D31020FEBD1F2F01D90C20FEBDE7
-:105B1000554C85422AD3681A904227D39D4225D2FC
-:105B2000206801A9408802F037FE0028EFD12878CC
-:105B300069464871206801A9408802F010FE0028DB
-:105B4000E5D169460090087802210843694608704B
-:105B50004979090703D0082108436946087020687D
-:105B60006946408802F0A5FD0028D0D169460F8122
-:105B700020683346408802AA002102F05BFE694695
-:105B80000989B942C3D00320FEBD38B50C460721B0
-:105B9000012249079203002802D04318934202D2FF
-:105BA0006118914201D3102038BD21886A461180C6
-:105BB000002801D000290BD02B49034609684D88E5
-:105BC0000021284602F0CBFF69460988218038BDB4
-:105BD0000C2038BD30B50C46244987B08C4208D320
-:105BE00001218904224A611A914202D321498C423F
-:105BF00002D3102007B030BD1B4D2968C0310A7A8E
-:105C0000520708D48979491F0B000FF0D3FA050415
-:105C10000604040604000820ECE7FEF7D3F9012887
-:105C200003D0022839D01448E4E720881E2801D286
-:105C30000720DFE72868C030807906282BD00A20AB
-:105C4000FEF734F90520694608700879A1788008C4
-:105C5000C9078000C90F084369460871FB21084045
-:105C6000A1788907C90F09E05400002000600100F5
-:105C70000000FC1F004000200230000089000843A3
-:105C8000694608712088C880684609F09EFE002891
-:105C9000B0D00320AEE70720D2E70620AAE7F0B590
-:105CA00087B014460D46FEF78DF9012804D002286E
-:105CB00002D0FE4807B0F0BDFD4B18680146C03168
-:105CC0000A7AD20707D08A79042A04D0052A02D09A
-:105CD000002D02D052E00820ECE7F64A944208D3A7
-:105CE00001229204F44BA21A9A4202D3F34A94423C
-:105CF00001D31020DEE7A278D206520F042A0CD876
-:105D0000E378072B09D3102B07D822799A4204D3C2
-:105D1000102A02D822881E2A01D00720CAE702468C
-:105D20008032966BF727F372966B23793373966BF9
-:105D3000737A3B40A778BF06FF0FFF003B437372A7
-:105D4000966B2388F381966BA778B37AFF079B083D
-:105D50009B00FF0F3B43B372FB273B40A778966B3A
-:105D6000BF07FF0FBF003B43B372926BA478537A17
-:105D7000E406DB08DB00640F234353720B226B46FF
-:105D80001A70852D22D008DC002D17D0812D17D058
-:105D9000822D17D0832D08D116E0862D18D0882D9E
-:105DA00018D0892D18D08A2D18D00B221A71B6223E
-:105DB000125CBF4C002A13D0A83012E00022F5E795
-:105DC0000122F3E70222F1E70322EFE70522EDE7E4
-:105DD0000622EBE70822E9E70922E7E70A22E5E7DE
-:105DE00000200290887907280BD0082809D00920C4
-:105DF000FEF75CF8684609F0E8FD002803D00320B0
-:105E000058E70620F4E720680422C030017A4908E8
-:105E100049001143017200204CE770B5A44E0D46B5
-:105E2000316886B0C031097A1446090701D40820C8
-:105E30005EE5FEF7C7F8012803D0022801D09B4891
-:105E400056E5002D12D09B48844208D301208004DF
-:105E50009949201A884202D39848844201D31020DD
-:105E600046E5012D0BD0022D02D106E0002C01D019
-:105E700007203DE50020029005E0022000E001201F
-:105E8000694608710294032069460870684609F063
-:105E90009CFD002801D003202AE53068F722C0309D
-:105EA000017A11400172002022E570B594B01446C9
-:105EB0000E46FEF787F8012804D0022802D07B485E
-:105EC00014B059E57A4D2868C030007A800701D4B3
-:105ED0000820F5E7002C01D00720F1E7FFF705FACD
-:105EE000002801D01120EBE7002E1DD02D2168469F
-:105EF00001702C68BC20015B684641801022B11CF7
-:105F000001A80EF0C9FE207EFB210840B17CC90724
-:105F1000490F08432076B07CFF214008A075608AB5
-:105F200082310843608207E02E21684601702868AC
-:105F3000A030818B6846418009A9684607F038FD8A
-:105F40002968FD23C0310A7A1A400A72B8E710B5F1
-:105F50000C46FEF737F8012803D0022801D0534839
-:105F600010BD5448844208D3012080045249201AAD
-:105F7000884202D35148844201D3102010BD2046EC
-:105F8000FEF72FF8002010BD10B594B00446FEF7C0
-:105F900019F8012804D0022802D0444814B010BDDA
-:105FA00043480068C0308179042910D005290ED0FB
-:105FB0003820694608704C8001200871487109A991
-:105FC000684607F0F5FC0028E8D00B20E6E7002043
-:105FD000E4E710B594B00446FDF7F4FF012803D0C0
-:105FE000022801D03148D9E731480068C0308179B2
-:105FF00004290DD005290BD03820694608704C8043
-:1060000000200871487109A9684607F0D1FCC5E76E
-:106010000020C3E726480068C0308079062801D3F5
-:10602000012070470020704708B51346002806D0AD
-:1060300023A00068009048796A468009105C1870B7
-:106040000622581C0EF028FE08BD10B50446FDF7C8
-:106050007AF9A22101700ECC08300EC0FDF78FF93D
-:1060600010BD70B5124C054601682068002913D098
-:10607000104A914208D3012292040F4B8A1A9A4285
-:1060800002D30E4A914201D3102075E410227730DA
-:106090000EF002FE206801218030806B01722068C2
-:1060A000A9880182C17B012919D10BE002300000CF
-:1060B00054000020006001000000FC1F0040002090
-:1060C0000302FF01807B800901280AD00120FEF72E
-:1060D000E4F8002803D01A491A480EF07AFF00208D
-:1060E0004AE40120FEF7A8F8F3E770B5054600681A
-:1060F000154C00281ED007214907401801218903AB
-:10610000884201D3102037E42068B8210958097A61
-:10611000012909D00146773129300AF08EFF206825
-:1061200001218030806B017221681022286877314C
-:106130000EF0B2FD2068008AA88000201CE4000058
-:106140001C420000FD02000054000020FFB581B099
-:1061500001980E46C078174610360E37022809D02F
-:10616000032840D005287DD0F2A1F7480EF031FF7A
-:1061700005B0F0BDCC890A2060430E301880312371
-:106180000A98002A0380F3D0486800889080002095
-:10619000D0801081097B9481891FCDB21AE03088AC
-:1061A0007168388048780A7800021043F880C8780F
-:1061B0008A78000210433881BA1C091D28460BF06A
-:1061C0008AF8002D01D0002802D000203871788094
-:1061D00008360A372046641EA4B20028DFD1019990
-:1061E0000020C870C4E7CC890A2060430E301880B4
-:1061F00032230A98002A0380BAD048680025008814
-:106200009080D5801581087B401FC0B2009094819A
-:1062100042E0716832880878FA803A79C3075208F8
-:106220005200DB0F1A43FD231A408307DB0F5B008C
-:106230001A43FB231A404307DB0F9B001A43F72343
-:106240001A400307DB0FDB001A43EF231A40C30693
-:10625000DB0F1B011A43DF231A408306DB0F5B01B0
-:106260001A4300E020E0BF231A404306DB0F9B01E6
-:106270001A433A71C00978718A784B781002184332
-:1062800038813A46C91C00980BF025F8002801D047
-:10629000BD703D8008360A372046641EA4B200282F
-:1062A000B7D10198C57063E7087BCC89801E85B2A1
-:1062B0002846083060431030188034230A98002A9A
-:1062C00003808FD048681746008890800020D080D7
-:1062D000108194811037E000D581C0190CE030881E
-:1062E0003880009878602A46716800980EF0D4FCD7
-:1062F000009808360837401900902046641EA4B262
-:106300000028ECD16BE7FFB50546C07881B00C469C
-:106310000A9E03000EF04EFF0BA3071733414F6D8B
-:106320008F9D9D9DA300207B1746082806D003283B
-:1063300004D085487FA154300EF04BFE04990E2006
-:10634000088030200CE0207B1746042804D07E48CB
-:1063500078A171300EF03DFE04990E2008803120A6
-:106360003080002F44D060680088B880607AFF30A9
-:106370000130F880E08938810020B88137E0207B47
-:106380001746042804D070486AA18D300EF021FE13
-:1063900004990E2008803220E2E7207B174602286D
-:1063A00004D0694863A1A9300EF013FE04990E20B1
-:1063B00008803320D4E7207B1746042804D06248A5
-:1063C0005CA1C4300EF005FE049810210180342039
-:1063D0003080002F0CD060680088B880607AFF3071
-:1063E0000130F880E08938810020B881F881E870B8
-:1063F000BEE6207B1746052806D0062804D0524862
-:106400004CA1E1300EF0E5FD049812210180352009
-:106410003080002FECD060680088B880607AFF3050
-:106420000130F880E0893881E089B8810020388225
-:10643000A988F981DBE7207B1746072804D042486A
-:106440003CA1F8300EF0C5FD04990E2008803620DE
-:1064500086E700962846049B00F02DFD88E635A1CE
-:106460003A480EF0B6FD83E670B5054600780C4656
-:10647000082603000EF09EFE124C3434241C380A09
-:106480000A0A0A0A0A0A0A0A0A0A0A4C687800284A
-:1064900004D02E4827A12C300EF09BFD002C03D1F8
-:1064A0001F2024A1400108E060783043607020E0A4
-:1064B000002CF9D17D201FA1C0000EF08AFDF3E76A
-:1064C000002904D03F201BA100010EF082FDFCF743
-:1064D0003AFF0446407830436070FCF750FF08E014
-:1064E0001A4814A1473002E0184812A14C300EF0AF
-:1064F00070FD002C0AD06078000707D5932020702B
-:106500002046582229460830FAF75EFE002070BD6A
-:106510000E4808A15030EAE710B500200C4C0D4998
-:106520000346C2008C525218401C0006D370000E65
-:10653000F7D010BD7372635C67617474635F636FDF
-:1065400072652E63000000005A020000B3030000D1
-:10655000FFFF000058000020FE49088001208870DD
-:1065600000207047FB4900208870704710B500215B
-:10657000F848C94301800021C17007F053FAD8E7F9
-:10658000F7B584B0054600276846078187806868AC
-:106590000C46008800F0ECFB0646287A032805D05C
-:1065A000002E03D1EC49ED480EF013FD297A204668
-:1065B000C91E123000900B000EF0FCFD0FF2F1F03E
-:1065C0003D09AA465C6D34B3CDF38B8BF000F078B7
-:1065D000012803D0E049AD200EF0FBFCA8896946F4
-:1065E000C0000E30888030200881002C22D06868DE
-:1065F0000188A180E7802781A989A18100200DE081
-:10660000C100B27909190A74B288CA81820052198C
-:10661000D3894B82128A401C8A8280B2A18981422E
-:10662000EED8D7E002A8009001AB224629463046BA
-:1066300000F0CCFBF1E002A8009001AB2246294615
-:10664000304600F005FCE8E0F07806281AD0FF207C
-:10665000C149223014E068680188A180E780278161
-:10666000A989A181B188E181E9892182EA89296921
-:1066700000982BE0F078062804D0FF20B6493C3083
-:106680000EF0A7FCE8896946123088803520088121
-:10669000002CE0D1C1E0F078072804D0FF20AE49FB
-:1066A00056300EF096FCA88969460E308880362058
-:1066B0000881002CBED068680188A180E78027810E
-:1066C000A989A1812046AA890E3029690EF0E4FA31
-:1066D00080E0E8896946123080B2382288800A81D9
-:1066E000002C79D068680188A180E7802781A9897A
-:1066F000A181287A102809D00221A173E989218279
-:10670000EA89296900980EF0C7FA86E00121F4E7CA
-:1067100002A8009001AB224629463046FFF716FD3D
-:106720007BE0F078082803D08B498D480EF051FCAF
-:1067300014206946888037200881002C6DD0686855
-:106740000188A180E7802781A989A18167822782AA
-:106750000120A0733EE0F078092804D080487E49EB
-:1067600018300EF036FC288A6946143088803720AD
-:106770000881002C51D068680188A180E78004213D
-:106780002781A173A989A181E9892182298A61824E
-:1067900020462A8A1430696998E702E038E01CE054
-:1067A00024E0F0780A2804D06D486B4933300EF0AD
-:1067B00010FC14206946888037200881002C2CD0DA
-:1067C00068680188A180E78027810521A173A781DE
-:1067D00027826782F77020E017E002A8009001ABE3
-:1067E000224629463046FFF78EFD16E00D20694609
-:1067F000392288800A81002C07D00120E08055488A
-:106800000188A1802781277307E00699088010E09E
-:106810008F205149C0000EF0DCFB68460699808845
-:106820000880002C05D06846008920806846808852
-:106830006080002007B0F0BDF7B594B015460F4654
-:10684000149800F0A0FA04000AD0032000F088FB9E
-:10685000022802D2E078002804D0112017B0F0BD41
-:106860004048FBE71720694601260883002D0FD01A
-:106870000321684601711021018210A8024605908B
-:1068800004A928460AF04DFD00280DD00720E5E7B1
-:1068900008216846017100210781C9434181052112
-:1068A0008673C90281810CE0A878A0712888A08035
-:1068B000684605218673C902818100210781C94389
-:1068C000418109AA023206A901A807F0E4F80028CC
-:1068D00002D000F06BFAC1E707A800906846038B6E
-:1068E00004220321149800F051FB0028B6D1E67071
-:1068F000B4E770B592B00D0006460ED000F043FA32
-:1069000004000CD0032000F02BFB022802D2E07818
-:10691000002806D0112012B070BD1020FBE71148EE
-:10692000F9E7172168468180042101722988818155
-:106930006988C181012181740B4901820AAA02324E
-:1069400001A902A807F0A7F800280FD000F02EFA3E
-:10695000E1E7000058000020346500003C0400001E
-:1069600063020000023000000228000008A8009026
-:106970006846838804220321304600F007FB002884
-:10698000C9D10221E170C6E770B592B00D0006468C
-:106990000DD000F0F8F904000BD0032000F0E0FA6D
-:1069A000022802D2E078002805D01120B3E7102099
-:1069B000B1E7FA48AFE717216846818004210172E8
-:1069C000298881816988C18101218174F44901820A
-:1069D0000AAA023201A902A807F05DF8002802D035
-:1069E00000F0E4F997E708A800906846838804223D
-:1069F0000321304600F0CAFA00288CD10321E1704F
-:106A000089E770B592B00D0006460DD000F0BBF9D5
-:106A100004000BD0032000F0A3FA022802D2E07891
-:106A2000002805D0112076E7102074E7DB4872E7D4
-:106A3000022168460172298881816988C1811721F4
-:106A400081800AAA023201A902A807F024F80028CE
-:106A500002D000F0ABF95EE708A800906846838892
-:106A600004220321304600F091FA0028DBD10421F2
-:106A7000E17050E7F0B591B015000E4607460ED014
-:106A800000F081F904000CD0032000F069FA02281C
-:106A900002D2E078002806D0112011B0F0BD1020FD
-:106AA000FBE7BE48F9E7172168468180042101729F
-:106AB000298881816988C181B17881743188018296
-:106AC0000AAA023201A902A806F0E5FF002802D0B6
-:106AD00000F06CF9E1E708A800906846838804227A
-:106AE0000321384600F052FA0028D6D10521E17082
-:106AF000D3E7F7B592B015460E46129800F043F969
-:106B000004000AD0032000F02BFA022802D2E07819
-:106B1000002804D0112015B0F0BDA048FBE70627DF
-:106B2000002D12D0684607728681C581A580172086
-:106B3000694688800AAA023201A902A806F0ABFFC2
-:106B4000002807D000F032F9E5E705216846017218
-:106B50008681EBE708A80090684683880422032119
-:106B6000129800F013FA0028D5D1E770D3E7F7B5F3
-:106B700092B016460D000ED0129800F004F90400F1
-:106B80000BD0032000F0ECF9022802D2E0780028B4
-:106B900005D01120BFE71020BDE78048BBE70727DD
-:106BA0006846077286811721049581800AAA0232FD
-:106BB00001A902A806F06FFF002802D000F0F6F845
-:106BC000A9E708A800906846838804220321129848
-:106BD00000F0DCF900289ED1E7709CE7F3B51720A0
-:106BE00091B00C46002915D021780B000EF0E2FA86
-:106BF000062B05051A041C2B1520C01EE28880B246
-:106C0000002A02D0A368002B04D0824204D90C20B1
-:106C100013B0F0BD1020FBE7042905D0A0880028A0
-:106C200011D101E00620F3E7119800F0ACF805005F
-:106C30000BD02078092701281AD0022807D0042871
-:106C400024D0052835D00720E2E75448E0E768461D
-:106C5000077161880181E1884181A068082603905D
-:106C6000304600F07DF9072829D34C48801CCFE737
-:106C70000C216846017161880181E1884181A06829
-:106C800003900EE0E878002811D118E00D21684645
-:106C9000017161880181A1884181E1888181A068B9
-:106CA00004900326304600F05BF90228EAD3112055
-:106CB000AEE70E2168460171217B0172F1E71721D1
-:106CC0006846018309AA023206A901A806F0E3FE7C
-:106CD000002802D000F06AF89AE707A800906846FA
-:106CE000038B04223146119800F050F900288FD10F
-:106CF0002178012907D002298AD0042905D0052945
-:106D000005D0032084E7082102E0EF7080E70A2124
-:106D1000E9707DE730B591B00C46054600F033F8D8
-:106D2000002808D0032000F01BF9022805D31B48D7
-:106D3000801C11B030BD1948FBE70F216846017176
-:106D400004811721018309AA023206A901A806F0CD
-:106D5000A2FE002802D000F029F8EAE707A8009078
-:106D60006846038B04220321284600F00FF9E0E770
-:106D70000C49884205D00C490988814201D10A4852
-:106D800070470020704710B5FFF7F2FF002802D0CF
-:106D90008178C90700D1002010BD0000023000003A
-:106DA00003280000FFFF000058000020002806D044
-:106DB000012805D0052805D0062805D003207047F6
-:106DC00011207047082070475C487047FFB583B0BA
-:106DD00003980C9EC0781D4614460F46012803D028
-:106DE0005749D2200EF0F5F8F889C0000E302880FF
-:106DF00030203080387B001FC0B20190002C26D09C
-:106E000078680088A0800020E0802081F889A08137
-:106E1000002616E0F0000519C01900902A464169C5
-:106E20000E3201980AF057FA002802D00020287488
-:106E3000E8810098761C008A68820098B6B2408A81
-:106E4000A882A089B042E5D803990020C870F1E477
-:106E5000F8B50646C0781F4614460D46042804D0EF
-:106E6000FF20374903300EF0B4F8A88906214843C3
-:106E70000E30388033210698002C01801AD06868C3
-:106E80000088A0800020E0802081A989A18103469C
-:106E90000CE01946062251434A190919D789CF81B6
-:106EA000977C8F74128A5B1C0A829BB2A1899942DB
-:106EB000EFD8F070F8BD70B514460546142204985A
-:106EC0001A8037220280002C18D0486800260088DB
-:106ED000A080487AFF300130E080C8892081C889CD
-:106EE000A0816682E878082809D0092811D00A28EC
-:106EF00019D0134913480EF06CF8EE7070BD087B82
-:106F00000C2804D00F480E490C380EF062F801200E
-:106F100012E0087B0D2804D00A48094908380EF011
-:106F200058F8042008E0087B0E2804D005480449DE
-:106F3000001F0EF04EF80520A073DEE703300000BE
-:106F4000346500008203000001460020FA4A02E096
-:106F5000401C082803D24300D35A8B42F8D1704713
-:106F600030B50446F44A0020163A117953790AE004
-:106F70005518AD79A54201D1401CC0B2491CC9B217
-:106F8000102900D100218B42F2D130BDFFB5EA4873
-:106F900081B0163841790A9C491CCDB21E46102D8D
-:106FA00000D10025E44816380079A84202D1042017
-:106FB00005B0F0BD0820FFF7D3FF0746072804D926
-:106FC000FF20DEA1A5300EF004F80298082801D1B8
-:106FD000072F17D001982080301D6080002060713D
-:106FE0002071E68003982081204606F005FD0028E8
-:106FF0000AD0D148029916384379821D99544571B7
-:107000000020D5E7D248D3E7FF20CCA1B7300DF060
-:10701000E0FF0320CCE7F0B58DB0044600256846BC
-:10702000057116468C460620FFF79AFF00281CD1F2
-:1070300021780127C807002801D0132917D96846ED
-:1070400087766178C17602218183C58304A8009088
-:1070500070680C23008805220621FFF797FF00289F
-:1070600003D0B6A185200DF0B4FF0DB0F0BDB2483D
-:1070700016380278002AF8D0427863789A42F4D120
-:10708000012918D0132919D16146062916D1057096
-:10709000002101200AF04EFE6846077170680188E1
-:1070A0006846C1800021C9430181607922790102CB
-:1070B000114368461AE06146062908D068460079FF
-:1070C0000028D2D0314601A8FDF7AFFECDE705700C
-:1070D000002101200AF02EFE6846077160792279AE
-:1070E00001021143684601810021C9434181E9E75A
-:1070F000914810B50021163801704A1E4280417037
-:107100000171417101200AF015FE10BD10B5FFF7A5
-:10711000EFFF0020884902464300401CCA5208285D
-:10712000FAD310BD84491639488000207047DFE744
-:1071300070470EB501216846017086498180C18083
-:107140000021FDF772FE0EBDF7B505460078002759
-:1071500000090C463E46012804D0FF2077A1683084
-:107160000DF037FF287A02280CD0FF2073A17E3063
-:107170000DF02FFF0298002C068001D0278066803A
-:107180000020FEBDEA89702710460A3086B2002C26
-:107190000BD068680088A080A8892081E280204602
-:1071A0000A3029690DF078FDE4E702980680E7E7E8
-:1071B000F0B543680246D9799C79090221435C7A8B
-:1071C0001E7A25025C88981D3543241F87B0A14292
-:1071D0001DD11B79022B1AD1042D1AD0052D2AD0CE
-:1071E000062D1AD0402D12D3061D0F4614462846F0
-:1071F000FFF7AAFE08280AD0112020700220207272
-:10720000A581E7812661607808210843607007B096
-:10721000F0BD001D00F0E1F8F9E7041D0D46FEF792
-:10722000F9FE0028F3D0062168460170019405722A
-:1072300008F0CBFBEBE7001DFFF7EDFEE7E710B52D
-:107240003D4C8AB0163C2278012A26D012236A4689
-:10725000937363789B1CD373082313820B88538228
-:107260004B8893828B88D382C988118301A90091AE
-:107270000C2305220721FFF789FE00280BD10022ED
-:10728000F023114601200AF0B0FC01202070607844
-:10729000801C607000200AB010BD1120FBE7F0B523
-:1072A000254C0027163C87B00646A51D1FE06079D7
-:1072B0002179884204D1112020A140010DF089FEDE
-:1072C0002079405D042804D0082808D17F1CFFB233
-:1072D00005E0072069460870684608F076FB2079CB
-:1072E000401CC0B22071102801D10020207130460E
-:1072F000761EF6B20028DAD1384688E710B5044683
-:10730000402801D2072010BDFFF71EFE082802D03A
-:107310003120000210BD0021074802E0491C082965
-:1073200003D24A00825A002AF8D1082914D0490011
-:107330004452002010BD0000DA1300207372635C19
-:107340006C326361705F636F72652E6300000000D2
-:1073500004300000FFFF00000420EBE700B54028E8
-:1073600001D2072000BDFFF7EFFD082805D000215E
-:107370003B4A40001152084600BD052000BDF0B553
-:107380008BB016460C00074607D0002E05D061884A
-:10739000402904D207200BB0F0BD1020FBE7208865
-:1073A000002801D0172801D90C20F4E70846FFF780
-:1073B000CBFD08280FD0258803A82A463146023085
-:1073C0000DF06AFC01A8009062882B46082138461F
-:1073D000FFF7DCFDDFE70520DDE7F0B50E460746E9
-:1073E00001468BB014460125304606F0D1FC082832
-:1073F0001DD10020694608850120FFF7B1FD002856
-:1074000002D117206946088503AB02330AAA394620
-:107410003046009407F0CFF800280AD0022819D08F
-:10742000032804D0FF200F4902300DF0D2FD28467A
-:10743000B1E76846038D002BF9D001A80090606881
-:10744000042200880121FFF7A1FD0028EFD00549A3
-:10745000EC20EAE760780025102108436070E6E739
-:10746000DA1300203C730000002803D08178012942
-:1074700039D101E0102070470188FA4A881A9142F8
-:1074800033D01BDCF84A881A91422ED00BDC00293D
-:107490002BD00320C002081A27D0012825D00121B3
-:1074A0000903401A07E001281FD002281DD0FF2839
-:1074B0001BD0FF380138002815D116E0FF22013219
-:1074C000811A904211D008DC01280ED002280CD07D
-:1074D000FE280AD0FF2806D107E0012905D002299D
-:1074E00003D0032901D0002070470F20704700B55A
-:1074F0000A2821D008DC03000DF05CFE0A1C2024C1
-:10750000241A24282224261A102819D008DC0B2833
-:1075100016D00C2814D00D281AD00F2808D111E04D
-:1075200011280FD0822807D084280DD085280DD0AF
-:10753000032000BD002000BD052000BDCB4800BDDC
-:10754000072000BD0F2000BD042000BD062000BDA7
-:107550000C2000BD70B500290BD0CB1FFA3B812455
-:107560001E46CDB2112B1BD2012805D0022806D011
-:1075700009E0002010701DE0FF20043001E0FF2032
-:107580000330814218D033000DF014FE111613138E
-:1075900016131616131616161313131316131600B6
-:1075A0000846FF3881381F2803D9FF39FE390229E0
-:1075B00002D81570002070BD1470072070BD00B592
-:1075C00003000DF0F7FD060406040C080A0C002069
-:1075D00000BD112000BD072000BD082000BD032014
-:1075E00000BD00780207120F04D0012A05D0022A3C
-:1075F0000AD10EE0000907D108E00009012805D0F2
-:10760000022803D0032801D007207047087000200B
-:10761000704706207047002807D0012807D00228AD
-:1076200007D0032807D007207047002004E011206E
-:1076300002E0212000E0312008700020704738B5BA
-:107640000C4605004FD06946FFF7CBFF002822D13A
-:107650002088032189028843694609788907090D32
-:10766000084320806946681CFFF7BBFF002812D141
-:107670002188032000038143684600788007800C3E
-:1076800001432180A8784007820F2020012A03D0DF
-:10769000022A03D0072038BD814300E00143218046
-:1076A00088B20105890F08D0012189038843A97890
-:1076B0000907C90F89030843208080B28104890F1C
-:1076C0000AD0A9784004C906C90F400CC903084371
-:1076D00020808004800F02D12088400403D52088B8
-:1076E000402108432080002038BD70B504460020AA
-:1076F000088015466068FFF7A2FF002815D1218990
-:10770000A089814210D86168594E8978C90707D08D
-:10771000711E884208D831460DF038FB298009E0F7
-:10772000FF21FF31884201D90C2070BDFF30FF30AE
-:107730000330288060688078C007A08903D0314674
-:107740000DF024FB03E0FF30FF30033081B22980CD
-:1077500020688178474801732068464900882039AD
-:107760004885002070BD10B5137804785B08E407E5
-:107770005B00E40F23431370FD2423400478A40727
-:10778000E40F640023431370FB2423400478640750
-:10779000E40FA40023431370F72423400478240744
-:1077A000E40FE40023431370EF2423400478E4063D
-:1077B000E40F240123431370DF2423400478A4063C
-:1077C000E40F6401234313700078BF244006C00F08
-:1077D0002340800103431370002906D00878C107B5
-:1077E00001D1800701D5012000E00020C001590629
-:1077F000490E0843107010BD30B50A8803239B0260
-:1078000004889A4323059D0F02D1A3049C0F01D045
-:107810009B0F00E001239B021A4303230A801B03F2
-:107820009A4303889804840F02D11805830F01D06E
-:10783000800F00E00120000302430A8030BDF3B551
-:1078400091B00D0018D01198002818D012212846A8
-:107850000DF07FFA01A9012007F0A9FE00242646B9
-:10786000374677E0022900000128000003300000BD
-:10787000010200000C140020102013B0F0BD0720FE
-:10788000FBE76846007C01280BD16846C1890520CA
-:10789000C002081A0AD001280AD002280CD00328F6
-:1078A0000CD0042C0ED0052C0FD10DE0012400E0EB
-:1078B00002246846868908E0032406E0684604241A
-:1078C000878902E0052400E0062468468189119832
-:1078D00081423FD12C74002E3AD00BA800900CAB03
-:1078E00010220021304607F0F4FE002820D168461F
-:1078F000808D2A46C0B20CA909F0EDFC002817D1F2
-:10790000AE81002F24D00BA8009006AB13220021DB
-:10791000384607F0DEFE00280AD16846808D06A9A9
-:10792000C01E0331C0B22A1D09F0D5FC002801D0C9
-:107930000320A2E76846817E427E08021043E88168
-:10794000062C05D16846007CA8726846C08928814B
-:10795000002092E701A807F032FE002891D0FFF73F
-:10796000C6FD8AE7002804D0012903D0022904D0EB
-:1079700003207047F949C98D02E0F8494031C988B0
-:10798000814201D1002070470720704730B5F34C89
-:107990000025608B91B0C00B2ED1216900292BD01E
-:1079A000207B800728D401226846027102720022DF
-:1079B0004272228B8281A28A8282049117210183E2
-:1079C00009AA0023023206A901A807F0A7F9002896
-:1079D00003D0FFF7F4FD11B030BD207B0221084336
-:1079E000207307A8009069460B8B20880422012190
-:1079F000FFF7CCFA05460BE0FBF7A5FC84210170EC
-:107A00000921017218341ECC0C301EC0FBF7B7FCE4
-:107A10002846E0E710B5D14C034621690020002933
-:107A200009D02146012210311846FBF76BFE0020D9
-:107A30002061A0820120217BF9221140217310BD19
-:107A400070B50C4605461C2120460DF082F9002039
-:107A50002080002D08D0012D04D0C1A1C5480DF013
-:107A6000B8FA70BD062000E00520A07070BD10B50A
-:107A700007F07CFB10BDFEB50546007800260C46DD
-:107A8000374603000DF096FB0C91070C1D962F4610
-:107A90002F46486C899168680A38FBF793FD89E0A6
-:107AA000002904D0B348AEA11B300DF092FAFBF7C9
-:107AB0004AFC04464078082108436070FBF75FFCED
-:107AC00078E0002C04D1BB20A5A180000DF081FA44
-:107AD000284601F0B1FA00286CD0607808210843EC
-:107AE0006070022666E0E888694608800190002CF4
-:107AF00004D1A0489AA12F300DF06BFA28780728FE
-:107B00001CD10198C00B19D0944800218171A9881B
-:107B1000818012E003264DE0002C04D1C52090A105
-:107B200080000DF056FA8D48017B89070BD500695E
-:107B3000002802D0E888C00B3CD0022660780821DB
-:107B40000843607036E0291D8EC918308EC0283871
-:107B50000188022601222046FBF7B6FD0127EDE74A
-:107B6000002C04D183487EA164300DF032FA7B48AA
-:107B70000821007B4007C00F460060780843607012
-:107B8000002E17D12879012802D16879002811D058
-:107B90002046FFF73FFF07460CE0002CCED10D201A
-:107BA0006FA180010DF015FAC8E772486CA17A3018
-:107BB0000DF00FFA002C0CD06078000709D5002FCB
-:107BC00007D1842020702046582229460830F9F732
-:107BD000FBFA3046FEBDF7B5027A88B00C46054682
-:107BE00020460C300490069216300027921E029018
-:107BF0003E460A31594813000DF0DCFA0ADF06E66A
-:107C00002AE62AE66A98C6E64288002A02D0522767
-:107C10000726DDE051271E26002C7DD06A684F48DC
-:107C20001288A2800122A2718079C0004019C08907
-:107C3000FFF705FE002877D148488179C900491926
-:107C4000C98921818079C0004019408AA083BFE0A2
-:107C5000688A00900698072817D1E889C00B14D0CD
-:107C600000985127223086B2002C55D0A88904995B
-:107C7000FFF7E5FD002857D168680088A080022042
-:107C8000A071A8892081012041E000985027203070
-:107C900086B2002C40D0A889FFF7D1FD002843D13F
-:107CA00068680088A080A889E080287A07280AD020
-:107CB00002202072288AA0830098E0832046696908
-:107CC0002030009A01E00120F3E70CF0E5FF7FE0AF
-:107CD000698A00910169002902D0E989C90B22D083
-:107CE0000099512722318EB200218171A9898180AA
-:107CF000002C5FD00088A080A8890499FFF79FFD21
-:107D0000002811D10220A071A88920810420A0722E
-:107D1000288AE083009801E04CE005E0208469694E
-:107D2000009A0298D1E703200BB0F0BD007B40071A
-:107D300002D55127222601E050272026002C39D0D9
-:107D40006868502F0088A08016D00220A0712146BC
-:107D5000287B0831FFF774FE3AE00000EC130020A6
-:107D60007372635C67617474735F636F72652E63B3
-:107D700000000000CB020000287BA11DFFF760FE81
-:107D80000020FFF747FE23E0A9890089884207D138
-:107D900054270626002C0DD068680088A08017E0C4
-:107DA00053270826002C05D068680088A080A88981
-:107DB000E0800DE00A98068010E055270726002C89
-:107DC000F8D00020A07103E0FD49FE480DF001F954
-:107DD0000A98002C068001D0278066800020A3E747
-:107DE000F94800210172203801814181418081716F
-:107DF0008180027BF923520852001A40027301610C
-:107E00008182704770B5F04C86B0203C2080002005
-:107E10006080A071A0806946012007F0C8FB102691
-:107E200008E00199088802461207D20FB0431201F8
-:107E300010430880684607F0C2FB0500F1D02069B6
-:107E4000002804D0DF48DE4933300DF0C2F8207B33
-:107E5000800704D5DB48DA4934300DF0BAF8822DBA
-:107E600004D02846FFF743FB06B070BD0020FBE7B7
-:107E7000D54810B52038017B012211430173002140
-:107E800041808171818006F045FB10BD10B5CE4C5C
-:107E90000020C043203C20800020FFF7BBFD207B5A
-:107EA00040084000207310BD70B5C74D0446203D0A
-:107EB000287B800704D5C348C1494B300DF089F8B1
-:107EC000287BC00706D12888C049884202D028698B
-:107ED000002801D0082070BD002C08D0A0881628EA
-:107EE00001D2092070BD20682861A088A882FFF710
-:107EF0004DFD70BD10B50C4607F02DFB002804D0D9
-:107F0000C520AF49C0000DF064F82046FFF7EFFA36
-:107F100010BDF0B5AC4D0446203591B0002008905E
-:107F200068820E462882E8812946E8804039088622
-:107F3000694608830885088688838882A2480E904F
-:107F4000007A1746012808D0022806D0032804D05A
-:107F5000042802D0082011B0F0BD9D48844269D3A6
-:107F600001239B049B49E21A8A4263D39A4A9442B2
-:107F700060D286425ED31001331A0846834259D339
-:107F80001046864256D26068002815D09049884233
-:107F900050D31101421A8F498A424BD38E498842ED
-:107FA00048D260892189884203D801225202914235
-:107FB00001D90C20CFE7089010AA0CA93046FFF792
-:107FC00094FB0028C7D106A92069FFF738FB0028D9
-:107FD000C1D1206900280CD060788007002868464D
-:107FE000008B03DA8004800F75D002E08004800FDC
-:107FF00071D16846008B81061ED58004800F6068B1
-:1080000009D0002818D00721490740180121890309
-:1080100088420FD201E000280ED06D496068884286
-:1080200008D301218904421A6A498A4202D36A4963
-:10803000884201D310208EE705A96069FFF7FFFA97
-:10804000002888D16069002808D06846808A010528
-:10805000890F01293FD18004800F3CD007A9A06976
-:10806000FFF7EDFA0028A5D16846808A800632D451
-:108070006846808B81062ED4A169002906D00105AF
-:10808000890F012927D18004800F24D0E0680028BF
-:1080900004D0007800281ED01C281CD24A4A611C3B
-:1080A000123220460992FFF75EFB0321002089026D
-:1080B000884301218902411868460D9101850121FB
-:1080C000817446490182404A0FA91532306809F08F
-:1080D00028F9002801D007203DE708A8007F3A4989
-:1080E000C01CC2B26A7100201031FF3200900190B2
-:1080F000FF3203460291039003320AA904A807F055
-:10810000C5F9002827D130482038008E0B902E4822
-:108110003389383032690146123902910093019255
-:10812000039010A90A8873890CA9306807F0AEF98A
-:1081300001007CD12448E98811308170090AC1709E
-:108140000026009631386A79008E3146099B07F087
-:108150001CF9002802D0FFF7CAF9FCE60E98807CD3
-:10816000C00928D068460D99018501218174292113
-:1081700009020182AE81287B61784008C90740006E
-:10818000C90F08432873FD2108406178022289073E
-:10819000C90F4900084328730B4900922A31881CF3
-:1081A00002910190002303960D4A0AA904A807F042
-:1081B0006DF901003BD1606800283DD0206911E0D5
-:1081C000607D0000220400000C140020FFFF00006E
-:1081D000006001000000FC1F004000200328000098
-:1081E0000302000000280DD106A90CA8FFF704FB2C
-:1081F0006078800706D46946088B03210903884309
-:1082000069460883012069468874FD4808822089F0
-:10821000FC490CF0BBFD6268089BFB48019200938F
-:1082200002900A460396002306A904A800E081E014
-:1082300007F02CF901007DD12078C10601D4800619
-:108240002ED568460684606900280DD105A90CA8C2
-:10825000FFF7D2FA6846818A032080028143012019
-:1082600080020918684681826946888A4821084345
-:108270006946888201208874E14808AA401C088267
-:10828000E1490192891C0220DE4A029100900023FC
-:108290000396921C05A904A807F0F8F8010063D121
-:1082A0002078C0072ED068460684A06900280DD12A
-:1082B00007A90CA8FFF7A0FA6846818B032080026B
-:1082C0008143012080020918684681836846818BBA
-:1082D000402001436846818301218174C84908AA6E
-:1082E000891C0182C8480192001D0221C54A0091E3
-:1082F000029000230396921C07A904A807F0C6F871
-:10830000010031D1E068002832D068460D9901851E
-:1083100001218174BA49C91C0182E16808A80A7860
-:10832000027049784170E068418868464184E0689D
-:10833000017900E018E008A80171E0680722C1880F
-:1083400008A84171090A8171AF4808A9801D0092EF
-:1083500001910290412200230396D2000AA904A8A9
-:1083600007F094F8010003D00B98FFF7C3FDF2E586
-:1083700003210E98002F017207D0E8883880E88921
-:108380007880288AB880688AF8800020E3E5F0B514
-:1083900001248BB016460F46012802D002281BD1BB
-:1083A00004E0684605218474C90202E068469749E2
-:1083B00084740182002F11D0032100208902884398
-:1083C0000121890241186846018506AA05A9384697
-:1083D00008F0A7FF002803D00720A5E41020A3E49D
-:1083E000894DB8782E3D287338882F46203F7885F0
-:1083F0006A46127D0020294606AB00920E31019399
-:10840000FF32029103900346FF3203320AA904A807
-:1084100007F03CF8002802D0FFF769F884E4002E4A
-:1084200001D0F88D30802C7200207DE470B592B0C0
-:108430000446012508A8857075496846018406F040
-:108440009CFF002208A90120FFF7A1FF064606F0C5
-:1084500098FF30003AD120780024C00700283FD090
-:108460001C2168460CF077FC684601782020014307
-:108470006846017008A885706649684601841194B1
-:108480000794817FF9200140891C6846817700208C
-:10849000014668460177002001466846417704217D
-:1084A0008185C485018607A80A9011A80D9008A8A7
-:1084B000099006F062FF0EAA09A96846FFF729FD98
-:1084C000054606F05EFF002D02D0284612B070BDB2
-:1084D0004D486946098F4E3801816946898F41812F
-:1084E00049482E3804720020F0E7F7B5464E9CB09C
-:1084F00000212E3E0091317A012904D0022902D0B8
-:1085000008201FB0F0BD40494E39CA8D824201D0CB
-:108510000620F6E71D98824201D10720F1E73B488B
-:10852000012110AA9176401C1083002003239B0296
-:1085300002469A438B02D31810AA93846A46918408
-:108540003549D18410AA9077908317AA0A926A4677
-:1085500091850C9009A807F051F80024254627467C
-:1085600004A909A807F04DF8002810D082287BD173
-:10857000002C7CD0002D7AD010A8048145810024E5
-:10858000047518A8807812AD012872D07AE0684688
-:10859000807D002F1FD0012862D16846818A1B4848
-:1085A000401C814219D114A800906846408A0EAB45
-:1085B0001022002107F08DF8002877D110A8008A3A
-:1085C000042801D006285BD16846018F1D9881429E
-:1085D00046D10F2095E7012842D16846808A0521BF
-:1085E000C902884202D0491C884239D106484E3817
-:1085F000C18D6846408A814210D101270FE00000FA
-:1086000001290000010200003A14002001280000A6
-:1086100001180000052A0000FFFF00000027002CC1
-:1086200001D0002D0DD01D99884219D114A90091B7
-:1086300004460EAB1022002107F04BF8002835D17C
-:1086400001E0009D0CE010A8008A022801D010284B
-:1086500016D1C0B218AA0EA908F03DFE00280FD10D
-:108660006846408A00907BE720E000E001E00520BA
-:1086700047E72A1D15A918A808F053FE002801D0C5
-:1086800003203EE710A8007D0023001DC2B210A801
-:1086900002751E98029019A901950394009216A8DC
-:1086A00006F0F4FE002801D102213172FEF71FFF0F
-:1086B00027E73EB50B46401E84B201AA00211846AA
-:1086C000FFF751F806F059FE02A8009001AB012215
-:1086D0000021204606F059FE044606F052FE684688
-:1086E0000089012803D0FE49FE480CF072FC2046A8
-:1086F000FEF7FDFE3EBDF0B5FB4E0446307A89B074
-:108700000F46032804D0042802D0082009B0F0BD89
-:1087100004AA06A92046FEF7E8FF0500F6D1F248B4
-:108720002389383022690146103902910093019261
-:10873000039069460A8A638906A9206806F0A6FEA6
-:10874000002802D0FEF7D3FEE0E7002F03D0E64872
-:10875000203000893880042030722846D6E738B5AA
-:108760000C00054608D00022694607F00CF80028E6
-:1087700004D0FEF7BCFE38BD102038BD6946204647
-:10878000FEF75DFF0028F8D1A0786946C207D20F36
-:10879000284607F013F8ECE73EB50C0008D002AA13
-:1087A000694606F0F0FF002804D0FEF7A0FE3EBDAB
-:1087B00010203EBD032120460CF0CBFA684600880D
-:1087C00001A90005800FFEF726FF00280BD168469F
-:1087D000007920706846008801A98004800FFEF7A8
-:1087E0001AFF002801D003203EBD68460079607062
-:1087F000A278EF20024068460088C10B09010A43B5
-:10880000F7210A404104C90FC9000A43A270F921A7
-:108810000A40800601D5012000E0022040006946A0
-:108820000243097A50084000C907C90F0843A070E5
-:1088300000203EBDFEB51D4614460E46074606F016
-:108840009CFD01A8009022882B463146384606F050
-:108850009CFD054668468088208006F092FD2846EB
-:10886000FEF745FEFEBDF0B50C46002199B0074667
-:10887000684681850D46002C11D0E068002806D09E
-:10888000A06800280BD002886B469A850180A078EA
-:10889000012806D0022804D0072019B0F0BD10200E
-:1088A000FBE72088002807D0401E80B201A906F00F
-:1088B0007EFE002842D136E08C48EEE769468A8980
-:1088C00021888A420BD26846007C002501282CD1E1
-:1088D0006846C0898649884227D1012525E08A4219
-:1088E00003D1002D2FD06D1C01E0022D02D0032DED
-:1088F0001BD31FE06946097C012916D169467C4BD0
-:10890000CA895B1ED11A9A421DD005DC7948101A1B
-:1089100019D0012809D116E0012914D0FF390139F5
-:1089200003D1032506E00D26B60201A806F047FE96
-:108930000028C3D0822804D0002806D0FEF7D7FD37
-:10894000ABE7022DFAD13046A7E7E068002813D044
-:1089500006F013FD0BA800906A46A1882088928D2E
-:10896000E36806F012FD054606F00BFD002D19D157
-:108970006846A168808D088002980078C00601D5FD
-:108980005D488AE706F0F9FC0EA8009068468089E9
-:108990000CAB0222002106F09CFE054606F0F1FC1D
-:1089A000002D01D02846C9E76846008F022801D073
-:1089B000032072E7A078012808A8007C03D0800774
-:1089C0000ED4082069E7C007FBD00820FEF7C8FADC
-:1089D000072802D34548401C5FE70825022001E034
-:1089E000022503206946087621886846818317217D
-:1089F000818611AA002302320DA906A806F08EF97D
-:108A0000002802D0FEF7DBFD47E70FA8009068467C
-:108A1000838E042229463846FEF7B8FA3DE770B542
-:108A2000064615460C460846FEF71EFD00280AD1EC
-:108A300006F0A3FC2A4621463046FFF7A8FC044670
-:108A400006F09FFC204670BD70B514460D460646E4
-:108A500006F093FC224629463046FFF746FD0446C1
-:108A600006F08FFC204670BD70B51E4614460D0002
-:108A70001AD0002C18D06168002915D00121FEF70A
-:108A800071FF00280FD12068FEF7EEFC00280AD104
-:108A900006F073FC324621462846FFF73AFA0446B0
-:108AA00006F06FFC204670BD102070BD70B51546F5
-:108AB0000C0023D00221FEF755FF00280ED12068BC
-:108AC000FEF7D2FC002809D106F057FC29462046C3
-:108AD000FFF711FE044606F054FC204670BD00006E
-:108AE000607D00003E0600000C14002003300000F2
-:108AF0000328000000280000013400001020EDE7EA
-:108B0000FEB507460E4607201546400701211218FC
-:108B100089031C468A4219D2002C02D020188842B0
-:108B200014D2384600F045FA00280AD1002C0FD1A3
-:108B300001AA6946384606F026FE002802D0FEF754
-:108B4000D6FCFEBD68460088800601D41020FEBD1C
-:108B500023462A4631463846FFF76CFEFEBDFFB578
-:108B600085B01E4614000F4609D003AA02A9059835
-:108B700006F009FE002804D0FEF7B9FCC6E5102077
-:108B8000C4E568460089C00601D5FB48BEE506F08D
-:108B9000F4FB01A800900023F84A3946059806F036
-:108BA00098FD054606F0EDFB002D11D1002E0CD0EE
-:108BB00006F0E3FB002000902288334639460598F2
-:108BC00006F087FD054606F0DCFB684680882080BD
-:108BD0002846D1E7002906D0E94B0A885B899A42EA
-:108BE00001D8E84870473EE610B586B004236C46CD
-:108BF000A382E34B1C89002C07D05B898B4201D2F6
-:108C0000914204D9DF4806B010BD0620FBE76B4651
-:108C100019825A820021009101911C8002219970D1
-:108C200005A9029104A903916946FFF71CFEEAE732
-:108C3000F0B591B00D4681206946087105F09CFCA5
-:108C40000646002D08D02878CD4C012806D00228F1
-:108C500028D0072011B0F0BD1020FBE7A98801AA99
-:108C6000FEF778FC0028F5D1B00734D568460079C6
-:108C7000002820D1A879C0071DD006F07EFB002077
-:108C800000906A892989A088EB6806F07EFB694616
-:108C9000087106F076FB6946087900280BD0FEF7CC
-:108CA00026FCD7E7A98801AAFEF754FC0028D1D1F9
-:108CB000342006420FD00121684601720173017908
-:108CC0004173F00609D5A18868460182A18A018313
-:108CD0002069059004E00820BCE7A0886946088266
-:108CE000FAF731FB05461720694688830AAA2B4606
-:108CF000023207A902A806F011F8074668780007B3
-:108D000001D5FAF73CFB002F03D03846FEF757FC9D
-:108D1000A0E7F00603D5207B062108432073B006A8
-:108D200002D50020FEF776FE08A8009069468B8BDE
-:108D3000208804220121FEF729F98BE7F0B50026EF
-:108D400095B014460D4600290FD0022C4FD3A71E14
-:108D5000BAB28A480AF052FE29191039CA7B8B7BB5
-:108D600011021943884242D1BCB201A9012006F088
-:108D70001EFC7AE0029F3888010776D5002D41D08D
-:108D8000A9190691CA788B78361D1102B6B219431B
-:108D90008919A1422BD869468A8906994B780978A6
-:108DA0001B020B439A4222D1C00623D506F0E5FAF6
-:108DB00007A800900698AB19C17880780A02069936
-:108DC00002434878097800020843002106F0DDFAE2
-:108DD000009006F0D6FA009800283ED10698C17897
-:108DE000827808026946898B1043884202D00B20A2
-:108DF00015B0F0BD0698C17882780802104380193A
-:108E000086B22EE0C0062CD5002007AA01461154D8
-:108E1000401C80B21028FAD306F0AFFA06A80090E2
-:108E20006846002380891022194606F052FC009003
-:108E3000002803D006F0A5FA00980EE00BA86946BA
-:108E4000009088890A8B07AB002106F09EFA0090FB
-:108E500006F097FA0098002803D0FEF748FBC7E712
-:108E600003E0388810218843388001A806F0A7FB6A
-:108E7000002800D17EE7424D6988002921D00122D7
-:108E800068460276027700244477018417218185A1
-:108E90000EAA234602320BA906A805F03FFF0028C0
-:108EA00002D0FEF78CFBA3E70CA8009069468B8DDF
-:108EB000288804220121FEF769F8002898D16C80E7
-:108EC00096E7002094E7F0B5002487B015460E46DB
-:108ED000002A04D002A9012006F069FB41E010201D
-:108EE00007B0F0BD0398007800073AD506F045FAC0
-:108EF00001A8009068460023008A204A194606F01F
-:108F0000E8FB074606F03DFA002F23D1002E23D0C0
-:108F100068468088298820183719001D814239D376
-:108F20006946098A3970090A797069468988B97071
-:108F3000090AF97006F021FA01A869460090088A2A
-:108F40008A883B1D002106F0C4FB074606F019FA8B
-:108F5000002F01D00320C3E7684680882018001D39
-:108F600084B202A806F02BFB0028BBD082280BD0CD
-:108F7000FEF7BDFAB4E7000001340000FFFF000077
-:108F8000EC13002003300000002E0ED02988A01C16
-:108F9000814201D20C20A3E72246314639480AF02B
-:108FA0002DFD31190870000A4870A41C2C80002087
-:108FB00096E700B585B06946FEF741FC00280AD166
-:108FC0006846007C03000CF0F5F808052F2F2F2FC2
-:108FD00008080531032005B000BD684680780128E7
-:108FE00007D1684600880321C902401A1CD0012815
-:108FF0001AD068468079012806D1684680881521F4
-:109000004902401A05280FD96846807A012811D1F3
-:109010006846018929200002081A05D0022803D0D9
-:10902000032801D0042805D10F20D4E7164917489A
-:109030000BF0CFFF0020CEE738B5154A0021518054
-:1090400003791AE0CC002418A46800946C462488A4
-:10905000250707D5E50605D5D90008182038C08BA7
-:10906000508006E0640406D59171C9000818C088D4
-:109070009080012038BD491CC9B28B42E2D8002043
-:1090800038BD0000FFFF0000607D000033020000DB
-:10909000EC1300200120F8494006C861704770B504
-:1090A000F54D0024AC7028466C7020304470047478
-:1090B0006C61AC72AC6209F01AFFA86128463430CA
-:1090C0000AF0B4FD002804D0FF20ECA13A300BF0E8
-:1090D00080FFEE48C46301204006E86170BD70B5B2
-:1090E0000125EB4902260E60E849CD63E949C96ACA
-:1090F00009070ED4E7494031CB6AE74A53620B6B4C
-:1091000093624B6BD3628B6B1363C96BD3051943AB
-:109110005163D949E14CC96900282BD001282DD0D1
-:10912000FF20D6A169300BF054FFDD48A063FF207B
-:10913000043060632563DB49032008602061D74960
-:10914000962040314860D948D7494163D549FC3918
-:109150000163D549091FC163D249F03981630320F6
-:10916000D249000340394860D14910204860D148B5
-:10917000066070BDD0486061D04804E0CF48E03060
-:109180006061CE48801F0143A161CEE7BA4901204A
-:1091900008707047B84900200870704770477047E2
-:1091A000BE4940310028086802D00122104301E086
-:1091B000400840000860704770B50C46AE4D01464F
-:1091C0000622E81C0BF068FD6C7270BDAA482030C6
-:1091D00040787047A84A91705070704770B50D463E
-:1091E0000446082904D9FF20A4A1C6300BF0F1FEE3
-:1091F0000022B34809E09100635809180B6053003E
-:109200001B191B8C0B62521CD2B2AA42F3D3206BE7
-:10921000AB494031086070BD0B23DB4310B5C21A67
-:109220009E4998421FD008DC1C3222D00A2A20D046
-:10923000142A1CD0182A08D117E0083011D00428AD
-:109240000DD0082809D00C2805D0FF208BA1F230C2
-:109250000BF0BFFE10BD04200CE000200AE0FC2053
-:1092600008E0F82006E0F42004E0F02002E0EC2022
-:1092700000E0D820C86010BD7F482030007B7047D8
-:1092800010B5864CC17861620BF067FD0002E061A9
-:1092900010BD252808D0262808D0272808D041004E
-:1092A0000A2807D8091D06E0022105E01A2103E07B
-:1092B000502101E0891DC9B2784A91607749403157
-:1092C000486170476C494861704770B56A4CA0723C
-:1092D00000F01FFBA07AC00740D0724D28688007BD
-:1092E00003D466A177480BF074FEA07A01061DD561
-:1092F000800707D5734861A1801C0BF06AFEA07A35
-:10930000000613D52078694E012816D0002804D015
-:109310006C485AA111300BF05CFE6B487061A0697B
-:109320003061FF206149013040394860A07A8007F0
-:1093300014D52868C00708D102E06348001FEDE794
-:1093400060484EA11A300BF044FEA07A400728680E
-:1093500001D5042100E008210843286070BD70B5E4
-:109360000124454D002807D0012818D002281AD022
-:10937000232042A100010BE000F0CBFA52482978EB
-:10938000001F012907D0002907D04E483BA15738BC
-:109390000BF01FFE70BD046070BD446070BD812085
-:1093A000FFF793FF70BD00F0B4FA6869002804D19C
-:1093B000444832A14F380BF00CFE6969A86A401886
-:1093C0004249C86039484249403001603E490C3149
-:1093D00041600814354940394860274820300474FA
-:1093E00070BDF8B50C2069460870314C6068C00645
-:1093F000C50F1026A66034480021FC300161324BB5
-:1094000001221B1F1A610BE000BF00BF00BF00BF9D
-:1094100000BF00BF00BF00BF6B461A78521E1A7013
-:109420006A461278002A02D00269002AECD0016153
-:1094300068460078002804D1912010A180000BF02C
-:10944000C8FD002D00D06660F8BD0B490020C86142
-:10945000704710B50BF081FC00021049000AC86388
-:1094600010BD0B49022008607047094902200860BE
-:109470001049086070470000481400207372635C54
-:1094800068616C5F7263732E63000000C01F004050
-:1094900080E100E08000001000170040001500404F
-:1094A0005B060000001200404480004040F501408F
-:1094B0000013004080E200E00601020025000300E6
-:1094C0000016004075020000041000404085004076
-:1094D0004C810040F74902200860CBE7F64908704C
-:1094E000C8E710B5F5480AF0A9FB002803D0F449F5
-:1094F000F4480BF06EFD10BD10B5F0480AF0B6FB55
-:1095000010BDF1494860B5E7EC4910B53439EF4B6F
-:109510000022C8605A60896A0818ED49486000F066
-:10952000FFF910BDE54810B5C2213438C160E74AE3
-:1095300000215160806AE649C230486000F0F0F9CD
-:1095400010BD0120E34940028860DC490020343925
-:10955000C860DF4948608DE7D84900203439886207
-:1095600088E7D648DA493438806AFE30886081E777
-:10957000D749002088607DE7D748016810229143D1
-:109580000160D6490120886174E7D5490020C8618F
-:10959000D14801681022114301606BE700B5FFF765
-:1095A000EBFFC64900203439087400BD00B5FFF751
-:1095B000ECFFC24901203439087400BDC849CA69AA
-:1095C000012A01D0002055E7BF4A40329268520676
-:1095D000520E524202700020C86101204AE7F8B5DD
-:1095E000BF4C2069012806D00021B44834380078E7
-:1095F000012802D004E04021F7E7E268012A04D004
-:1096000000220A43012802D004E02022F9E7616821
-:10961000012905D000211143B24A002802D007E0F9
-:109620001021F8E71368012B02D1E368012B04D065
-:1096300000230B43002802D007E00823F9E7116854
-:10964000002902D1E168012905D000221A439F4E6A
-:10965000002802D004E00422F8E77168012904D050
-:1096600000211143002802D004E00221F9E76068DC
-:10967000012829D000259C480D4301680906090EE0
-:1096800002D06169012900D000218C4F143F397349
-:1096900000680006000E02D0A069012800D000205A
-:1096A00078738B488068002803D000F03DFA0128C9
-:1096B00000D00020B8730021E16021616160616128
-:1096C000A16171602846F8BD0125D4E77B480121DE
-:1096D0001438C173CEE6F8B5784E0127143E307CBD
-:1096E0000025002825D07C4C206800902560FFF7DD
-:1096F00078FE009820607A48C56005614560456144
-:1097000085617449001488603046203801787348B8
-:1097100001290AD000290AD0D920694980000BF01C
-:1097200058FCF9F775FC3574F8BD0760F9E7476038
-:10973000F7E7FFF754FF04460020F07364484268DF
-:109740005E4D343D6A620068A8622978002909D11B
-:10975000A978002906D05C4B5B681B780B406978C0
-:10976000994309D000213170E10707D0104602F07B
-:1097700029FD0121A86A08E03770F5E7A10601D5A7
-:10978000022102E0A10702D5002102F02AFD4E4F7E
-:10979000796806220931E81C0BF051FA002807D13C
-:1097A000687A79680978C909884201D1012000E006
-:1097B00000207070204600F0BDF83F48C2270078B6
-:1097C000002815D0012828D002283BD003285AD0E1
-:1097D0003B4946480BF0FDFB287C002804D0287844
-:1097E000002865D0FFF7C8FE2878002861D089E0FE
-:1097F000A00701D501F0CCFB200703D50120EF60C5
-:1098000001F0FEFB600703D50020EF6001F0F8FBDC
-:10981000A006E1D501F068FBDEE7A00701D503F063
-:1098200026FF200703D50120EF6003F09FFE6007AD
-:1098300003D50020EF6003F099FEA006CCD503F01D
-:1098400020FEC9E7A00703D5BF200440F9F7D2FBEB
-:10985000200705D5BF2004400120EF60F9F7C9FBC0
-:10986000600705D5BF2004400020EF60F9F7C1FB79
-:10987000A00603D5BF200440F9F7BAFB6006ABD5BC
-:10988000F9F7B9FBA8E7A00701D5F9F7B7FB20075F
-:1098900003D50120EF60F9F7B0FB600703D5002086
-:1098A000EF60F9F7AAFBA00696D5F9F7A5FB93E7B9
-:1098B0001EE020E000E100E0600000207C140020B9
-:1098C0007C940000AB020000001500404081004085
-:1098D0004085004000F501400012004000100040AB
-:1098E00000110040001400404016004094040000A5
-:1098F000FFF74BFE78E7E868002803D0A96A09184B
-:1099000028484160F07B002800D10DE7F9F780FB83
-:10991000F8BD254903200860881524498860A9E519
-:10992000224823494030C161224981611F494015C5
-:1099300048609FE570B50546FFF7EBFF1E4CA17A26
-:10994000080701D568071CD41C4AC80605D5507BFA
-:10995000002802D0907B002813D0880602D510780A
-:1099600000280ED1480602D55078002809D00020E2
-:109970008A070026002A07DA4A0704D50122227046
-:1099800002E00120F4E72670CA0709D0AA0705D42F
-:10999000890705D5002803D0A80601D4FFF721FDCB
-:1099A000A67270BD408500400012004000F50140E5
-:1099B000101000404481004048140020681400202A
-:1099C0002E48002101704170704770B5064614465C
-:1099D0000D460120F7F780FE28490120284B08702A
-:1099E0009E60DC601D6170BDF8B504460120F7F78C
-:1099F00073FE22490120087021494C60214900264C
-:109A00004E600321204D8902A960204F002C0AD00E
-:109A1000012C03D01EA140200BF0DBFA3E60032096
-:109A200080026860F8BD386001208002F9E710B557
-:109A30001248017800290ED00321134A890291604F
-:109A400010494A680021002A03D0154A1268427062
-:109A500000E0417001700020F7F73EFE10BD07489E
-:109A60000178002907D007484068002802D00C4838
-:109A70000068C0B270474078704700006100002065
-:109A800000F5004000F1004000F5014000F2004008
-:109A90007372635C68616C5F63636D2E63000000CA
-:109AA00000F400403648002101704170102181709F
-:109AB000704770B5064614460D460220F7F70CFEB7
-:109AC00001202F492F4A0870E41E146196605560EA
-:109AD00070BD10B50220F7F7FFFD2949012008707D
-:109AE000294800210160416081602849C014486014
-:109AF00010BD10B5224C2078002811D00120234938
-:109B0000C002886000F02EF80021002804D0012057
-:109B100060701F48006801E061701020A070217023
-:109B20000020F7F7D9FD10BD10B5154801780029C0
-:109B300005D000F017F8002800D0012010BD4078B3
-:109B400010BD10B50E480178002909D000F00AF8C0
-:109B5000002803D00E480068C0B210BD102010BD10
-:109B6000807810BD08480168002905D041680029A7
-:109B700002D08068002801D0002070470120704783
-:109B80006300002000F5004000F1004000F50140B6
-:109B900000F4004010B528210BF0DBF810BD407830
-:109BA0008006800E704740788006800EC01C70478B
-:109BB0002820704770B5054600780A0700090001A3
-:109BC000120F104328700B000BF0F4FA070507057D
-:109BD000070509050B00062408E00C2406E02224F2
-:109BE00004E00024FEA158200BF0F3F96878800906
-:109BF00080012043687070BD00780007000F704737
-:109C000010B50622C01C0BF047F810BD0B4610B56E
-:109C1000C11C062218460BF03FF810BD10B50622F5
-:109C200009300BF039F810BD0B46014610B506227D
-:109C3000093118460BF030F810BD0278BF23C90770
-:109C40001A40490E0A430270704700784006C00F60
-:109C5000704702785206520EC9010A4302707047DB
-:109C60000078C009704770B50C460546C11C2046F7
-:109C7000062209300BF010F820784006400E2070C4
-:109C800029784906C90FC9010843207070BD70B515
-:109C900015460E4604461F2A03D9D1A1A9200BF070
-:109CA00098F920462A46314609300AF0F5FF6078D7
-:109CB000AD1D80098001A906890E0843607070BD42
-:109CC00070B5054640780E468406A40E062C03D2D5
-:109CD000C3A1B9200BF07DF9A41FE4B21F2C00D959
-:109CE0001F2429462246093130460AF0D5FF204676
-:109CF00070BD70B515460E4604461F2A03D9B8A19B
-:109D0000CD200BF066F920462A46314609300AF08C
-:109D1000C3FF6078AD1D80098001A906890E084344
-:109D2000607070BD70B5044640780E468506AD0E75
-:109D3000062D03D2AAA1DE200BF04BF9AD1FEDB228
-:109D40001F2D03D9A6A1E2200BF043F921462A4694
-:109D5000093130460AF0A0FF284670BD10B5042234
-:109D60000F300AF099FF10BD0B46014610B50422D2
-:109D70000F3118460AF090FF10BD10B503221330C2
-:109D80000AF08AFF10BD0B46014610B503221331BD
-:109D900018460AF081FF10BD4176090A81767047A6
-:109DA000817E427E080210437047C176090A01771E
-:109DB0007047017FC27E0802104370474177090A4D
-:109DC00081777047817F427F080210437047C175D9
-:109DD000090A01767047017EC27D08021043704770
-:109DE00081757047807D704720300279C90652091D
-:109DF0005201C90E0A430271704720300079C00633
-:109E0000C00E704720300279D206D20E49010A43B3
-:109E100002717047203000794009704710B5052263
-:109E20001F300AF039FF10BD0B46014610B5052260
-:109E30001F3118460AF030FF10BD30B5411C837E3B
-:109E40000A461902D37D447E927D1B0221431343AF
-:109E5000674D827D8C1FAC4210D8002A0ED0082A94
-:109E60000CD88A420AD28B4208D8817F427F0802EE
-:109E70001043A91D884201D8012030BD002030BD0B
-:109E800000210A464254491C2229FBDB70474078D6
-:109E9000C006C00E70474078C006C00EC01C704798
-:109EA0002220704710B502788B07920892009B0F12
-:109EB0001A4302704278520952014270012908D0B7
-:109EC000022906D0032905D0FF2045A1A3300BF0BD
-:109ED00080F810BD01210A43427010BD10B5027810
-:109EE0008B07920892009B0F1A4302704278520926
-:109EF00052014270012908D0022906D0032905D059
-:109F0000FF2037A1BD300BF064F810BD01210A43DA
-:109F1000427010BD00788007800F70470278FB23E5
-:109F2000C9071A40490F0A4302707047007840077A
-:109F3000C00F70470278F723C9071A40090F0A4378
-:109F40000270704700780007C00F70470278EF2357
-:109F5000C9071A40C90E0A43027070470078C0064C
-:109F6000C00F704770B50546C1700B000BF022F9A9
-:109F70000E080A0C0E1012120C14141212160C18E1
-:109F80000C2413E0082411E002240FE017240DE054
-:109F90000D240BE0012409E0092407E0062405E074
-:109FA000452000240EA1C0000BF013F8687840098A
-:109FB00040012043687070BDC078704770B504469A
-:109FC00040780E46C506ED0E1B2D03D904A10948A5
-:109FD0000AF0FFFF6019C01C042231460CE00000AB
-:109FE0007372635C756C5F7064752E6300000000B3
-:109FF0007A0C00003A0200000AF04EFE70BD70B507
-:10A00000044640780E46C506ED0E1B2D03D9A04927
-:10A01000A0480AF0DEFF6119C91C042230460AF08C
-:10A020003BFE70BDC171090A01727047017AC279A5
-:10A030000802104370474172090A81727047817AA1
-:10A04000427A080210437047C172090A01737047CF
-:10A05000017BC27A0802104370474171090A81717D
-:10A060007047817942790802104370470171704747
-:10A07000007970474173090A81737047817B427B85
-:10A0800008021043704730B5411C037A0A46C47970
-:10A0900019022143537914791B0223437E4D007921
-:10A0A0008C1FAC4210D800280ED008280CD888424B
-:10A0B0000AD28B4208D8D07A917A00020843A91DAF
-:10A0C000884201D8012030BD002030BD10B50522E6
-:10A0D000001D0AF0E1FD10BD0B4610B5011D052263
-:10A0E00018460AF0D9FD10BD4172090A8172704705
-:10A0F000817A427A080210437047017170470079F3
-:10A10000704710B50822001D0AF0C6FD10BD0B46B1
-:10A1100010B5011D082218460AF0BEFD10BD0A78D0
-:10A120000273497841737047027B0A70407B487024
-:10A13000704710B508220E300AF0AEFD10BD0B4678
-:10A14000014610B508220E3118460AF0A5FD10BDD3
-:10A1500010B5042216300AF09FFD10BD0B460146D3
-:10A1600010B50422163118460AF096FD10BD10B540
-:10A170000822001D0AF090FD10BD0B4610B5011D10
-:10A18000082218460AF088FD10BD10B504220C30D4
-:10A190000AF082FD10BD0B46014610B504220C31B9
-:10A1A00018460AF079FD10BD017170474171090A26
-:10A1B00081717047C171090A017270470079704757
-:10A1C00081794279080210437047017AC279080206
-:10A1D00010437047017170470079704701717047F3
-:10A1E0000079704710B50822001D0AF055FD10BD1A
-:10A1F0000B4610B5011D082218460AF04DFD10BD92
-:10A2000010B50822001D0AF047FD10BD0B4610B521
-:10A21000011D082218460AF03FFD10BD70B5154615
-:10A220000E4604461B2A04D93720194900010AF0BA
-:10A23000D0FE2A463146E01C0AF02EFD6078E90681
-:10A2400040094001C90E0843607070BD70B50546F5
-:10A2500040780E46C406E40E1B2C04D9DF200C49BE
-:10A2600080000AF0B6FE2246E91C30460AF014FDD2
-:10A27000204670BD4078C006C00E1B2801D80120C2
-:10A2800070470020704710B522220AF005FD10BD6E
-:10A29000E09F0000430200007A0C0000FEB50F466C
-:10A2A00004460146064620302546C031603640351A
-:10A2B0000190032F04D0002F2DD0012F2BD04BE085
-:10A2C00000206080A080E08020816081A082E08505
-:10A2D000E0826874A074E074A076E076A073E07306
-:10A2E00020746074019B987401232B74A8822883C6
-:10A2F0000876E883B0706883A873E8732077607786
-:10A30000019988720199087430727072B072327457
-:10A31000B074A883FEBD0020A8822883012F52D0EC
-:10A32000E08B0090608C0290C00000990AF02EFD36
-:10A33000401C80B2E8820099192241439202914266
-:10A3400001DD401EE8827D20000200990AF01EFD1A
-:10A35000401C3080002F01D0022FDBD10198007A01
-:10A36000C1060198C90E01720020687322182421C9
-:10A370008B5C4032D9075B08DE07C90FF60F7118F6
-:10A380005B08DE07F60F71185B08DE07F60F711821
-:10A390005B08DE07F60F71185B08DE07F60F711811
-:10A3A0005B08DE07F60F76185908891911726A7B67
-:10A3B000401C5118C0B269730528D7D3002FA9D10A
-:10A3C0000020A874FEBD4A7F2046E030022A12D049
-:10A3D000097F022913D050A173200AF0FAFD012051
-:10A3E00000900290E08BA98B484300990AF0DCFCB6
-:10A3F000A883029898E7818800910089F1E7018A93
-:10A400000091808AEDE770B504464034667B0546CE
-:10A41000002E68D0252E66D8002964D03E20405DED
-:10A42000A27B4843101825210AF0B0FC0846A1730E
-:10A430004207C908520F3C4B691820319A5C0979D0
-:10A440008A4367D031460AF0A1FC491CCAB20020F9
-:10A4500006E0002804D029184031C979511ACAB23F
-:10A46000291848235B5C93423AD320310979C943C8
-:10A47000CB07DB17D21A521E1206120E34D08B07EE
-:10A48000DB17D21A521E1206120E2FD04B07DB1703
-:10A49000D21A521E1206120E2BD00B07DB17D21A3D
-:10A4A000521E1206120E27D0CB06DB17D21A521EEE
-:10A4B0001206120E23D08B06DB17D21A521E12067A
-:10A4C000120E1FD04B06DB17D21A521E1206120EA6
-:10A4D0001BD00906C917511A491E0A06120E17D0B9
-:10A4E000401C0528B5DB70BDC00013E0C000401C57
-:10A4F00010E0C000801C0DE0C000C01C0AE0C000DD
-:10A50000001D07E0C000401D04E0C000801D01E008
-:10A51000C000C01DE07370BD7372635C6C6C5F75CE
-:10A5200074696C2E63000000EC51010010B5FF4807
-:10A530000021017041708170C17041718171C171E0
-:10A54000083009F073FB002804D0FF20F8A1843004
-:10A550000AF03FFD10BD10B5F44900204872081DF7
-:10A5600009F064FB002804D0FF20F1A1C3300AF0F9
-:10A5700030FDFFF7DBFFF148FFF782FC0021EF48D9
-:10A58000FFF7E4FC0121ED48FFF78CFC10BDE2E78A
-:10A590001B207047E5494A7A002A01D00020704705
-:10A5A000488101204872704710B5E0494A7A002A74
-:10A5B00002D04989814201D0002010BDDB48001D36
-:10A5C00009F03CFB002804D0FF20D9A1B4300AF0E8
-:10A5D00000FDD648001D09F049FBFFF7A7FF012049
-:10A5E00010BD70B5D14C0025627A002A02D0628974
-:10A5F000824201D00D700DE0227863789A4203D335
-:10A6000022786378D21A04E062782378D21A102371
-:10A610009A1A0A70FFF7C8FF002801D0657201205E
-:10A6200070BDC2494A7A002A04D04989814201D1C9
-:10A630000120704700207047BC490A784B78521CB3
-:10A640001207120F9A4207D0097822225143BC4ABE
-:10A65000891801600120704700207047B3480178D5
-:10A660004278491C0907090F914206D00178491C1C
-:10A670000907090F01700120704700207047AB499E
-:10A680004A7A002A04D04989814201D101207047C9
-:10A6900000207047A5490A784B789A4207D049783C
-:10A6A00022225143A64A89180160012070470020E8
-:10A6B000704710B59D4C20786178884216D060783C
-:10A6C000401C0007000F6070201D09F0B7FA002839
-:10A6D00004D0E078401CE070012010BDA078401C40
-:10A6E000A0709248001D09F0C1FAF5E7002010BDE6
-:10A6F0008E4801784078814201D1012070470020C6
-:10A7000070478A4801784278914202D301784078B4
-:10A7100003E041780078081A1021081AC0B2704787
-:10A720000F20704770B5814C0D46617A002916D014
-:10A730006189814213D100262E70201D09F07EFA16
-:10A74000002805D1A0782870A670201D09F08EFA87
-:10A750002878E17840182870E670012070BD00204C
-:10A7600070BD76490160704770494A7A002A04D06A
-:10A770004989814201D101207047002070476B490F
-:10A780004979002901D0002070476E4901600120FD
-:10A79000704766484179002901D0002070470121A7
-:10A7A00041710846704761494A7A002A04D04989B4
-:10A7B000814201D101207047002070475B494979EF
-:10A7C000012901D0002070475E49016001207047D7
-:10A7D00056484179012901D000207047002141717C
-:10A7E0000120704751484079012801D0012070476D
-:10A7F000002070474D494A7A002A04D04989814295
-:10A8000001D1012070470020704770B5474C0546C4
-:10A81000A0790721401C0AF0B9FAE079814208D0FA
-:10A82000A07922214843474922314018286001205D
-:10A8300070BD002070BD10B53C4C0721A079401CB4
-:10A840000AF0A4FAE079814207D0A0790721401CE0
-:10A850000AF09CFAA171012010BD002010BD334800
-:10A860008179C079814201D1012070470020704771
-:10A870002E494A7A002A04D04989814201D1012017
-:10A8800070470020704710B504462848083009F08A
-:10A89000D5F9002815D125498879CA7990420CD07C
-:10A8A000C8792221484327492231401820601F4897
-:10A8B000083009F0DBF9012010BD1C48083009F010
-:10A8C000D5F9002010BD10B504461848083009F02D
-:10A8D000B5F9002815D115498879CA7990420CD06C
-:10A8E000C8792221484317492231401820600F4877
-:10A8F000083009F0BBF9012010BD0C48083009F000
-:10A90000B5F9002010BD094810B5083009F096F9D6
-:10A91000002822D1054CA079E17988421AD0E0794B
-:10A920000721401C0AF032FAE1710DE066000020B8
-:10A930007372635C646D5F712E630000B01700205A
-:10A9400080140020A01600202046083009F08EF95F
-:10A95000012010BD0C4809F089F9002010BD0A48FB
-:10A9600008388179C079814201D1012070470020E7
-:10A970007047054808388179C079814201D10120AA
-:10A9800070470020704700006E000020704770473D
-:10A99000FF207047704770470020704700207047C5
-:10A9A000002070470020704700207047002070474B
-:10A9B000002070470020704700207047012070473A
-:10A9C000002070470020704700207047002070472B
-:10A9D000F8B5FF4D0446A87F002600280CD00029BA
-:10A9E00023D1667010202070E87FA07028462030A8
-:10A9F0000078E070AE7718E0287A012801D00020B6
-:10AA0000F8BD002911D16670F149687A01270A3131
-:10AA1000002801D0132000E0052020701422A01C83
-:10AA20000AF03AF9A7716E722E720120F8BDF8B5DE
-:10AA3000E8480078002802D00C273846F8BD0027E7
-:10AA4000E34D3C46203DAF74EF746F75AF752F75C5
-:10AA500028466F732038DE4E47737771E87D0028F3
-:10AA600004D0FEF785FDFFF744F8EC75347274727C
-:10AA7000B477D7482430FFF78DF8D5484C30FFF72E
-:10AA800089F8DAE710B5D34C00232370D04C203C72
-:10AA9000E375CF4B01241C71603B583307C3FFF7AC
-:10AAA000C6FF002804D0FF20CBA102300AF091FAA3
-:10AAB00010BDC7482038807C7047F8B5C44D0646A5
-:10AAC000407B203DE873C24837791346AF73B27BB1
-:10AAD00082710446603C217006221946601C0AF00F
-:10AAE000DBF8B07960730622F11DE01D0AF0D4F89E
-:10AAF000687B0126002800D0EE74B5484038407BC2
-:10AB0000002800D02E75002F09D0012F09D0022F68
-:10AB100024D0032F46D0FF20AFA14D3013E00021F9
-:10AB20001DE0AB4801212430FFF744F8A848E11D9F
-:10AB30002430FFF773F8607B002807D0012807D086
-:10AB4000FF20A5A143300AF044FA0CE0002100E008
-:10AB500001219F482430FFF77CF804E006219C483F
-:10AB60002430FFF727F800206875A8759848611C05
-:10AB70002430FFF745F8964821782430FFF75DF838
-:10AB8000934804214C30FFF715F89148611C4C3074
-:10AB9000FFF736F88E4821784C30FFF74EF8AE7448
-:10ABA0000020F8BD0221DAE770B5894C0125203C70
-:10ABB0000246A5758648007A002801D03A2070BD6B
-:10ABC000834860380378934206D1002262750622DA
-:10ABD000401C0AF061F86575002070BD70B5044630
-:10ABE0007B4D0020203D28752846224632380AF049
-:10ABF00053F82846203844730120287570BD7449E5
-:10AC00000871704710B5724C0022203CE2746073EA
-:10AC10000246204612380AF03FF80120E07410BDC9
-:10AC2000F8B500F04CFB6A4C0025203CE07D002884
-:10AC300004D0FEF79DFCFEF75CFFE575654E3570B0
-:10AC4000FEF75AFCA07B012804D00021084601F041
-:10AC500082FAF8BD0021022001F07DFA5C4C207AD6
-:10AC60000127002809D0A07F0028F2D10520E07735
-:10AC7000204620300570A777F8BD70780028FBD0FB
-:10AC8000534906226039487BE073C91D0846693084
-:10AC90000AF002F83C20A07227727570F8BD10B55A
-:10ACA0004B4C203CE17B207CCA0701D0C2070BD073
-:10ACB0008A070FD582070DD42620FEF7EAFA207CFA
-:10ACC00002210843207410BD2520FEF7E2FA207C03
-:10ACD0000121F6E74907F6D54007F4D42720FEF70F
-:10ACE000D8FA207C0421ECE770B53A4D287800288A
-:10ACF0007CD1374C203CA07C00287CD0FEF7F1FBB7
-:10AD00000026267466746E703046FEF7E7FB00205E
-:10AD1000FEF7E5F93448FEF7B3FA2546403D296EC3
-:10AD20008857FEF779FA3048C01EFEF792FBFEF70F
-:10AD300008FCFFF7B4FFFEF729FAFEF7CBFB012072
-:10AD4000FEF70DFB0F210520FEF744FA2978681C59
-:10AD5000FEF732FAA07B01280AD0E07C002807D059
-:10AD6000214612390846627B5630FEF790FFE674A2
-:10AD7000207D002808D0164840380146427B123911
-:10AD80008C30FEF7B6FF2675607D00280BD010488A
-:10AD9000691C2430FEF734FF0D48691C4C30FEF767
-:10ADA0002FFF6675A675E86D0178002903D001783C
-:10ADB000001DFEF713FAA86D0178002907D001786D
-:10ADC000034A401C7732FEF774FE0120E0750EE066
-:10ADD00034180020740000207372635C6C6C5F6137
-:10ADE00064762E6300000000F751010003E0FEF7D7
-:10ADF00083FB002070BD0C2070BDFB49486070478C
-:10AE000070B50546FEF79DFB002D06D00020FEF72D
-:10AE10005CFAFEF7BBF9FFF742FFF44C607C0028B8
-:10AE200009D0A07B012803D1F149F2480AF0D1F8FA
-:10AE3000FFF7F6FE70BD0126002D05D00220FEF7BB
-:10AE40008EFAEA4820304671E8484430FEF759FB54
-:10AE5000012008F0A8FDFEF7A1F9A07B00280FD083
-:10AE600001280DD002280BD003280BD0E148E0497F
-:10AE70001E300AF0AEF8E07B217C884306D009E062
-:10AE8000032000E00120FEF720FAF4E7A07B012870
-:10AE900003D06674D448067070BD00202074F9E7B2
-:10AEA00010B5FEF71EFBD048007800280ED1CF4821
-:10AEB000807C00280AD00020FFF7A2FFF6F781FA75
-:10AEC000CA4820300079012806D007E000F0F7F9E1
-:10AED000FEF712FB0C2010BDF8F79AF8002010BD09
-:10AEE000C14901204870704770B500F0DAFF0028B2
-:10AEF0001BD0FF202D30FEF7E5F9BB4E3078BB4C60
-:10AF00002034012814D0022801D003282ED0A520F7
-:10AF1000B74980000AF05DF83078002807D0F6F7CE
-:10AF200050FA207901282BD02FE0FFF779FE70BD71
-:10AF3000AE4DA87B032819D0FEF7F4FAE87D00286F
-:10AF400003D0FEF7C6FDFEF70CFBA8489430FEF7D1
-:10AF5000D8FA012008F028FDA87B01280BD0A179A0
-:10AF60006F20012906D0032904D004E00120FFF757
-:10AF700047FFD1E77F20FEF7A8F902203070CBE72A
-:10AF80006079002801D1FEF7A1FB0020607170BD3F
-:10AF900070B5964CE07D002803D0FEF7E9FAFEF785
-:10AFA000A8FD00F07EFF00281CD08F4D28780228D5
-:10AFB00003D08F4990480AF00CF8A07B012814D0E8
-:10AFC000FF202D30FEF77EF90120FFF719FF2878CA
-:10AFD000002809D0F6F7F5F9844C203420790128AF
-:10AFE00006D00AE0FFF71CFE70BD99208000E9E75B
-:10AFF0006079002801D1FEF769FB0020607170BD07
-:10B00000F8B50446FEF738F90746FEF78DFD01282E
-:10B0100027D0002674480078022804D07648744966
-:10B020003C3009F0D6FF714DE87D002803D0FEF7D3
-:10B030009FFAFEF75EFDFEF784FA6C489430FEF747
-:10B04000DBFD21006D4C009064D0FEF7BFF80028B6
-:10B0500060D0009803000AF0ADF8065D5D5D065D06
-:10B060001E5D0126D6E7A87B012853D0374304D1C3
-:10B07000A079002801D002284CD160484C30FEF75E
-:10B0800040FA012008F08FFC0120FEF71EF9564817
-:10B090000321017045E059487430C178D438C27931
-:10B0A00091421DD10146D4310A79037A9A4217D1CF
-:10B0B0004A79437A9A4213D18A79837A9A420FD194
-:10B0C000CA79C37A9A420BD10A7A037B9A4207D192
-:10B0D0000978407B4906C90F814201D1012100E076
-:10B0E0000021A87B012802D0002803D012E000290B
-:10B0F00007D10FE0374304D1A079002801D00128FF
-:10B1000008D13E487430FEF798FE002802D0A87D92
-:10B11000002810D0FF202D30FEF7D4F80120FFF7D3
-:10B120006FFE3148007800286AD0F6F74AF9207996
-:10B1300001286ED0C0E02C4F30497868042283315A
-:10B14000343009F0A9FD2D484021743000784006C4
-:10B15000C20F78680A54294906227731413009F034
-:10B160009BFD2649786803228731383009F094FD29
-:10B1700022483B217430827D78680A541F4974311B
-:10B180000A7ECB7D12021A4382878A7E4B7E120290
-:10B190001A43C2830A7FCB7E1102194301841749E7
-:10B1A00074318A7F4B7F1102194341841349052270
-:10B1B0009331243009F070FD10497F68943108798B
-:10B1C000C20638462030D20E0090827709794909AC
-:10B1D000C177207A00281DD0A07F00285BD1607A3B
-:10B1E00000280ED013200DE0740000201418002059
-:10B1F000D8AD0000F9030000BF02000034180020A1
-:10B200005CE00520E0773449002008700120A07739
-:10B2100041E04CE03048E97D1038002924D000217D
-:10B22000A172B989A1814021C95DE1733946062225
-:10B23000413109F031FDF88BE082388C2083788C25
-:10B2400060830098C07F2077607F400840003043D3
-:10B250006077FEF776FC617F4000C907C90F0143A4
-:10B2600061770120607215E00021A172B989A18186
-:10B270004021C95DE17339460622413109F00CFDD8
-:10B28000F88BE082388C2083788C60830098C07FB4
-:10B29000207701202072114D0020287000F00FF857
-:10B2A000FEF72AF90120696800F055FF39E7607957
-:10B2B000002801D1FEF70AFA00206071F8BD10B530
-:10B2C000FEF74AF9FEF73DF9FEF78BF80020FDF78F
-:10B2D000FCFFFEF7CAF810BD5418002074000020CF
-:10B2E0008107C90E002808DA0007000F0838800817
-:10B2F000FD4A80008018C06904E08008FB4A800095
-:10B3000080180068C8400006800F704710B500F034
-:10B310007BFF10BD70B5F64C0546A26800290DD024
-:10B32000002A04D0FF20F3A14C3009F052FEA560A2
-:10B33000F6F748F80220F6F73FF870BD002A04D16E
-:10B34000FF20ECA1543009F044FE0020A060F6F785
-:10B350003AF80120F6F738F870BDE5481030C07EA5
-:10B36000002801D00020704701207047E0481030CD
-:10B37000C07E7047DE483430C07E70470021C17601
-:10B38000817601600162DA481030C07E002807D162
-:10B39000D7483430C07E002802D1D549012008703A
-:10B3A000704710B50B46C17E847EA14204D0114681
-:10B3B000184607F0B4FB10BDFFF7E0FF10BD38B52D
-:10B3C000CB4C606801684978012924D00121684686
-:10B3D00006F05EF968460078CA49000209F0D6FC1A
-:10B3E00060680268C0685268511807F0B5F9616872
-:10B3F000C860BF49606834310022884215D0018B93
-:10B40000002912D04272032101720271021D017FD4
-:10B41000FFF7C7FF38BD7D21C068C90007F09CF960
-:10B420006168C860B8480861E3E7018B491C018383
-:10B4300002214172E7E7FFB5AD4F02461037386A87
-:10B440003C68056889B060680790A948C1680291A6
-:10B450006B880B98C01A80B208900C98002804D012
-:10B46000264638362046483002E03E1D28466430E5
-:10B47000059003203071002A15D0012A7ED0022ABF
-:10B4800052D0032A7BD09BA1A04809F0A2FD0C98C2
-:10B490000028307974D0032804D09C4895A1093045
-:10B4A00009F097FD40E1002904D1984891A169383D
-:10B4B00009F08FFD9549A88FA839484340180A998B
-:10B4C00000F0A8FEA0619149E88BA83948430A9989
-:10B4D00000F0A0FEE06186488C4AC068A98FA83AB7
-:10B4E000514384464118A069894A091A8A183B21A8
-:10B4F000A262864B495DA83B594341180818FF30AA
-:10B500001630206260626046101AFF38ED2135382F
-:10B51000C9008842BBD27F49884204D27B4875A1CA
-:10B520005C3809F056FDBAE0784AA88FA83AE1687D
-:10B53000504308180A9900F06DFEA0617349E88B2A
-:10B54000A83948430A9900F065FEE0616848C06880
-:10B55000002804D16D4867A1543809F03AFD5820FD
-:10B56000405B6D4A0028A88FE16822D0504308183C
-:10B57000A169401AA0622169A06802E022E051E0BE
-:10B58000CDE04843A169644A40183B21495D5143DD
-:10B5900041180818FF3014302062E88BE1695043ED
-:10B5A000411A0F208001081A60625148A16AC068E0
-:10B5B0006DE050430818A169401A3968D3384968CA
-:10B5C0004018D7E7284640300290008B002801D071
-:10B5D000002904D14D4847A13C3809F0FAFCE88B1A
-:10B5E0004D494843E169401AA062029A138B2269CF
-:10B5F0009B1A9C46A3685343A2699A186346594311
-:10B6000051183B22525D444B5A438A185118FF315E
-:10B61000143121620F218901411A61623449C968DC
-:10B62000401A35E00C98002803D03420005D002833
-:10B6300074D1E88B38494843E169401A0899484376
-:10B64000A062284640300690008B0028079829D039
-:10B65000002804D02D4827A1163809F0BAFC069816
-:10B660002D4A018B08980818E16948434000FF30D3
-:10B6700014302062E88B5043411A0F208001081AD1
-:10B68000606200F0C1FD00281CD0A16A0298081A6F
-:10B69000FF38ED212338C900884200D3F7E60220A5
-:10B6A0003071F4E6002802D00298002804D117482F
-:10B6B00010A11D3809F08DFC0798A16AD33808182D
-:10B6C000A062CCE706F0B1FD7A690146104607F0AA
-:10B6D000D5FFA16A081AFF38ED211E38C90088423B
-:10B6E000DCD201200DB0F0BD00ED00E000E400E090
-:10B6F000D01800207372635C6C6C5F6C6D2E7330BD
-:10B700002E63000010270000B78913008A0500008F
-:10B7100036040000A3020000E20400002AE003282F
-:10B7200002D1FD4807210170A16A786907F014F879
-:10B73000B060616A206A884202D90598016001E020
-:10B74000059908600598F54900680818F060A9880F
-:10B750000B98081A00B2002801DD022000E000204A
-:10B7600070710C9830700C98002805D03420005D62
-:10B77000002801D00220B5E70C9801214840203470
-:10B780006075397F32463846FFF70BFE0020A9E787
-:10B7900010B5E14900284A68116A096807D01268A3
-:10B7A000C98BDF4BD2695943891A09F0EFFA10BDF2
-:10B7B000F8B5D94F35227868016A0C680168525C87
-:10B7C000002A0AD0498E6288914206D1407A002828
-:10B7D00003D1D449D44809F0FCFB06F026FD01460C
-:10B7E0007868406907F04AFFFFF7D2FF79686588FB
-:10B7F0000B682E185A8EB24202DB521C5A8602E0A7
-:10B80000401C2818588608683622125C002A05D188
-:10B81000428E23899A4201D1521C4286088B03280A
-:10B8200002D2401C088302E00868408EA0802046B7
-:10B830004030C18A808A081A6188401E401885B24B
-:10B84000203416E0096AE67F097976004B00B74993
-:10B85000007DCB5A895BC91889B20023FFF7EBFD45
-:10B86000002811D0012810D0AF48AE493A3009F075
-:10B87000B0FB79680868428EAB1A1BB2002BE1DA84
-:10B880000820E07400F00BFEF8BD78680068418E77
-:10B89000491C4186EDE770B51F209F4D002128709F
-:10B8A000E960A868C27E130009F084FC04545403C4
-:10B8B0004654026A14680268117002685160006898
-:10B8C0002030407D002808D106F0AFFCA968096847
-:10B8D000096C07F0D3FE002815DCA86801684A8EC1
-:10B8E00061888A4204D12289511A6181628004E010
-:10B8F000511A61810168498E61800268C1681164D2
-:10B90000C16841610FE0A8680168098E6288891AE0
-:10B9100061810168098E618001680A6CC2600A6CED
-:10B920004261886C6066204601F06DFC00280ED0F4
-:10B930007B487C49BD3808E0C1684161FFF7D4F914
-:10B94000002804D076487749B73809F042FBF5F76C
-:10B9500038FD70BD72487349B038F6E710B56E4ACD
-:10B960000B00526809F026FC0906090F1E0C2D2D4C
-:10B97000082A2D00FFF78FFF10BD00F059FC10BD05
-:10B98000FDF7A9FE10BDD07E022805D0D07E032889
-:10B9900005D0644966480EE0FFF70AFF10BDFFF7C7
-:10B9A0000EFD10BDD07E0228F6D0D07E0328F6D042
-:10B9B0005F485C490B3009F00CFBF0E706F01BFC1C
-:10B9C00010BD23205749000109F003FB10BDF3B55A
-:10B9D00081B0514C029825460026012710350300FE
-:10B9E00009F0E8FB0906313C3C3143433C3C430051
-:10B9F000494801211030FFF78DFC02990198FFF7AB
-:10BA0000ADFFE87E022828D1A0680468006A0668B5
-:10BA100006F0EAFBF18B424A5143E269891AD339B5
-:10BA2000FF223232E162904202D24248081802E01C
-:10BA3000081A41494018E0624048E16A814200D852
-:10BA40000846E06206E001460198FFF787FFE87EBE
-:10BA5000022802D1286820300775FEBD01466560C6
-:10BA60000198FFF77BFF6660FEBDFF202D49C130C6
-:10BA700009F0AFFAFEBDF8B5064627480D4600248A
-:10BA80003430254F0B0009F095FB09060C10100C03
-:10BA9000161610101600204801213430FFF73AFC2A
-:10BAA00029463046FFF75AFFF8BD78603046FFF769
-:10BAB00055FF7C60F8BDFF201A49F53009F089FA7E
-:10BAC000F8BDF0B5144C0020616885B003268E7671
-:10BAD000CA7E0746032A03D0C97E00293FD03FE033
-:10BAE000087F002804D112480E49D93009F071FAB4
-:10BAF0006068057F684606710221417106F095FB7A
-:10BB00000290FF20F53003900121684601706946DC
-:10BB1000284607F004F814E0D0180020EF160000C3
-:10BB2000E2040000F4B6000074060000FC510100BD
-:10BB30001602000084F8FFFFB5F9FFFF161200009F
-:10BB400020BF6068007F07F025FE0028F8D06068FD
-:10BB5000007F06F050FB60680777FFF70FFC0120BD
-:10BB600061688F7605B0BEE5FD494A68907600E0D1
-:10BB700020BF4A68D07E002803D0D07E937E9842B2
-:10BB8000F6D0D07E002803D00020002191767047A7
-:10BB90000120FAE770B5F24900241031CA7EF04D59
-:10BBA000032A03D02431CA7E032A17D169600028F2
-:10BBB00010D001280AD0EB49EB4809F00AFA00201E
-:10BBC0006968002C0860686008D070BD0320FFF72A
-:10BBD000CBFF01E0FFF775FF0446F0E70C2070BDD6
-:10BBE000F8B5DF4F04461F25E67E330009F0E2FA80
-:10BBF000042A20031B20DA481030844203D0D9499C
-:10BC0000DA4809F0E6F902207C60FFF7ADFF002872
-:10BC100005D07968002008600862786012E00C2581
-:10BC2000002078600BE00120FFF7B4FF054604E038
-:10BC3000CE48CC490C3009F0CCF9002D02D0E07E82
-:10BC4000B042D1D1E07E002804D0C848C5491230A6
-:10BC500009F0BFF9F8BDC24810B51030FFF7C0FFBA
-:10BC6000BF483430FFF7BCFFBD490020583108758C
-:10BC7000BF494870BA49103148610A4624325061C0
-:10BC800088769076012210390A708860486010BD6D
-:10BC900070B504460120FFF723FBC5B20B20FFF768
-:10BCA0001FFBC0B2854204D0B048AE49343809F019
-:10BCB00090F90120FFF714FBC5B21820FFF710FB25
-:10BCC000C0B2854204D0A948A649333809F081F9A9
-:10BCD0000420C043FFF704FBC5B21920FFF700FBA7
-:10BCE000C0B2854204D0A1489E49323809F071F9AA
-:10BCF0009F489B490C38047000201031C876887624
-:10BD00000A462432D0769076994B0124083B1C7168
-:10BD100018600862106208601060FFF79CFF70BD39
-:10BD20008F48007870479249083908717047F3B519
-:10BD30000D468B4983B01031CA7E08462430884CAA
-:10BD4000002A02D1C27E002A03D0C97E022903D074
-:10BD500005E08848616006E0C17E002901D00C2022
-:10BD600000E76060844806F0F2F96168087760686F
-:10BD70007F490160007F002804D17B4879496238FF
-:10BD800009F027F906F030FA7C49884200D20846CB
-:10BD9000FF30C83086B260680321C1760027012DCC
-:10BDA0002FD0724A0399121D5143026851600068F6
-:10BDB00001210170684605F06BFC68460078704907
-:10BDC000000208F0E3FF019106F02FFA01997118C3
-:10BDD00006F0C2FC6168032DC86021D06948086183
-:10BDE000606803210172022141720771021D017F07
-:10BDF000FFF7D7FA6068078307202070002067608C
-:10BE0000B0E606F012FA314606F0A6FC6168C8609A
-:10BE10005D48086108680770096801204870DFE71D
-:10BE20005A48DCE77047F8B54D4E1036F17E0029D0
-:10BE300004D131462431C97E002901D00C20F8BD3F
-:10BE40000221F176464C4A4F5834083F376234603D
-:10BE5000002538602575397920304A004C49C07F6B
-:10BE60008A5A4000085A2B46101881B22A462846A2
-:10BE7000FFF7E1FA002804D03B483A49323009F094
-:10BE8000A8F825610120A5602075658625863448BF
-:10BE90007830857539684888401E48803583002091
-:10BEA000F8BD10B52E4901248868827E032A0CD083
-:10BEB00000684078002806D0C8683649884202D910
-:10BEC0000024FFF70DF8204610BD0024FBE72448AE
-:10BED000826813681978491C1970C1681068C26AB1
-:10BEE000914204D8007D012801D001207047002034
-:10BEF000704700207047F8B51948194C1030606041
-:10BF0000016A00260D68006834212F460E54403720
-:10BF1000B97C002963D1007D032860D106F085F942
-:10BF200001466068406907F0A9FB002857DDFFF76C
-:10BF30002FFC6988401C41186068026811860068FF
-:10BF40002989028E91424AD9012120308175F88ACF
-:10BF5000B98A401A6988401E401887B238E000004C
-:10BF6000D0180020F4B600008D0300006D02000020
-:10BF700088000020CFB9000077BA0000F605000065
-:10BF800010270000CB120000B7891300B70800008B
-:10BF9000FC5101002E841300096A09794A00CD4939
-:10BFA0008B5A028E007D94463F22525D5200895A80
-:10BFB000C91889B201236246FFF73DFA00280ED066
-:10BFC00001280ED002280AD0C349C44809F001F85C
-:10BFD00061680868028EBA1A12B2002ADCDA66605A
-:10BFE000F8BD60680068018E491C0186F0E7F8B56D
-:10BFF000BB4D0026AA680128116A0C6810D00720E2
-:10C00000287006F05DF8B7480078F6F7AFFDA8682D
-:10C010000683026861885186006820308675F8BD05
-:10C02000087913684100AB481F7D415A032F18D08F
-:10C030001A7D022A22D01A7D012AE2D13F231B5DFC
-:10C0400022895B00C05A0023401881B20120FFF70B
-:10C05000F2F90028D5D0A1489F49B53008F0B9FFC2
-:10C06000CFE71E6112683F2396601B5D22895B004B
-:10C07000C05A0023401881B20320E8E75822125B1F
-:10C080001A613F231B5D22895B00C05A00234018C0
-:10C0900081B20220FFF7CFF9AA6801211268117559
-:10C0A000D7E738B58E4C0021A0680D46006842786D
-:10C0B000002A01D045701FE00078002809D0012136
-:10C0C000684605F0E5FA684600788749000208F0FE
-:10C0D0005DFEA0680268C0685268511806F03CFB1B
-:10C0E0000146A068C160057102214172021D017FF5
-:10C0F000FFF757F9A068058305F0E2FF794800785B
-:10C10000F6F734FD38BD10B50146754A0B0090684E
-:10C1100009F050F8060D150408190C1C012100F057
-:10C12000A6F807E00021506800F0A1F810BD01203A
-:10C13000FFF75DFF00210846FFF7ECF810BD00682F
-:10C140000321017510BD00F0A5F810BD62496748D4
-:10C1500008F03FFF10BD70B5614C002809D00128E0
-:10C1600016D0022821D061485B49243008F031FF05
-:10C1700070BDFFF796FF00210846FFF7CBF8A068D7
-:10C18000807E002801D01F2000E00720207070BDB5
-:10C19000A068002501684D70FFF7F0F80320F6F75E
-:10C1A00023FC05F08DFFA56070BDFFF77AFFA06846
-:10C1B000FFF7E4F800210846FFF7ACF80420F6F793
-:10C1C00013FC70BD46498968CA7E022A08D10A68F4
-:10C1D0001378002B04D150600968CA6A1018C8622D
-:10C1E000704710B53E4A00290CD0012907D002291A
-:10C1F00007D03E483849443008F0EBFE10BD401EE1
-:10C2000000E0401FD06010BD35488068002800D095
-:10C210000120704710B504460020002907D034489B
-:10C2200008F0B4FD0146204608F0B0FD401C10BDEA
-:10C2300010B52B488068C07E030008F0BBFF0414D3
-:10C2400014030A1401F0F2F800280BD022492948FF
-:10C2500006E0FEF725FE002804D026481E49001DF2
-:10C2600008F0B7FE10BD23481B490B30F8E710B5A6
-:10C270000446002903D00020FFF7B9FE03E0194867
-:10C280000078F6F773FC2046FFF778F80020F6F701
-:10C29000ABFB10BD10B512488268106A11680068C7
-:10C2A000CB698B60134BC18B9B3359431368D960A7
-:10C2B0000146E0314B8883870C783B231C548B88E4
-:10C2C000C383CB88038409894184116802200875DF
-:10C2D00010BD0000FC510100F4B600005A06000039
-:10C2E000D01800207C00002010270000B2070000BA
-:10C2F00040420F0047040000F8B5FEF702FA064678
-:10C30000FEF770FAF94D07466879F94C002809D014
-:10C31000012823D0022826D003282ED0FF20F5A103
-:10C32000C63033E0F2481830FEF748FA002801D052
-:10C3300003200FE0EE481830FEF7ACF9002804D0D7
-:10C3400060696030007A002806D0E9481830FEF7AE
-:10C3500008FA012068711BE00220FBE7E44818306E
-:10C36000FEF7FFF914E0E2481830FEF793F90028D1
-:10C370000ED1FF20DFA1B83008E0DD481830FEF70D
-:10C380001DFA002804D1FF20DAA1C03008F021FEF8
-:10C39000A169F722087810400870AA79D207120F15
-:10C3A0001043FB2210400870EA79D207520F104365
-:10C3B00008706B79EF22022B04D0012B07D0032BDE
-:10C3C00007D00CE0012E06D8002F04D007E07F1E16
-:10C3D0003E43002E03D010401022104300E01040D6
-:10C3E0000870287C002811D0687901280ED0BF4839
-:10C3F0005438FDF786F8BD49606954397830A26930
-:10C40000FDF7E3FA0020FDF7EFFA04E00846FDF738
-:10C4100078F8FDF70CFBA0690078C00606D4E06947
-:10C420000078C00602D4E079002802D0A079002864
-:10C4300001D0012000E00320FCF747FF032020701B
-:10C4400001202071F8BDAA4810B51C30FEF7DDF9B7
-:10C45000A74C002802D00020607004E0012060702A
-:10C46000A2485438E061A148407C002802D060789E
-:10C47000002805D0E069FDF744F8FDF7D8FA10BDB3
-:10C480009A485438FDF73DF8984A6069543AA0300C
-:10C49000E169FDF79AFA0120FDF7A6FA10BD10B583
-:10C4A00093490022486932238276C27601221A54C7
-:10C4B0004030807C002803D00A700021022001E077
-:10C4C00000210320FFF71FFE10BD70B5884C607976
-:10C4D000C2062046416908464030002A01DA00229F
-:10C4E00002E0028B4B89D2180B460283C0331A7EBE
-:10C4F000002A03D0828B4D8952198283627A002AE6
-:10C5000003D03D2001F0C9F852E08A7E032A4FD0C3
-:10C51000227A002A13D0500701D4D00601D51E205C
-:10C5200036E0100701D53D2032E0D00705D1900755
-:10C5300003D470A1734808F04CFD2A2028E0603134
-:10C540008A78002A05D0C28B551CC5830D88AA4263
-:10C550000FD25A7F062A02D01A7F062A05D1428BB3
-:10C56000531C438309888A4203D2828BC18A8A4240
-:10C5700001D322200CE0027C808A002A0FD00628FA
-:10C580000FD35A48C07B012801D03E2000E008208C
-:10C5900001F083F86069807E032809D001E08842B9
-:10C5A000F5D20120207000210846FFF7ACFD70BDD8
-:10C5B000FFF775FF70BD10B54C494D48CA7B002A86
-:10C5C0002BD0012A29D0022A27D0032A04D049A13E
-:10C5D0004D4808F0FEFC10BD897B02290FD00729C9
-:10C5E0001BD0406901464031CA8A898A511A891E86
-:10C5F00089B2032900D30321028951180BE0406955
-:10C60000014640318A8A032A01D2018903E0428827
-:10C61000C98A5118491C818010BD4069F5E700B5F1
-:10C62000030008F0C7FD0604070B0F1212170029BC
-:10C630000ED00FE0491E02290AD90BE0491F01293B
-:10C6400006D907E0072903D004E00A390C2901D8EC
-:10C65000012000BD002000BDFEB50546244818306D
-:10C66000FEF78DF8002804D1274822A1CF3808F022
-:10C67000B0FC1F4CA069FDF703FC0321A069FDF786
-:10C680002DFCA069EF220178114001702946FDF7C9
-:10C6900069FC002601272B0008F08CFD0E5D5D086B
-:10C6A0005D1D6161155D4D5D613D385D60697121A4
-:10C6B000095C002901D0062101E0C030417EA0695B
-:10C6C000FDF71BFD4BE0E069FDF776FC0146A06934
-:10C6D000FDF784FD43E06169A069D031FDF747FDB6
-:10C6E0006169A0699531FDF750FD38E0C819002057
-:10C6F000900000207372635C6C6C5F736C61766594
-:10C700002E6300006B020000780800000621A0697B
-:10C71000FDF760FD23E020690178A069FDF744FD85
-:10C7200020698188A069FDF741FD20694188A069E1
-:10C73000FDF740FD13E00096019660696030007CD3
-:10C74000002803D069460878384308706946A06914
-:10C75000FDF756FD03E0FE49FE4808F03AFCFEF7FF
-:10C7600018F8002804D1FB48F949801D08F031FC75
-:10C770000C2D07D0072D04D060695E210E52603069
-:10C780008770FEBD606940304683FEBDF0B5F24C57
-:10C79000DC2061698DB0405C042809D0052834D1C3
-:10C7A0006031487A002829D001204874022026E010
-:10C7B0001022EA31684600F0A8FF61691022C831F2
-:10C7C00004A800F0A2FF684605F0BBF8616908AA5A
-:10C7D0006CCA0F46CB6778378A670846FE608030A0
-:10C7E000BD60074620376CC7002303634363012005
-:10C7F000A0310876D9494874052000E00D20FFF7E4
-:10C800002BFF61690020C03108770DB0F0BDF8B58D
-:10C81000D1481830FDF7B3FF002842D0CE4C207A23
-:10C8200000283ED160690025C030007ECB4E002834
-:10C830000BD0B17B0120FFF7F2FE002805D1B17BC0
-:10C840000420FFF7ECFE002806D060690127C03005
-:10C85000407F062807D00CE060695C210D526030F3
-:10C86000457402202FE0B17B0420FFF7D8FE00289A
-:10C8700010D0B07B030008F09DFC173F3F3F3F1EE8
-:10C880003F3F3F3D3F203F3F3F292C3F3F3F3F3F02
-:10C890003F2F3F0060696A21095CC90702D0C030A0
-:10C8A0004577F8BD0C20FFF7D7FE60696030817ACC
-:10C8B00039438172F8BD072005E0FDF7D0FF00285D
-:10C8C000F8D075740B20FFF7C7FEF8BD00F02CFF01
-:10C8D000F8BDFFF75BFFF8BD606900218030816023
-:10C8E000C160057437740620FFF7B6FE60696030DA
-:10C8F0008570F8BD0920E6E700F0D8FEF8BD70B5F8
-:10C90000964DA87B072834D1934CDE22606941887C
-:10C91000125A491C91422CD1217A002929D1014671
-:10C92000E0318B88C28B934207D1CA88068CB24211
-:10C9300003D10A89468CB2420DD0884A8689303AA2
-:10C9400056819381CB88D3810989118201462E318A
-:10C9500051600121117001221146FDF79FFC002159
-:10C960000420FFF7D0FB61690020C0314877A8732D
-:10C97000E87370BD70B5794CA07B162803D074495C
-:10C98000774808F026FB74480021426973486032FA
-:10C99000117291703038067E0B250123002E06D0CF
-:10C9A000027D002A12D14575817503750EE0567A15
-:10C9B000002E06D051722288828381760C22027664
-:10C9C00004E022888283817683770576A17370BD27
-:10C9D000F8B5614DA879800723D5287A002820D1A1
-:10C9E0005E4C0120A17BFFF71AFE002819D1A8692F
-:10C9F0000127C0780026030008F0DCFB0E62620805
-:10CA0000622E3B4F0A62146220524562022021E0EE
-:10CA1000A07B042804D052484D49333808F0D9FA95
-:10CA2000A673F8BDA07B082804D04D4848492D388E
-:10CA300008F0CFFA686960308670F1E7A07B0A28B9
-:10CA400004D047484249263808F0C3FA6869603084
-:10CA500007720B20A073F8BDA07B0E2804D0AB207A
-:10CA60003B49C00008F0B5FA6869603007720F20D2
-:10CA7000F0E7A07B0F2804D039483549183808F072
-:10CA8000A8FA1120E6E7A07B0F2804D034483049EB
-:10CA9000123808F09EFA1320DCE7FFF76BFFF8BDB1
-:10CAA00069690846C0310A7F062A04D16030807A5D
-:10CAB000800700D50E77487F0628F0D14E77F8BD65
-:10CAC000274823496E3008F084FAF8BD10B5234C8E
-:10CAD0000020A17BFFF7A3FD002804D11E480122FE
-:10CAE000017A114301720420A07310BD10B51A4CD5
-:10CAF00060690146C0314A7F002A06D0097F0629B5
-:10CB000003D0217A0122114321726030807A80079C
-:10CB100015D4E069FDF752FB61696031C872E069C4
-:10CB2000FDF74EFB616960318881E069FDF74DFBDF
-:10CB3000616902226031C881887A10438872606915
-:10CB400000220146C0310B7F062B00D10A7709E095
-:10CB5000F4C60000ED07000090000020C819002076
-:10CB6000770500006A231B5CDB0703D106234B77A4
-:10CB70004030428310BDF8B5FE48817B0020FFF7AE
-:10CB80004EFDFD4C0126002807D160696030407AD7
-:10CB9000002802D1207A30432072616900255E208E
-:10CBA000455262204654C831E069FDF7C8FA616910
-:10CBB000E0699131FDF7D2FA6169042208469131AA
-:10CBC000B93008F069F8EB483038017E08270029B1
-:10CBD00006D0017D002912D14775857506750EE0D6
-:10CBE0006169054689894183E249E0691439FDF7A5
-:10CBF0008EFAE049E0690C39FDF796FA2F76DD48A8
-:10CC00000E218173F8BD70B5DA4D0020A97BFFF7C6
-:10CC100006FDD94C002803D1207A01210843207257
-:10CC2000E069FDF730FA00280ED0E069FDF726FA3A
-:10CC30006169DE225052498800F0C1FD002806D00B
-:10CC4000282000F02AFD70BDFFF740FF70BDE069AD
-:10CC5000FDF70EFA6169E0310870E069FDF701FA4D
-:10CC60006169E0314880E069FDF7E0F96169E03130
-:10CC70008880E069FDF7E3F96169E031C880E06927
-:10CC8000FDF7E6F96169E03108810720A87370BDFE
-:10CC9000F8B5B94CA079C0076FD0207A00286CD1C4
-:10CCA000B44D0120A97BFFF7BAFC002853D1E069FD
-:10CCB0000027C178022201260B0008F07BFA0D162E
-:10CCC0001308354A4A384C474A1929444A00FDF7A7
-:10CCD00016FA6169DA225054AE735E204752603111
-:10CCE0008E7038E000F076FD35E0FFF78CFF32E023
-:10CCF000A97B0020FFF793FC002802D1207A304363
-:10CD0000207260695E210F52603086700A2018E040
-:10CD1000A87B0B2802D0207A104320722F74606900
-:10CD2000603046720C200CE0FFF725FF13E0A87B73
-:10CD3000112802D0207A1043207260696030877019
-:10CD40001620A87307E0FFF7D1FE04E000F00FFD06
-:10CD500001E0FFF7BBFEFDF76EFD002804D14F2078
-:10CD60008649000108F035F9606900238030016BC5
-:10CD7000426B491C5A4142630163F8BDF8B57D4FCF
-:10CD8000012814D1787C002802D1387C002801D0F9
-:10CD9000FCF74DFEFCF7E0FBFCF7D3FB0020FCF7B3
-:10CDA00094FAFCF71EFBFCF760FBFCF7A5FBF87B95
-:10CDB00001260025704C00280FD16079C10705D0ED
-:10CDC0000220F87360694030057402E0800717D5CF
-:10CDD000FE7300210120FFF796F9F87B012802D0AD
-:10CDE000022808D00CE06079C00709D00220F8734F
-:10CDF0006069403005746079000701D50320F8733D
-:10CE000000F018FDFFF703FD2079002801D03D81D7
-:10CE100002E03889401C38816079C007606904D01D
-:10CE200072210D544030858203E04030818A491CD4
-:10CE30008182E079002806D061696031887C02280F
-:10CE400006D8401C887460696030807C022804D950
-:10CE50003D817D81606960308574B97B0020FFF77A
-:10CE6000DEFB002802D1B87B06284BD16069014661
-:10CE7000C0310A7F062A45D0497F062942D03D4964
-:10CE8000C97B03293ED16030807C00283AD1FDF770
-:10CE90002FFC002836D0FDF7A5FC002832D06169B0
-:10CEA000C88801282ED90A4640325674D08A978AFB
-:10CEB000831E9F4201DB012002E0C01B401E80B2A6
-:10CEC0002C4B1F89A3899F4201D3012302E0DB1B66
-:10CED0005B1C9BB2984200D91846012800D15574BA
-:10CEE0002A22525C002A11D0224A898D52898A4214
-:10CEF00001D3012102E0891A491C89B2884205D96F
-:10CF0000084603E06169012040314D7461694A8837
-:10CF100010180881FFF74FFB6069122215490C3089
-:10CF200007F0BAFEFFF7D1FAFEF7E3FF00280AD0B8
-:10CF3000104810388179002905D161690246898934
-:10CF4000203A118586710C481C30FDF7BCFC002886
-:10CF50000FD0E06900788007800F012809D00228EF
-:10CF600007D0FDF7D0FC002803D10449044808F09D
-:10CF700030F807E0C819002090000020F4C6000037
-:10CF80007F030000606940308574F8BD70B5FE4CC9
-:10CF9000607900283CD0FD4D022810D1FDF789FBB7
-:10CFA000002803D1FA49FB4808F013F86A69002306
-:10CFB00080329068D168401C5941D1609060002651
-:10CFC00066712079012804D12671A87910210843BF
-:10CFD000A871E078012816D1E670A87908210843E5
-:10CFE000A871FDF7F5FB002804D1EA48E84918309C
-:10CFF00007F0EFFF6969002380318A68C868521C16
-:10D0000058418A60C860A079012802D00120A0712F
-:10D0100070BDA67170BDF8B5DC4CDB4DE269002730
-:10D020001078042183079B0FE8790126012B11D08A
-:10D03000022B0FD0032B01D0207A30E06178002939
-:10D0400005D1AE70A1793143A17123E0EF71F8BD34
-:10D05000EE71F8BD5278D3061CD060780028F8D164
-:10D06000D006C00E1B2818D8607908436071FDF700
-:10D07000E2FB002804D1C748C5494B3007F0A9FF9F
-:10D08000606900238030026B416B521C594102637E
-:10D090004163E8790128DBD1D8E7207A10210843E1
-:10D0A0002072F8BDF8B5B84D0446303D287D002704
-:10D0B00000280AD0002978D1677010202070687D80
-:10D0C000A070A87DE0702F756FE02878002814D03C
-:10D0D00000296AD1072067702E462070083607E0C5
-:10D0E000686807802F700A223146A01C07F0D4FD23
-:10D0F00028780028F4D1A77057E0287EA24E143E6D
-:10D10000002837D0002950D1297EA0480B0008F014
-:10D1100051F80D2C2C2C2C2C2C2C2C112C2C2008C8
-:10D120002C0067700C212170A97EA1704069808954
-:10D13000A08018E008216770217040690A46808944
-:10D14000914960801439201D07F0A6FD3089A08127
-:10D1500009E067700B212170A97EA1704069808968
-:10D16000A080A87FA0712F761FE089498A4807F028
-:10D1700030FF1AE0844810388279002A08D000294C
-:10D1800013D1677011212170B189618087710CE022
-:10D19000827A002A0BD0002907D1677012212170F2
-:10D1A000318A6180718AA18087720120F8BD0020D8
-:10D1B000F8BD76480078012801D00C2070477249EC
-:10D1C0000020303908700875087620318871704762
-:10D1D00070B56E4C064620780D46002804D093208A
-:10D1E0006B49000107F0F5FE01202661E07225621F
-:10D1F0002070FFF7DEFF002804D0674864494930FB
-:10D2000007F0E7FE70BDF8B5604C2178012902D126
-:10D210002178012901D00C20F8BD01460546606146
-:10D2200012220C31584807F037FD01274035AF7402
-:10D23000554D2888FDF723FA002827D02888FDF7C8
-:10D24000D9FA002822D02888FDF78EFA00281DD0B0
-:10D250002888FDF7A8FA002818D0FCF742F9606981
-:10D260000026C088002825D048481830FDF787FAE6
-:10D2700000281FD06069C030007E00281AD0A97B2A
-:10D280000120FFF7CCF9002802D013E01220F8BDEE
-:10D29000A97B0420FFF7C3F900280BD16069014680
-:10D2A0004030868360314E740220FFF7D5F9606903
-:10D2B00040304674344830380078002806D1606920
-:10D2C000C18D008C814201D9A18102E06069008C8E
-:10D2D000A08160694189491E8AB2298989182981FA
-:10D2E000297B002902D06E812E7302E0698989189A
-:10D2F0006981014640318B8A9B188B82C388012B40
-:10D3000001D85B1CC380002A01D060308674A87BE2
-:10D31000032816D0487C002815D02889A189884286
-:10D3200011D2FDF7E5F900280DD060692A21095CCA
-:10D3300000290BD06989808D814207D3A670E770E0
-:10D340000CE0A7700AE0A670E67007E0688900218B
-:10D35000401C6881A7700520FEF7D5FE6069512149
-:10D360000E54A97B052901D0062920D1DE2142884F
-:10D37000095A511A09B2002919DB01460522E03188
-:10D380002430F3F721FF09E0C819002090000020A5
-:10D39000F4C6000039070000F10800000122022154
-:10D3A0006069FCF77BFF6069C0304677AE736069E7
-:10D3B0004189FDF728F8A07800282AD1606920303B
-:10D3C000807A002800D06E810120FBF788FE60691A
-:10D3D0003830FCF73EF860693430FBF751FF216AC2
-:10D3E00000200856FBF718FF0120FCF777F8FBF741
-:10D3F000D1FEFCF76FF80120FBF7B1FF6069406ECA
-:10D40000FCF782F8FFF71FF860694030C07BFBF73C
-:10D4100040FF6671E671A6712672A6726672267169
-:10D4200002202070FCF768F80020F8BD10B5F74C1A
-:10D430002078022801D00C2010BDA078002803D04D
-:10D440000020FFF79BFC17E0FCF74BF800F01DF9FC
-:10D4500060692030007C012809D0FCF79FF8FBF7B9
-:10D460009EFEF3F7AEFFE07A012803D004E0FCF75C
-:10D470009DF8F4E7F5F7CCFD002010BDE349C87234
-:10D48000704710B5E14C2078032803D0E049E1480B
-:10D4900007F09FFDE04801218278002A06D0002293
-:10D4A00082700171A27904231A43A271A2691378D0
-:10D4B000DB439B0707D1C378002B04D1C170A0794F
-:10D4C00002210843A0711078C00606D4E0690078F4
-:10D4D000C00602D4E07900280CD06078002809D179
-:10D4E000A079002806D1FEF7F2FC002802D0207AAD
-:10D4F000002803D00120FFF741FC03E0FEF7A3FF63
-:10D5000000F0C3F82078012806D0F3F75AFFE07A3C
-:10D51000012801D1FCF7DAF810BD38B5BB4C6069C1
-:10D520002030007C012820D1A07A00281DD1684637
-:10D53000FCF744F8002818D061693120405C0128CC
-:10D5400010D1B54A0D236D460020D356285683428C
-:10D5500008D050738989303A9185114620318873FB
-:10D5600001208872A07A401CA07238BD70B5A74C0B
-:10D5700006462078042804D0A648A549553007F06F
-:10D5800028FD607910210843A34D6071002E47D01B
-:10D59000FCF765FA61780126084300280ED1687C03
-:10D5A00000280BD0E0694178C90607D00078E979F6
-:10D5B0000007C00F884201D1667247E0E07800287A
-:10D5C00009D0E0694178C90605D10078C00602D4C7
-:10D5D000FFF7A3FF3AE0FFF7A0FFE069A979007821
-:10D5E0004007C00F884205D0FFF7D0FC60790821C2
-:10D5F00008436071E069E97900780007C00F88424C
-:10D6000001D1FFF708FD6079304360710020E071BF
-:10D61000A079000702D5A87B022817D0207A13E052
-:10D62000022108436071E079401CC0B2E07101281A
-:10D630000CD8687C00280DD0774854384078C10653
-:10D64000C90E052906D2C006002803D00120FFF725
-:10D6500095FB01E0FEF750FE2078012806D0F3F795
-:10D66000B0FEE07A012801D1FCF730F870BD10B5AA
-:10D6700066480078042804D066486549B73007F04A
-:10D68000A8FC0120FFF77AFB10BD10B50720FBF7BF
-:10D690001CFE5E490420087010BD5C4933224969B4
-:10D6A00050545D4A032090738876704710B5574CEC
-:10D6B0006069C030007F00281CD0062806D056487C
-:10D6C000817B0020FEF7ABFF002813D06069014684
-:10D6D000C0310A7F130007F06DFD070D0D0D0D0D14
-:10D6E0000D050D006030807AC20704D0C04380076A
-:10D6F00000D1087710BD0C20FEF7AEFF6069012253
-:10D700006030817A1143817210BD10B5002A0AD0B1
-:10D71000002306E0D41A6418203CE47FC4545B1C48
-:10D72000DBB29342F6D310BD10B503F0B0FF0C2866
-:10D730001CD3364C08216069D03003F0A9FF0028C3
-:10D7400006D060690421953003F0A2FF002803D1C0
-:10D750002F49324807F03DFC6169042208469531A3
-:10D76000BD3007F099FA0420FEF776FF10BD7CB5B6
-:10D77000294E0020B17BFEF752FF0125234C0028E3
-:10D7800002D1207A284320726946E069FCF73EFD09
-:10D79000684600780021C207D20F684602706069AF
-:10D7A000002A02D06030057401E0603001746069C5
-:10D7B0005E221152603085700820B0737CBD401A23
-:10D7C000174900B2884201DC002801DC01207047C3
-:10D7D0000020704770B5104D0020A97BFEF71FFF99
-:10D7E0000A4C002803D1207A012108432072E06905
-:10D7F000FCF77EFC6169DE2250524988FFF7DFFFAB
-:10D8000000280FD02820FFF748FF70BD90000020AF
-:10D81000F4C60000330A0000C819002062060000A8
-:10D82000FE7F00006169E069E031FCF755FC0520EE
-:10D83000A873EAE770B500F047F8384C384D6079C6
-:10D84000400709D5A97B0520FEF7E9FE002803D093
-:10D85000207A082108432072FFF71AFA00F012F824
-:10D86000FFF7B6F8A079C00609D5A87B030007F03A
-:10D87000A1FC06060606060604060620A873FFF7A6
-:10D880003EF8C2E710B525488179490714D5017AD9
-:10D89000002911D12249897B0B0007F08BFC080D70
-:10D8A000050D0D0D0E0D100D4069002262210A5468
-:10D8B000C030807EFFF7F1FE10BD012100E00221A3
-:10D8C0004069C030417710BD10B51448817909070F
-:10D8D0001DD5017A00291AD1114A947B230007F043
-:10D8E00069FC1416160B16161616161616161616AC
-:10D8F0001616161616161716406960308170407C91
-:10D90000002801D0062000E01620FFF7C6FE10BD5B
-:10D910004069603001728170917310BD90000020E9
-:10D92000C819002010B5031D03600020521E04E03A
-:10D930005C181C60401C2346C0B29042F8DB0020FB
-:10D94000186010BD01460A680020002A02D0104667
-:10D9500012680A60704702680A6001607047000040
-:10D9600000B51A2822D00ADC030007F023FC0D11B1
-:10D970001F131F1F191915171F1F1F1B1F002A28F0
-:10D9800014DD3A38030007F015FC030F11091100EC
-:10D99000002000BD1E4800BD042000BD0D2000BDBC
-:10D9A0000F2000BD082000BD112000BD032000BDD8
-:10D9B00010B50C46F4F784FF00281AD02046F4F77F
-:10D9C00084F9002812D020780E280BD00F2809D017
-:10D9D000022807D0032805D00EA1772007F0F9FA16
-:10D9E000002010BDA078FFF7BBFF10BD09A17D206E
-:10D9F000F4E708A18320F1E710B5F4F7EDF810BDC6
-:10DA000010B5F4F762F910BD10B5F4F744F910BD84
-:10DA1000023000007372635C686F73745F686369DF
-:10DA20002E630000F0B597B00021032004F082F9C6
-:10DA30000025FE4E022775807574347C12E0F06874
-:10DA4000E1004018818800290CD0858069460F705C
-:10DA50004D7001680291808869468880002168467F
-:10DA6000F8F702FD2046641EE4B20028E7D117B0A3
-:10DA7000F0BDEE4BD86019741A80D3E7EB49EC4B3C
-:10DA80004A8800201A4200D00120497C002901D098
-:10DA9000082108437047F7B504460E460078012177
-:10DAA000E34A8140521C114098B0E04A00915188ED
-:10DAB000E04B994205D0009B002B05D0DC4B19426E
-:10DAC00002D001201BB0F0BD009BD84A1943518001
-:10DAD0001A9D002D11D00020287022781A98002756
-:10DAE000401C130007F066FB10EF0D152137555D44
-:10DAF0006A39AFAB85B3EEEDECEF0B28EDD0042027
-:10DB0000E0E702212970A1880170090A4170032011
-:10DB100093E004212970A1880170090A4170E1880D
-:10DB20008170090AC170052087E006212970A1884B
-:10DB30000170090A4170E1888170090AC170218968
-:10DB40000171090A4171A289E81D216907F0A4F851
-:10DB5000A089C01D71E0082129702178082901D110
-:10DB600010212970A1880170090A4170E188817033
-:10DB7000090AC1700520308020466A1D01A90830BD
-:10DB800003F0CFFB00287DD1694630880979401821
-:10DB900053E00A212970A1880170090A417003200D
-:10DBA0000AE00C212970A1880170090A4170E188FE
-:10DBB0008170090AC170052030809DE0A0888446EC
-:10DBC0004000401C81B2308888425BD3052959D37C
-:10DBD0000E202870002008E0A36842009B5A5219CA
-:10DBE00053701B0A401C937080B26045F4D331809F
-:10DBF000B6E08E49487C002873D0401E4874C8683F
-:10DC000021790822C9004518A988286840180838D1
-:10DC1000A16807F041F802216846017100214171B5
-:10DC200028680390A98868460181002101A8F8F7B7
-:10DC30001BFC0020A880002E00D0308090E02978C6
-:10DC400080221143297029784022114329702978B4
-:10DC50008909890112312970A1880170090A41706E
-:10DC6000E288E81CA16807F017F8E088C01C308043
-:10DC70002878410640D5C00972D00121684601715B
-:10DC8000002100E02BE041713188ED1C091D01816C
-:10DC90001A980390E08840190490001D634D059088
-:10DCA000297C68460176002101A8F8F7DDFB0746CC
-:10DCB00030880C303080022F06D0002F50D060E02A
-:10DCC0003CE032E01CE059E06946097EE868CA00A1
-:10DCD00080182A7C914202D28188002902D0042730
-:10DCE0004FE02EE0697C491C69741A990160318803
-:10DCF00081800020308044E04C48A188C1802FE022
-:10DD000029788909890116312970A1880170090AC9
-:10DD10004170E1888170090AC1702289681DE1683B
-:10DD200006F0BAFF2089401D46E728788009800167
-:10DD3000183028702079687002207EE73B480A047A
-:10DD400001D405271DE00289A3889A4201D0062745
-:10DD500017E01E222A70012249043280490C4180BA
-:10DD6000009800280DD0314D0022288811468300EC
-:10DD7000032003F03AFF2078287107E0002030806C
-:10DD800003272A48009942888A434280384699E608
-:10DD9000F7B59AB002000C4606D0172A04D82348DB
-:10DDA000244B4088984202D107201DB0F0BD237853
-:10DDB0005D0601D4DB0901D00820F6E700236D469B
-:10DDC0002B706B701D462378611C9F06931E189361
-:10DDD000531E19939BB2169302AB1793134BBF0EAE
-:10DDE000DE883B0007F0E6F9208511F15EF16BF16A
-:10DDF000A3F1C6F1F2F1FBF1EEF1EDF1ECF1F1F18D
-:10DE0000EBF1EAF1E9F1E8F185F1052A71D104229B
-:10DE100069460A7005490A7969460A71E178A3786A
-:10DE20000A021A436946CA80227905E0DC190020FB
-:10DE3000FE710000FFFF00004A7061788906890EBC
-:10DE40000C2923D009DC891E0B0007F0B3F9091354
-:10DE500052155219521B521D520012291CD004DCBB
-:10DE60000E2915D01029D1D114E0162916D0182961
-:10DE7000CCD115E0800700E04007002839DA2AE11C
-:10DE80000007FAE7C006F8E78006F6E74006F4E781
-:10DE90000006F2E7C005F0E7C004EEE78004ECE717
-:10DEA0004004EAE7800724D5032AAFD105206A465B
-:10DEB0001070487809780002084390800BE1400711
-:10DEC000F1D5062A15D31898617880B2012902D0BD
-:10DED00002299BD101E0022700E0102706226946B3
-:10DEE0000A7000228A8001AEA11C0236BA1C179269
-:10DEF00018E0B6E04A780B7812021A433280801E8E
-:10DF0000891C1890B21C1691384603F0E4F9169952
-:10DF100018986B469A88C919C01BB61D521C9A8066
-:10DF2000179A80B28242E5D900289CD1D3E000073D
-:10DF3000B9D51998694682B20720087000208880F8
-:10DF4000601C891D11E0437806781B0233430B8067
-:10DF5000C37886781B0233434B806E46121FB3880A
-:10DF6000001D091D5B1C92B2B380042AEBD2002A6B
-:10DF700077D1B0E0C00674D5022A72D31898082170
-:10DF800082B2684601700021C18063780371A01CD1
-:10DF900017990EE04678077836023E430E80861CBD
-:10DFA0004E606F46D21AFE88C0180831761C92B2B5
-:10DFB000FE809342EED9DAE76FE076E065E051E06B
-:10DFC00046E01EE014E00AE000E0A0E0800648D54C
-:10DFD00009206A46107096801698D0800FE040069F
-:10DFE0003FD50A22684602708680169AC28006E0F3
-:10DFF000000636D50B206A46107016989080029164
-:10E0000069E0C0052DD5022A7FD318980C2182B271
-:10E01000684601700021C18063780371A01C1799C4
-:10E0200013E04678077836023E430E80C67887783C
-:10E0300036023E434E80061D4E606F46D21AFE8861
-:10E04000C0180831761C92B2FE809342E9D98EE75F
-:10E05000C0045AD5012A58D10D2168460170868026
-:10E0600039E052E0800450D5052A4ED30E2368468D
-:10E0700003708680C8788B78010219436846C18096
-:10E08000521F0281601D039025E040043DD5012A06
-:10E090003BD10F20694608701DE0030435D44B784E
-:10E0A0000E781B023343244E3381032A2DD31B2FBA
-:10E0B00027D011236E46337001261F4BF6033043E1
-:10E0C000588048780B780102194368468180D21E37
-:10E0D000C280E01C029020788006800E1B280AD0A7
-:10E0E0001D2808D00021032003F024FE1248418897
-:10E0F000C90BC903418068461C99F8F7B5F9284651
-:10E1000053E610206B461870DBE70725F7E7082574
-:10E11000F5E700B50022D243074997B04A800328AB
-:10E1200007D1032268460270097901710021F8F7CE
-:10E130009BF917B000BD0000DC190020FFB589B0C5
-:10E140000020019009981027FE4C1E46154608280D
-:10E1500006D0E06901F05EF8002809D03770BEE013
-:10E16000288809213843108013980227017016E08F
-:10E17000E169012088710521E269C9029180E169A4
-:10E180008872E169F0480881E16900208873288875
-:10E190002021084328801121139804270170139827
-:10E1A0000225801C0290307806900A203070E548E5
-:10E1B0001830049001F022FA0020059020462C30FF
-:10E1C00003906DE00998102808D1022D06D001991E
-:10E1D0000298A28D401A8270110AC170E08D0A99CE
-:10E1E000884202D901F0CDF806E0884204D10698B1
-:10E1F000002801D030701CE00298E18D0170090AFE
-:10E20000417012980088401BC01B82B2FF20C01BC7
-:10E21000904200D2024607A8009002980021C3193C
-:10E22000E08D01F056FA3070002805D0C0B2832886
-:10E2300058D0E08D20833EE00598002804D0206C63
-:10E2400000790A282CD336E06846808BC119C9B200
-:10E250000191022D0DD01399019A4978914202D172
-:10E26000228F824208D00191206C0178032908D0C6
-:10E2700023E0084613994870206C0178042906D0E1
-:10E2800007E000790A2818D20120059008E0E18D06
-:10E29000818002990198081802900198281885B287
-:10E2A0000399049801F0ADF9002804D11298008870
-:10E2B000401BB84286DA022D0DD00998102806D1ED
-:10E2C00002990198A28D081A8270110AC1701298E1
-:10E2D000058000203070206C0078032802D00020D8
-:10E2E0000DB0F0BD0220FBE7F8B5964A0026126D8E
-:10E2F000002A2ED0401F934D84B24035E88A234631
-:10E300000833AF8AC318BB4222D88B784F781B02E0
-:10E3100010183B4303701B0A43700B79CF781A0225
-:10E320003A438270120AC2700471220A4271224674
-:10E33000491D801D06F0B0FCE88AA41D001980B2BA
-:10E340008049E882096D002208180270427000E0DE
-:10E3500009263046F8BD30B57A4B028840339B8A97
-:10E36000934213D9774B1C6DA3185C781D78240257
-:10E370002C430BD05C791D7924022C436404640C7B
-:10E38000A41D1219028000200B6030BD822030BD18
-:10E39000F0B585B0074600266846068155E001982D
-:10E3A000417802780D021543417902790802104341
-:10E3B00000044AD43D8003A80023012200905202A9
-:10E3C0001946284601F085F9040044D168460189C0
-:10E3D0000182019841790279090211434378027858
-:10E3E0001C021443AC421CD10A041AD44A04012171
-:10E3F000520C89030A430096C178807809020143D0
-:10E400000023204600F0C1FF040010D10199487993
-:10E410000A79000210430122D20310430871000A56
-:10E42000487101A904A8FFF796FF0400D1D0019913
-:10E4300000964878097800020843694600238A89D3
-:10E44000194600F0A2FF822C05D101A902A8FFF70E
-:10E4500082FF0400A3D06846068109E0019948794B
-:10E460000A79000210434004400C0871000A487108
-:10E4700001A902A8FFF76FFF0028EFD0822C02D07D
-:10E48000204605B0F0BD0020FBE7F7B584B0144688
-:10E490000646002700F071FF2A480025006D00287D
-:10E4A0002FD0059801282CD12046FFF771FF0700D7
-:10E4B00027D1002E29D06846058118E001994878B7
-:10E4C0000978000208432080019B0095587919794A
-:10E4D0000202D8780A4301029F78587839431F789E
-:10E4E00000029B1D384300F050FF002805D101A910
-:10E4F00002A8FFF730FF0028E0D0822800D10020DA
-:10E500000746002E01D00F48056500F03AFF384657
-:10E5100007B0F0BDF0B597B00021042003F00AFC6D
-:10E52000084F00243D467C8040356C73AC73287BDB
-:10E53000B96CC00008380E18B08800280DD0012032
-:10E54000694603E0F01900200128000008703068D7
-:10E55000019000216846F9F78EFAB4803C65AC82E0
-:10E56000EC8217B0F0BDFE4B986418464030017342
-:10E570001A803838D861CDE7F949002049880A0760
-:10E5800000D501200A06120F01D002221043CA054D
-:10E5900001D5042210438A0501D5102210434905F4
-:10E5A00001D520210843EE494031497B002901D0A3
-:10E5B000082108437047FFB5A7B004002898164605
-:10E5C0001B9022D00178E6484D06428822920246EE
-:10E5D00040320092002D14DB8A06920E1E2A0ED0C5
-:10E5E000229A5205520E10D13288172A0DD3009A62
-:10E5F000927B002A09D1DB4D229AAA4205D0CA0992
-:10E6000006D08A06920E122A02D003202BB0F0BD4B
-:10E61000D348826C0098007B2590C0000838101801
-:10E620001F9048060CD40098407B002808D0009921
-:10E6300088731F99289808601F9884800220E5E756
-:10E64000002718A90F7069460F72C54902AA0A640B
-:10E65000309A4A6410A90F850F861B981D460078D2
-:10E6600020908106BE4B601F24901A462C322192C6
-:10E670002898DA691833890E1E93401C0B0006F0A7
-:10E6800099FD1FFDFD11FD1AFD90FDFCFDFBFDFA3E
-:10E69000FDF9FDFCFDF8FDFDFDF7FDF6FDFDFDFDC1
-:10E6A000FDF5FD00032C7BD10320287017226A7032
-:10E6B0000022AA70E0E2052CF5D141780278090227
-:10E6C0001143A74B10AA19831185C27880781202D2
-:10E6D00002435A8300297DD091427BD800211846FD
-:10E6E00081720181491E01841E9800F087FF052078
-:10E6F0002870A81C1D900220009021991E9800F0FF
-:10E7000080FF002803D047E018A90870F0E2944881
-:10E710002030807C012803D002206870102002E0A5
-:10E7200001206870022022908D4830302390002212
-:10E7300020A9239802F0F5FD00282AD120A800780E
-:10E740002299814225D132880099801C511A814238
-:10E750001FDB83481D99C08D0870000A48701D9802
-:10E7600020A9801C1D9000981D9A801C0090239861
-:10E7700002F0D7FD20A909781D9840181D90009837
-:10E78000401880B2009021991E9800F03AFF0028AE
-:10E79000CDD0009802288DD10A2018A908706CE20B
-:10E7A0006DE0072C6BD341780378090219436C4B59
-:10E7B0008446198310AB1985C37880781B021843EF
-:10E7C000674B0029588305D0814203D801211846A0
-:10E7D000817200E0A4E061464B7909791B020B438A
-:10E7E000038100218173104600F014FD00280FD131
-:10E7F0005B480121C26991710522C369D2029A80E6
-:10E80000C2699172C26958491181C069002181733E
-:10E810005349E01F08841B98C01D48621E9800F0F1
-:10E82000EDFE07202870681C009001201D904C48C8
-:10E830000021C18530E01D98012815D04848C169E4
-:10E84000897901292FD000981038C17B807B09027B
-:10E85000014300980170090A41700098801C0090E3
-:10E860001D98801C80B21D903D4809E013E2BEE176
-:10E870007AE1D8E00DE2A0E080E03BE01EE2B6E005
-:10E88000C18D00980170090A41700098801C0090A9
-:10E890001D98801C80B21D9021991E9800F0B1FE39
-:10E8A000002802D006E0818DD3E731881D98081A30
-:10E8B0000428C0DA1D98012800D16DE72848C169F5
-:10E8C0008979012903D0828D26498A4205D1818D1B
-:10E8D00000980170090A417009E000981038C17B66
-:10E8E000827B0802009910430870000A48701D9846
-:10E8F000801CC1E1072C01D0152C78D14178037818
-:10E9000009021943164B198310AB1985C378807817
-:10E910001B02034312480029438301D0994201D9C5
-:10E920000120F1E60E4801218172002101818173ED
-:10E93000052C07D024981B99C0B2491D02F0CBFCCE
-:10E940000028BAD100200649C04308841B980096CD
-:10E950000195007818AB8006800E1CAA002105E006
-:10E96000F0190020FFFF000001280000FFF7E6FB80
-:10E970000746FE4810A9008B08857EE1032CBCD118
-:10E98000402210A90A86417802780802F74910430C
-:10E99000088310A9088520A9009131886B1C491EA5
-:10E9A0008AB2002100F095FE18A90870002830D125
-:10E9B0000B20287020A8008833E0052C9DD18021F1
-:10E9C00010AB1986014640780B780202E7481A43DB
-:10E9D0000283CB7889781B021943E44B10461984D3
-:10E9E00010AB1A85E24A914202D307208CE697E0E9
-:10E9F0003F23DE4A9B021943118421AA00923288E8
-:10EA00006B1C521E92B200F064FE18A90870002818
-:10EA100003D08328B1D102272FE10D20287020A830
-:10EA20008088401C28E120990C22C9095143C91C47
-:10EA30001E91A14204D92098400671D500201BE107
-:10EA4000417800780902014310A801851B980078DD
-:10EA500042062898C01C1D90002A62DA05206A46EA
-:10EA600010721B980078C00944D0082268460272D0
-:10EA70008181A01A87B268468782289806901E98DE
-:10EA8000201A81B26846C1811D980490401806F092
-:10EA900064F9079006982599C0190890491E08A89E
-:10EAA000017102A83099F8F7E6FF07460021684691
-:10EAB0000172002F1BD0022F18D1009808A9007BEB
-:10EAC0000979401E884210DDA848289A836CC90045
-:10EAD0005A50816C08A80079C000001D0C520098A3
-:10EAE0000099407B401C4873C7E00527EAE00620F8
-:10EAF00069460872002000901E980021201A20907C
-:10EB000082B21B9B10A8DB1C008D00F03EFC01466E
-:10EB100018A80170002268460272832903D003E01E
-:10EB200093E00720E4E702271B98007840060ED503
-:10EB30008E484188C90506D510AA018B128D9142D5
-:10EB400001D100214162002018A9087094E0FF2142
-:10EB5000013110A80186018D844801832099018428
-:10EB60001D994162132085E0052C6ED3417803780E
-:10EB70000A021A4310A90A859446092269460A72B4
-:10EB80000021009101222499D20311438AB2C17855
-:10EB9000807809021B9B01435B1D604600F0F5FB7A
-:10EBA00018A90870002269460A720122520210A9AF
-:10EBB0000A86832802D0002805D099E06B48098D89
-:10EBC000018302277EE06948006D002807D02046B7
-:10EBD0001B99FFF789FB18A9087000284DD12B4617
-:10EBE000324620461B9900F024FB074645E01B985F
-:10EBF000022C4078009064D1002801D0012860D117
-:10EC00000A2168460172009901731AAA002000992E
-:10EC1000FFF73BFC0146684641730021817302A85F
-:10EC20003099F8F728FF0746002168460172012154
-:10EC3000890210A80186022F08D04C48006C807908
-:10EC4000002807D018A9087020E04BE04749009839
-:10EC5000088337E0002F03D0812018A9087031E025
-:10EC60001AAA01200099FFF710FC18A908700028C3
-:10EC700003D119202870012030806846007A0028CE
-:10EC800004D002A83099F8F7F6FE0746002F2BD0E3
-:10EC900018E0062038E522993448090711D5012CDF
-:10ECA0000FD10B2269460A72C08888810021042096
-:10ECB00003F040F8082010A90886BFE62098400617
-:10ECC00010D50327294810AA4188128E114341808C
-:10ECD0005005400E04D01F99289808601F98848022
-:10ECE000384693E404200FE518A8007800280ED0D9
-:10ECF000012028701B980078687010A8008DA870FB
-:10ED0000000AE87018A8007828710520308017489C
-:10ED100010AA4188128E91434180E1E7FFB5064673
-:10ED20009FB000201B903178012088401149124A81
-:10ED3000084010A908860D494988914203D000284F
-:10ED400004D0080702D5012023B0F0BD219D002783
-:10ED50002F7020983C46018810A8018418A80771DC
-:10ED600000F00BFB6846077202A907E0F0190020CB
-:10ED70000102000009F80000FFFF0000FA480164EA
-:10ED800001464031826C1A91097BC9000839571835
-:10ED900022994164307801282AD0022809D003281A
-:10EDA00079D12878800980011D302870EE48B1881B
-:10EDB000C1803078022804D12878800980011B3076
-:10EDC000287001A8009010A8008CEB1CC01E82B215
-:10EDD000B088002100F07DFC0028E1D1B188697085
-:10EDE000090AA9706946888810A9C01C08842DE109
-:10EDF000717918A801713079012802D00228CFD189
-:10EE0000E6E0D9487F2340881B010246184010AB3A
-:10EE10001886802840D006DC102810D020280ED07C
-:10EE200040280AD120E0FF38013859D0FF38013896
-:10EE30006AD0FF38FF3802387ED0052491E0D00632
-:10EE400001D5082000E010201B90042069460872BC
-:10EE50000020888118A800900195318919AB1CAA5F
-:10EE60001B98FFF76BF977E0BF4B3289188B824212
-:10EE70004FD10A221B92002973D101A9009110A938
-:10EE8000098C6B1C491E8AB2002100F022FC18A9D3
-:10EE900008710B2017E0F6E0B34B3289188B8242E1
-:10EEA00037D10C221B9200295BD101A9009110A936
-:10EEB000098C491E8AB21946098C6B1C00F009FCAA
-:10EEC00018A908710D2028706946888810A9401C6F
-:10EED0000884042069460872A348008B888140E0BA
-:10EEE000A14A3389108B834213D112231B9300292B
-:10EEF00037D1536A002B05D00091128C00F045FAEF
-:10EF000018A9087113205EE097483289038B9A4252
-:10EF100001D00424E7E016221B92026D002A09D1D9
-:10EF2000F268002A06D002651A98328A82821A9AFA
-:10EF30000020D082002900E02FE012D1B888396883
-:10EF4000FFF7D2F918A9087100280AD1B8882B4612
-:10EF500018AA396800F06DF90446022818D0042C6C
-:10EF600016D0B88800280FD06846007A002804D050
-:10EF700002A82299F8F77FFD04460120694608722D
-:10EF8000386803900020B880002C5FD0052C7BD01F
-:10EF90006846007A032873D0A5E018201B9000294A
-:10EFA00005D071483189018300210165D9E76E4898
-:10EFB0000246017E18320120FFF767FA18A908718E
-:10EFC0000028CED119202870012010A90884C8E794
-:10EFD0001A98407B002856D0307AC0001358001D84
-:10EFE0000193105A1D9000291AD100F0CAF9062089
-:10EFF00069460872002000901D980F3882B201986F
-:10F000008178437808021843019B0021DB1C00F043
-:10F01000BCF918A90871002269460A72832830D009
-:10F02000002118A8017110A801840121684601720D
-:10F03000019803901A981A99407B401E48731A98B9
-:10F04000807B002802D01A99401E887310A8008E79
-:10F050007F21090102468A431DD0434800220088CF
-:10F0600011468300042002F0C0FD3F483178017151
-:10F0700010A94088098E08433B4948800FE003E00F
-:10F080002BE002242FE00524374810AA4188128E75
-:10F090009143418027E034494A8882434A80684648
-:10F0A000007A002805D03048416C02A8F8F7E3FC4C
-:10F0B000044618A80079002815D01B986870012014
-:10F0C00028702948008BA870000AE87018A80079F9
-:10F0D0002871052110A8018405E02348416C02A88D
-:10F0E000F8F7C9FC044600F04CF91F484088400579
-:10F0F000400E20D11A98807B00281CD1B8880028A7
-:10F1000019D0209910AA0988118422990091396890
-:10F1100018AA219BFFF74FFA044602280BD00120C2
-:10F12000694608723868039002A82299F8F7A3FC90
-:10F1300004460020B88010A8018C20980180204649
-:10F1400002E600B50022D243074997B04A8004285E
-:10F1500007D1022268460270097901710021F8F78F
-:10F160008AFC17B000BD0000F019002010B5394C22
-:10F1700003780022216C012B02D0022B44D126E01F
-:10F180000B78002B01D0042B03D10A71226C0321D0
-:10F190001170216C83880A79D200921D8B52216CE8
-:10F1A0000A79D20008328918C2880A80216C038942
-:10F1B0000A79D2000A328B524289206C0179C90047
-:10F1C0000C314252216C0879401C087120E00A740D
-:10F1D000226C81889180216CC288CA80226C01894E
-:10F1E0001181226C41895181216CC068C860616CB9
-:10F1F000206CF8F740FC0146022807D0206C007C08
-:10F20000002802D1002903D0812010BD832010BD29
-:10F21000002010BD8178012909D100880521C9028B
-:10F22000884202D0491C884201D100207047052045
-:10F23000704710B51488844201D2052010BD1724F0
-:10F240001C701080421E491C581C05F025FD002032
-:10F2500010BD0000F019002010B58B78002B11D0E4
-:10F2600082789A4207D10B88002B0BD003E0091D4E
-:10F270008B78002B08D08B789A42F8D103880C88C1
-:10F28000A342F4D1002010BD812010BD10B500298B
-:10F2900002D001290DD102E00088000501E00088BC
-:10F2A0008004800F07D001281CD0022809D0032831
-:10F2B00010D0812010BD002901D0032010BD0220F4
-:10F2C00010BDF5F7EEFD03280CD004280AD0002865
-:10F2D00006D009E0F5F7E5FD042803D0022803D0A5
-:10F2E000052010BD002010BD0F2010BDF3B5C81CB7
-:10F2F00080080E46800081B0B04201D08620FEBD5D
-:10F30000FE4C354626600198A08000202081E080D8
-:10F3100014E0B807A978800D0843F94905F036FDD7
-:10F32000E088401CE080B80607D42089401880B2ED
-:10F3300020810199081A8019A8600C352F88780758
-:10F34000E7D40020A072FEBDEC480C22C1880089E1
-:10F350005143081880B2704770B51346E74A451804
-:10F360009488AC4201D2842070BD126810180A46FD
-:10F37000194605F091FC002070BDE049012088721B
-:10F380007047DE49002088727047FFB589B0970446
-:10F390000E460546BF0C029200F034FA040021D05C
-:10F3A000002069460873D548807A012812D00121CF
-:10F3B0002046FFF76BFF002815D12078400609D5BD
-:10F3C0000221684601730582218841828682C782B4
-:10F3D0000C9806900298000407D500273E460125A8
-:10F3E00001970CE001200DB0F0BD2078A1788007D6
-:10F3F000800D0843C249019005F0C8FC0D460298F3
-:10F4000040040AD50198A84207D12088E1788005F8
-:10F41000800F00020843B04201D3AE4201D9072059
-:10F42000E1E7B81980B20290A84201D90D20DAE7CD
-:10F430006846007B002804D003A8F8F718FB0028D2
-:10F44000D1D10198A8420BD1208803210902884319
-:10F4500002998905890F0902084320800298E0700B
-:10F460001298002800D007800C9800280CD0207833
-:10F47000000609D4A0683A4680190C9905F00CFCE6
-:10F4800020881021884320800020ACE7FFB59B4DE9
-:10F4900081B00E46E8882F680C21009048433C1844
-:10F4A0009749039805F072FC0A462889E11B8446B7
-:10F4B0000C314018318880B28B0601D5002300E062
-:10F4C00013461818AB8880B2834202D8842005B056
-:10F4D000F0BD0098894D401C80B2E88021800D99D4
-:10F4E000002900D00C600399A170E2702188039D6F
-:10F4F0008908AD058900AD0F294303252D02A943D5
-:10F500009505AD0F2D0229430425294321800C992F
-:10F51000002900D0088001998978A1710199098892
-:10F52000A1803178890601D50B9905E073496244C1
-:10F5300092B20A81991AC919A16000212173327807
-:10F54000920601D50020C2E700910B9B0A9A04990C
-:10F55000FFF71BFFBBE7FEB5044600F053F90700B9
-:10F5600008D0664D641EE8880190A6B2286834462B
-:10F57000009015E00120FEBD0C2000996043095A5F
-:10F580008A060BD489078A0D0099801C085C5C49A7
-:10F59000104305F0FBFB2889401A2881641CA4B2A3
-:10F5A0000198A042E8D8EE8000203870FEBD002807
-:10F5B00003D0401E0880002070470120704710B51E
-:10F5C0004E490288CB889A4201D3822010BD0B6835
-:10F5D0000C21514359180B88CC789B059B0F1B02BB
-:10F5E000234341608C7904738C884481C38189688A
-:10F5F000521C016102800281002010BD01210182A4
-:10F600007047FEB505460020C043088068680F4675
-:10F6100081786846817068680188684601800021A9
-:10F620008171288A2C88A04200D304462C8234E0C1
-:10F63000288A401C2882301D6968FFF70DFE0028CB
-:10F6400029D139882F48814201D1601E38806888CD
-:10F65000A04227D33088F1788005800F000208434C
-:10F6600002906946301DFFF7F7FD002813D1298964
-:10F67000244881421AD000213046FFF707FE0028B7
-:10F6800009D12A890298824205D1E968B06805F05B
-:10F69000D6FA00280AD0641CA4B2204600F0B2F8C2
-:10F6A0000600C5D1641E2C828220FEBD7C80B0790C
-:10F6B000B871B088B8803088388130788007810D83
-:10F6C000B078014379810298B881B0683861002030
-:10F6D000FEBDFFB585B014460F46059800F092F8C0
-:10F6E000050037D00548BE05807AB60D01281CD02C
-:10F6F00000212846FFF7CAFD002805E0481A00202F
-:10F7000001020000FFFF000022D1287840060CD53E
-:10F71000012168460170059981802988C180068190
-:10F720004481F8F7A4F9002812D12888AA78810723
-:10F73000890D11438005800FEA7800021043BE4214
-:10F740000AD0374A914207D3611E814204DD0B2063
-:10F7500009B0F0BD0120FBE7864201D90720F7E799
-:10F76000801B82B2A24200D922460E98002800D007
-:10F7700002800898002804D0A8688119089805F02C
-:10F780008BFA0020E4E770B514460D4600F03AF815
-:10F7900000280DD001882980002C0DD001788078B8
-:10F7A0008907890D01431E48814203D2012002E0EE
-:10F7B000012070BD00202070002070BD70B516467D
-:10F7C0000D4600F01FF804000DD02D882580FF2E77
-:10F7D00016D0A807A178800D0843114905F0D6FA84
-:10F7E000002E06D101E0012070BDFF31FF31033151
-:10F7F00089B2A170A80880008905890F084320807C
-:10F80000002070BD0749CA88824207D3002805D06E
-:10F810000C22096850430C380818704700207047C4
-:10F8200001020000481A0020F0B585B00E460546DA
-:10F830000020694608707078FE49C00003900C589B
-:10F84000FD4F002D0ED0022D73D0002C72D02078E9
-:10F85000801E030005F0AEFC09837F7F7F83797FE4
-:10F8600077727F00002C03D1F4A16B2005F0B1FB6F
-:10F870002078801E030005F09DFC09065E5E5E197F
-:10F88000365E50545E003078062803D0EBA1762017
-:10F8900005F09FFBB8687168806C032205F0FCF9E5
-:10F8A000012069460870002835D1CEE730780C2851
-:10F8B00003D0E2A1812005F08CFBE06800780028ED
-:10F8C00006D0B8687168806B102205F0E5F928E071
-:10F8D000B8681021006B05F03CFAB868816A006BCB
-:10F8E0000A787168F1E730780D2803D0D3A194200D
-:10F8F00005F06FFB04206946087071684878097844
-:10F9000000020843B9684A6A517812780902114323
-:10F91000484069468880084608E0C8A1AF2005F045
-:10F9200058FB6846007800288FD06846F5F7BEFA85
-:10F930008BE727E01CE0C1A1B420F0E7B86861695B
-:10F94000006CFEF708F8A16900E0E168B868006C97
-:10F95000FEF701F803E0B9A1E32005F03AFBB8682F
-:10F960002146006CFDF7F7FFB24A03990020505082
-:10F97000022D07D0002D05D0012D03D0AFA1EF201F
-:10F9800005F027FB05B0F0BD10B501780124012971
-:10F9900002D0022910D112E04268A74800218260FB
-:10F9A0000170A4486C38C166016741678167D289DC
-:10F9B00002214C3001F0E1F90024204610BDFF2067
-:10F9C0009EA1163005F005FBF7E7F0B505469EA1B0
-:10F9D00003C997B014911390002008A908759549A0
-:10F9E0002A781031944C0491217805910126914F89
-:10F9F000A168130005F0DEFB0CEF07309AF0EDEC88
-:10FA0000EBEAE9E9E8EF20700124FF264F360546CE
-:10FA100010A80570457001F0C1F90746012803D010
-:10FA200086A1304605F0D5FA10A93846FFF7FCFE4E
-:10FA30002046641EE4B20028EAD10A206946087014
-:10FA40006846029501F088FA002803D0FF207BA1C8
-:10FA5000583068E0002646E3C86A0078C0072FD017
-:10FA6000012069460870684601F076FA002804D043
-:10FA7000FF2072A16B3005F0ACFAA068006CFDF7B6
-:10FA800061FF050004D1FF206CA16E3005F0A1FAE2
-:10FA900008984078C0003D5006202870A068016892
-:10FAA00069600069A8606448C01CE860284601F0ED
-:10FAB00053FA022804D0FF2060A1783005F089FABB
-:10FAC000A068C06A00784007C4D501206946087064
-:10FAD000684601F041FA002804D0FF2057A1803089
-:10FAE00005F077FAA068006CFDF72CFF050004D143
-:10FAF000FF2052A1833005F06CFA08984078C000CE
-:10FB00003D5006202870A068016869600069A860FF
-:10FB10004948401DE860284601F01EFA022899D0A5
-:10FB2000FF2046A18D3005F054FA93E7A96800291B
-:10FB300033D0694608712979012932D0022904D0CD
-:10FB4000FF203EA1A73005F044FA3A4810221030B9
-:10FB5000A96805F0A1F837481030364920314860CF
-:10FB60002078C1062CD5EF2108402070032069467B
-:10FB70000870304810300290684601F00FF90446D2
-:10FB8000022808D0002C06D0012C04D0FF202BA185
-:10FB9000B83005F01EFA69466FE101216A4611711D
-:10FBA000DBE7244A04996C3AD06748608860C860F3
-:10FBB0000621A86803F0FCFE1E4910310860CAE760
-:10FBC00020210843207045E7A1E15AE119E1E6E070
-:10FBD00086E056E000E081E2886C407980090128E7
-:10FBE00004D0FF2015A1CC3005F0F3F9A068017A0C
-:10FBF000002906D1416B406801F01FFAA16801207D
-:10FC00000872012069460870684601F0A5F90028CD
-:10FC100004D0FF2009A1D73005F0DBF9A068006C03
-:10FC2000FDF790FE050004D1FF2004A1DA3005F0B5
-:10FC3000D0F90DE0C01A0020B40000207372635C9C
-:10FC4000736D2E630000000004411A8800A4800038
-:10FC500008984078C0003D5002202870A068416B91
-:10FC60006960806CC01CA860284601F075F904002A
-:10FC700004D0FF20FD49E23005F0ABF929462831D8
-:10FC8000FBE0172268460272012202708078820827
-:10FC9000287992008007800F024368468270FB201B
-:10FCA000024028794007C00F8000024368468270F6
-:10FCB000EA8882804A6C02A901F090F9002804D0F9
-:10FCC000FF20EA49F73005F084F9052108A80175FD
-:10FCD0006846017A0187A0680026406C0F9006E212
-:10FCE000012069460870684601F036F9002803D003
-:10FCF000DE49DF4805F06DF9A068006CFDF722FED3
-:10FD0000060004D18320D949800005F062F9A0687B
-:10FD1000006CFDF717FE1290002804D1D448D34997
-:10FD2000801D05F056F9D3488068006CFDF70AFE87
-:10FD3000040004D1CE48CD49093005F04AF90898AD
-:10FD40004078C0003E500A203070287A30716868D0
-:10FD5000C84DB060A868406C3061172030731298AD
-:10FD6000B4617061304601F0F7F80446022808D00B
-:10FD7000002C06D0012C04D01120BC49400105F014
-:10FD800028F92046316AFFF74FFD28780521014008
-:10FD9000042900D05EE6FB21084028702AE005987F
-:10FDA00040084000207082071CD5FD2210402070C2
-:10FDB0000F206A46107017201071486C0290684638
-:10FDC00000F0ECFF0546022808D0002D06D0012DDA
-:10FDD00004D0A748A5493A3005F0FBF86946284603
-:10FDE000FFF722FD2078052101400429D2D1FB2113
-:10FDF00008402070072008A908759E48807808767A
-:10FE000028E6012069460870684601F0A5F8002838
-:10FE100004D097489549543005F0DBF8A068006C91
-:10FE2000FDF790FD060004D113209049400105F034
-:10FE3000D0F890488068006CFDF784FD040004D180
-:10FE40008B488A495A3005F0C4F808984078C000B9
-:10FE50003E5007203070874880684068706068684E
-:10FE6000F460B060304601F077F8040004D08048B8
-:10FE70007E49653005F0ADF8316A2046FFF7D4FCC5
-:10FE8000E8E5012069460870684601F065F8002839
-:10FE900004D0774875497A3005F09BF80898407887
-:10FEA0001190A068006CFDF74DFD060004D15120B3
-:10FEB0006E49C00005F08DF8A068006CFDF742FDAA
-:10FEC000040004D16A486949823005F082F811982B
-:10FED000C0003E50C019296941600920307068682F
-:10FEE0007060A868B060A889B08163483061103044
-:10FEF000B4617061304601F02FF8022804D05C48EC
-:10FF00005A49903005F065F811982875A2E55A4ACB
-:10FF100000208C32107002206B46187001922879F4
-:10FF2000002801D0107098E0524803230C3040683C
-:10FF3000FB2703708378504A9B089B003B408370EB
-:10FF40004B7A00271B07DB0F43708C3257600B7B0B
-:10FF5000C370CB7A1372537A0C7D5B08E4075B00A5
-:10FF6000E40F23430C461534D460FD242340CC7E9B
-:10FF7000E407A40F234353720B461C3313614771EC
-:10FF800007718B7A3B4A9C070C32A40F1268012C34
-:10FF900004D19478A407A40F012C1DD09B089B00CA
-:10FFA0008B7293785B0702D48B7A5B0728D54B7AE8
-:10FFB00013AF5B075B0FDC005B00E3181478640091
-:10FFC0001B19DBB2DC083C5D5F077F0F0623DB1BE0
-:10FFD000DC40A3079B0F14E04C7A53796406640F4E
-:10FFE00023404371147906273C400471E4001C430C
-:10FFF000204B5C7083789B089B005B1C8370D0E770
-:020000040001F9
-:1000000000238478FB273C408F7A7F07FF0FBF00D7
-:100010003C4384704C7A6407640F04705078012864
-:1000200007D1487A000704D5032008A908750220E3
-:100030002DE0022B27D0012B2BD00F4B0020049A50
-:10004000D86750609060D06018467C30024610320D
-:100050005060887AFB2210408872684600F09EFE4D
-:10006000040035D0012C34D0004907E03CFC0000EE
-:1000700009020000B4000020541A00206520C000CE
-:1000800004F0A7FF25E0032008A9087501200876E1
-:10009000E3E77E4C0D21E01C04F05BFE20461030AF
-:1000A0004460022008A908750E94A868002807D0AB
-:1000B0000068206005997648202211430170CCE742
-:1000C00005980007C9D57349734804F082FFC4E757
-:1000D000002669462046FFF7A7FB04E06E486D49FD
-:1000E000203004F076FF08A8007D002802D00DA87B
-:1000F000F4F7DCFE304617B0F0BDF0B597B00C4613
-:10010000054600206946087061482F785F4E0178E7
-:10011000583E82683B0005F04DF80BAA8407263B49
-:100120004C6B79798F9CAA002B20694608730CA927
-:1001300003A8FDF73DFC002804D05748554941303D
-:1001400004F047FF55490D9804F020FE4F48016028
-:100150004F4869680C300160AA684260019108202C
-:10016000694608708CE08A0610D5DF2211400170C4
-:1001700003202070454810304168A1604068002885
-:1001800002D00020207177E00120FBE7102256E02A
-:100190002B20694608733D4903A85C39FDF708FC2C
-:1001A000002804D03C483B496A3004F012FF042088
-:1001B0001BE02A206946087303A8102202306968F0
-:1001C00004F06AFD07A810220230A96804F064FD5B
-:1001D0002E4903A85C39FDF7EBFB002804D0392039
-:1001E0002C49000104F0F5FE05202070666043E014
-:1001F0002A79002A02D001221143017005206946A4
-:10020000087028798880A868029039E0D06A402375
-:10021000018819430180D06B6968102204F03CFD0D
-:100220002AE0FB2211400170062069460870A96887
-:1002300068680291019023E0CB0703D002221143AA
-:10024000017058E70F20207017202071506CA060BB
-:1002500012E0937A9B0706D0D26A44781388FF3461
-:1002600001342343138004221143017004E00A483F
-:100270000849BD3004F0ADFE684600780028E0D0A3
-:100280006846F4F713FE36E701207047D01A0020C5
-:10029000B40000203CFC00001503000040420F00A9
-:1002A00070B504780D460646230004F083FF0B1C4E
-:1002B000181C1C1C1C07181C1C181C0000210520E5
-:1002C00001F038FDB068007805280CD0FA4800220B
-:1002D000008811468300052001F087FC03E000211F
-:1002E000052001F027FD002D0ED0002028702946A2
-:1002F0003046FFF702FFF1482978005D884201D1BE
-:10030000032070BD022070BD00213046FFF7F5FECE
-:10031000002070BD30B5E8494B68497A0A011146A2
-:100320000C315C5C032C0CD0044600252034257174
-:1003300025725C5CA500AA18641C5C5498500320CC
-:1003400030BD062030BDF0B50446264620360D46A9
-:100350003279012008218FB0002A0CD0012A21D047
-:10036000022A2BD0032A04D12A78052A01D1297028
-:1003700000200FB0F0BD01203071606800280AD065
-:10038000A069017061684160216981606169C16033
-:10039000FFF7C0FFEDE707202870206968606069FB
-:1003A000A86009E029780729E3D1022030710520EF
-:1003B0002870C248203868600320DAE729780529C8
-:1003C000D7D1A08910280AD9103880B2A081A1689D
-:1003D0001023091803A86A6800F054FE2DE01028C5
-:1003E00004D0C1B20BAA1020A76809E0102322692B
-:1003F000A16817E0491EC9B2401EC0B27B5C13540D
-:100400000029F7D100280AD0401EC0B28021115423
-:10041000002102E0401EC0B211540028FAD16269E6
-:1004200010230BA907A800F02DFE102307A903A88D
-:100430006A6800F027FE032030716068019003A80D
-:10044000029005206946087029466846FFF728FF94
-:100450008FE7F0B5044626460D4620363179012057
-:100460008DB000290BD0012938D0022905D1297877
-:10047000052902D10920287000200DB0F0BD217D92
-:100480006846CA07D20F02738807C10F6846017415
-:10049000012203A905A800F0EDFD04A9012205AF82
-:1004A000481D00F0E7FD0722B81CE16800F0E2FDFE
-:1004B00007A807220130216900F0DCFD6068019087
-:1004C00009A80290102305AAA16800F0DBFD012015
-:1004D0003071052168460170294621E029780529F7
-:1004E000CBD1062203A8E16900F0C4FD04A80622CE
-:1004F0000230A16900F0BEFD042106A800F0B2FDA3
-:100500006068019007A80290102303AA696800F0B0
-:10051000B9FD0220307105206946087029466846F9
-:10052000FFF7BEFEA9E7F0B5074685B00D460020EF
-:10053000694608703E466248203632798179133820
-:1005400001240078130004F035FE180DFEFDFCFBBD
-:10055000FAF9F8F7F6F5F4F3F2F1F0EFEEEDECEB73
-:10056000EAE9E8E7B968039100291BD0012269464E
-:100570000A7003220A710A224A7139690291397993
-:1005800000297DD0039A1278002A7AD00C2A78D2DA
-:10059000130004F00FFE0BEF09EF354D8498B0F116
-:1005A000EDECEF000020C8E30021062001F0C2FBC3
-:1005B0003879072866D1424C133C2078022802D0B3
-:1005C00000287FD101E00020207003980079C11F2E
-:1005D0000A2901D30A2598E1607039480722C01F13
-:1005E000039900F047FD0120307120700220694618
-:1005F00008703348801F01903869401C029037E230
-:1006000011293DD12E4C133C0228DAD16068617863
-:10061000007A884201D9062577E1039926481022FD
-:10062000491C303800F026FD03202070022045E1EF
-:100630001129E6D1224C133C0428C2D10520207098
-:1006400003991D481022491C203800F013FD062094
-:100650003071786903210170626851684160164900
-:100660002039816021460C31C160C91D0161017DC5
-:10067000537A49084900DB07DB0F1943017502E093
-:1006800070E354E384E1D3688361FD231940537A16
-:100690009B07DB0F5B0019430175116976E10229A5
-:1006A000AFD1002867D005206946087103984078CB
-:1006B00048713869029051E3241B00203452010034
-:1006C000DB00002082E011299BD1F74C06287DD168
-:1006D000A0680399806B1022491C00F0CBFC062116
-:1006E0006846017038690290002168460171FFF781
-:1006F000D7FD072057E00B299BD1EB4C07287ED173
-:10070000A0680399006B0222491C00F0B3FCA068AA
-:100710000822406B039917E00EE116E3FDE2DDE2EB
-:10072000C7E2BCE29EE267E248E241E21FE2F5E195
-:10073000DFE1C8E1BEE1B1E1A5E16AE147E128E11D
-:10074000DAE0BEE0AFE075E0C91C00F093FC0621E2
-:100750006846017038690290002168460171FFF710
-:100760009FFD204613304179490849003EE041E0B1
-:100770001BE001E05CE0EFE2112991D1CA4C0828AE
-:100780003DD1A0680399C06B1022491C00F072FC97
-:10079000062168460170386902900021684601719F
-:1007A000FFF77EFD09202070C9E208298CD1BE49DF
-:1007B000092824D1039842788868016C0A7003994B
-:1007C000406C0622891C00F055FC00E017E0062171
-:1007D0006846017038690290002168460171FFF790
-:1007E0005FFDB14813304179FD221FE041715EE2A7
-:1007F0003071F2E11129C0D1AB490A2801D0082596
-:1008000083E088680399806C1022491C00F032FC58
-:10081000062168460170386902900021684601711E
-:10082000FFF73EFDA04813304179FB221140DDE780
-:1008300007256AE0297802297ED19B490128FBD14E
-:100840006A684A6015780846002D5CD106216A4620
-:1008500011703969029107211171029902240C70FB
-:10086000CA785207520FCA704B795B075B0F4B7106
-:100870008B795B075B0F8B71D20701D18A714A714B
-:1008800005460A794078824200D26A70864807227B
-:10089000133000F0EFFB00202C70307101466846E9
-:1008A000FFF7FEFC4BE229780429C5D103286FD15C
-:1008B00008227E48696800F0DDFB032030710420C7
-:1008C000F2E129780429B7D1774F0328B4D17748CA
-:1008D00008220830696800F0CDFB04203071786888
-:1008E0004168002906D00321297000212971406840
-:1008F000A86072E10320D7E1287803289CD12879E9
-:1009000000281AD00546002D16D006216846017031
-:100910003869029002216846017102980521017030
-:10092000457000216846FFF7BBFC01216846017055
-:1009300004210171457115E293E15B49A86849689A
-:100940000028486001D15A48486005203071786914
-:10095000032202704A684260544A8260524A0C3252
-:10096000C260D21D0261027D4B7A5208DB07520041
-:10097000DB0F1A430275CB688361FD231A404B7A63
-:100980009B07DB0F5B001A4302750969C16130E107
-:100990000DE12978092988D14349032885D104200C
-:1009A00008700620694608703869029011200871A5
-:1009B000029803210170401C1022696800F05AFB64
-:1009C00000216846FFF76CFC00203071B7E1297800
-:1009D000092993D1052891D134496A68203910201A
-:1009E000401EC0B20B5C145CA34203D0002004255F
-:1009F00030718AE70028F3D107203071786904212B
-:100A00000170294949684968416028498160103965
-:100A1000EEE028780A28BED10620694608703869B9
-:100A2000029011200871029804210170401C1022CC
-:100A30001E4900F01FFB00216846FFF731FC1A48F1
-:100A4000102140786A68091AC9B2101800F00AFB30
-:100A50006868019014481330C178C9070BD08179B8
-:100A6000002902D14079002805D0082030711BE10F
-:100A700029466846EFE0072069460870002168466D
-:100A8000FFF70EFC5FE128780E2884D106486968DC
-:100A900081608969407808700920A9E6C80701D0FB
-:100AA0000A20FFE00F20A3E6C8000020141B00204E
-:100AB0001452010028780F2879D1A8683861287964
-:100AC00038730B20FAE628780428F5D1FC4C6968C5
-:100AD000A0680822006A00F0CDFA0C203071786915
-:100AE0000722B9690270A268D3684360126A826003
-:100AF0007EE028780D28DFD1F14C6968A0680223D8
-:100B00000269C06900F0BEFA0D20307178690621D3
-:100B10000170A1688A684260096966E028780C283B
-:100B2000CAD1E74C6968A0686278406A00F0A2FA0E
-:100B30006078A2681021091A526AC9B2101800F030
-:100B400091FA0621684601703869029011226846C0
-:100B50000271029810220170A168401C496A00F0DD
-:100B600089FA00216846FFF79BFB0E206EE028788B
-:100B70000F2876D1062168460170386902900B2152
-:100B800068460171029C0720CD4D2070A8680222A2
-:100B9000C169601C00F06EFAA8680822016AE01CB6
-:100BA00000F068FA00216846FFF77AFB7AE7C8E0B0
-:100BB000880701D5102075E0132019E628780F2842
-:100BC0004FD1A86838612879387311203071BC483A
-:100BD000816848690078002801D00324CAE0786958
-:100BE00006220270C9684160B6498160B549091D95
-:100BF000C160FFF78FFB30E0B14880684169097838
-:100C000000290CD129780C292BD1AD4C6968806A58
-:100C1000102200F02FFAA16801204969087006210E
-:100C20006846017038690290112168460171029886
-:100C300008210170A249401C89681022896A00F0CD
-:100C400019FA00216846FFF72BFB122030710921A9
-:100C5000684601702946FFF723FB044601287DD032
-:100C600088E06FE028780F286CD10620694608706C
-:100C70003869029008200871029809210170904992
-:100C800089680A78D207D20F427049680622801C10
-:100C900000F0F0F900216846FFF702FB8CE74807F7
-:100CA00005D514203071092069460870E0E6162049
-:100CB0009EE528780F2851D1A868386128793873C3
-:100CC000152030717869062101707D4989688A682C
-:100CD0004260096981607B49891D89E728780C2871
-:100CE00045D1774C6968A0681022C06A00F0C2F94B
-:100CF0000620694608703869029011200871029830
-:100D00000A210170A168401CC96A102200F0B2F9E2
-:100D100000216846FFF7C4FAC9E7694813304079F3
-:100D2000002810D0C10703D065480621017006E0F5
-:100D3000800701D5082000E00A20614908700024DE
-:100D400018E00BE013E0172052E55D49002805D0BC
-:100D50000020307108700A206946087068460078E3
-:100D6000002804D000216846FFF79AFA002454486E
-:100D700000210170204605B0F0BD10B5524BFF2494
-:100D80005C72586019721A80002204E0491EC9B2D0
-:100D90000B010C33C2540029F8D110BDF0B54A4EF6
-:100DA0000546717A01208DB0FF2971D00127727A32
-:100DB000736811015C180C31595C8900091F645873
-:100DC0006A7021780B0004F0F5F90B960709272CBF
-:100DD00059888D4A4F5492002F707CE02146203173
-:100DE0000A9109790120002902D0012967D10EE07A
-:100DF0006068019005A802900D21C01C00F032F936
-:100E0000032205A8A16800F035F90A984EE0297878
-:100E1000052974D106215DE029462046FFF719FB1C
-:100E200069E021462031069109790120002902D08C
-:100E3000012964D10EE06068019007A802900822A1
-:100E4000E16800F017F9082209A8A16800F012F97A
-:100E500006982BE02978052951D10A213AE0294644
-:100E6000204600F01AF946E029462046FFF76BFAC3
-:100E700041E029462046FFF756FB3CE02146203161
-:100E8000059109790120002903D0012937D11DE0FE
-:100E900056E06068019007A802900822A16800F05F
-:100EA000E9F8082109A800F0DDF8059869460771FE
-:100EB0000520087029466846FFF7F2F91BE00BE0B1
-:100EC000C80000200C520100241B002029780529AD
-:100ED00015D10B212970002011E02946204600F091
-:100EE00023F908E02946204600F04EF903E02946A0
-:100EF0002046FFF7C9F9002801D001280CD125624E
-:100F0000717A736809010C315A5C521E1206120E76
-:100F10005A5401D003204AE70328FCD0737A726840
-:100F200019011D010D312C46515C7172FF270D34E2
-:100F300017550C35545D002C02D0FF2903D1737274
-:100F40000DB0F0BD21460C010D34145DFF2CF9D11C
-:100F500009010D315354F3E770B5AD4C0546607A85
-:100F6000214603464A6811E0010108460C30105C36
-:100F700008E0401EC0B286008E199659AE4201D1DB
-:100F8000042070BD0028F4D10D31505CFF28EBD156
-:100F90009F480021007A01E0491CC9B2884204D967
-:100FA0000E010C36965D002EF6D1884201D8052040
-:100FB00070BD08010D30135461722846FFF7AAF97D
-:100FC000032806D0617A626809010D31515C6172B3
-:100FD00070BD28462830FFF7E1FE70BD10B50478DB
-:100FE0000123012C14D10C78022C11D30B23137084
-:100FF00083785B075B0F537002220A708088002899
-:1010000005D0830000221146062000F0EEFD0023EB
-:10101000184610BD0EB50022012105280AD0062869
-:1010200007D1684601700221017142710021FFF76A
-:1010300064F80EBD68460170F6E710B58EB00C4638
-:1010400006216A461170019072480290001D0390BB
-:101050006846FFF781FF102220460B9900F00AF83E
-:101060000EB010BD002202E0491EC9B24254002950
-:10107000FAD1704703E0521ED2B28B5C8354002A2F
-:10108000F9D1704730B505E05B1EDBB2CC5CD55CB6
-:101090006C40C454002BF7D130BD3EB5044620301F
-:1010A0000D4602790121002A02D0012A3AD10FE02F
-:1010B00061680191574908310291012101710520B0
-:1010C0006946087029466846FFF7EAF8014629E0B4
-:1010D0002878052826D169681022A06800F087F8D2
-:1010E0006868C07B000606D54A4AA06810231832FB
-:1010F0000146FFF7C7FF1022A168E06800F077F80B
-:10110000A068C07B000606D5424AE068102318326A
-:101110000146FFF7B7FF07202870A0686860E06805
-:101120000021A86008463EBDF0B5044626460F469D
-:1011300020363179012089B0002909D0012905D153
-:101140003978052902D10C203870002009B0F0BD93
-:10115000606803AD01900295022203A8A168FFF721
-:1011600089FF0222A81CE168FFF784FF0C21281DDB
-:10117000FFF778FF01203071052069460870394675
-:101180006846FFF78DF8E1E710B5034620331C7978
-:101190000122002C04D0012C10D0022C25D11EE0FD
-:1011A00001211971C16806220A7040684860194817
-:1011B000801C8860801CC86008460CE00C780C2CF1
-:1011C00013D102221A71C268052313704968516055
-:1011D000806890601046FFF79DF8024605E00878A9
-:1011E0000B2802D10D2008700022104610BD10B54A
-:1011F000002409E00B78521E5B0023430370401C5F
-:101200000B78491CD2B2DC09002AF3D110BD0000D2
-:10121000241B00200C52010070B50D46040012D0B2
-:10122000002D10D02101284603F093FD10225449CF
-:10123000284603F031FD52480121083801804480DE
-:101240004560002070BD012070BD70B54C4E00247B
-:101250000546083E11E0716820014018817BAA7B99
-:10126000914209D1C17BEA7B914205D10C222946EA
-:1012700003F0E5FC002806D0641C30888442EADBD9
-:101280000020C04370BD204670BD70B50D460600FD
-:101290000AD0002D08D03A4C083C20886188401CB8
-:1012A000884203D9042070BD102070BD3046FFF77E
-:1012B000CCFF002801DB401C0AE0208861680001A7
-:1012C00040181022314603F0E7FC2088401C2080A3
-:1012D0002870002070BD70B514460D001FD0002C82
-:1012E0001DD00021A170022802D0102817D108E0DB
-:1012F000687829780002084311D00121A17010807C
-:101300000BE02846FFF7A1FF002808DB401CA07077
-:10131000687B297B000208432080002070BD0120EB
-:1013200070BD70B5054614460E000AD0002030701E
-:10133000A878012807D004D9114908390A889042B1
-:101340000BD9012070BD002C04D02878207028888B
-:10135000000A50700220087010E0002C0CD0496880
-:101360000001411810391022204603F095FC28781E
-:1013700020732888000A607310203070002070BD30
-:10138000EC00002073490968016000207047714932
-:1013900008600020704701216F4A704B002803D07D
-:1013A000012805D06E48704791630020187001E055
-:1013B000D1631970002070476A49012008606848AD
-:1013C000801C70470422684B6649002805D05A608B
-:1013D000086901221043086108E0086940084000DC
-:1013E00008619A605C490020C03188600020704725
-:1013F0005C490622002808D0012809D002280DD017
-:1014000003280FD05648401C70470869904302E0FB
-:1014100008699043801C0861002070470869904368
-:10142000001DF8E708691043F5E74E494A6A024390
-:101430004A62002070474B494A6A82434A62002050
-:1014400070474849496A0160002070474549CA69A8
-:101450000243CA61002070474249CA698243CA6197
-:10146000002070473F49C96901600020704730B5CE
-:101470000546002072B601463A4A384C4032002DEB
-:1014800011D00123012D0CD0022D02D0072062B60D
-:1014900030BDA3706478002C01D09363F7E79163AB
-:1014A000F5E7A170F9E7A170F9E72F4904208860FA
-:1014B00029490020C03188602849012008702B4943
-:1014C0000A688023120A12021A430A602849086037
-:1014D000704722480078704770B5EFF31080C50759
-:1014E000ED0F72B61D4C6078401C0006000E607057
-:1014F00003D120A1CC2003F06CFD6078012806D137
-:10150000A078002803D01749012040318863002DBE
-:1015100000D162B670BD70B5EFF31080C507ED0F56
-:1015200072B60E4C6078002803D112A1DC2003F0C3
-:1015300050FD6078401E0006000E607006D1A07855
-:10154000002803D00749002040318863002D00D1D6
-:1015500062B670BD0004004040000040FC00002066
-:1015600004200000000500400003004000E400E00B
-:1015700000E100E07372635C736F635F706F7765A7
-:10158000722E63008107C90E002808DA0007000FD9
-:1015900008388008B94A80008018C06904E08008D3
-:1015A000B74A800080180068C8400006800F704766
-:1015B000B44948788978884201D3401A02E0212250
-:1015C000511A0818C0B27047AE492331487889785B
-:1015D000884201D3401A02E02122511A0818C0B2F1
-:1015E0007047A849463148788978884201D3401A23
-:1015F00002E02122511A0818C0B27047A04810B565
-:101600000C300168FF22120291430122D2031143E0
-:1016100001609C490020233148708870233948704C
-:101620008870463148708870974802F0FFFA9648F3
-:10163000401C02F0FBFAF2F7A9F900F015F910BD11
-:1016400020207047B4E770B50C4605460026FFF72A
-:10165000AFFF8C49A04214D30A46203A002320460B
-:10166000641EE4B200280BD08878105C287088785B
-:101670006D1C401CC0B288702128F0D18B70EEE741
-:10168000012600F0F1F8304670BD202070479BE73E
-:1016900070B50C4605460026FFF796FF79492331C1
-:1016A000A04214D30A46203A00232046641EE4B226
-:1016B00000280BD08878105C287088786D1C401C3E
-:1016C000C0B288702128F0D18B70EEE7012600F0BF
-:1016D000CBF8304670BD202101700020704710B556
-:1016E0000446FFF77EFF2070002010BD70B50C4649
-:1016F0000546FFF776FF63494631A04215D30A46F7
-:10170000203A00232046641EE4B200280BD08878DB
-:10171000105C287088786D1C401CC0B2887021282D
-:10172000F0D18B70EEE7002400E0584C00F09CF8FC
-:10173000204670BD70B50C460546212904D9FF200E
-:1017400053A1473003F045FC4C484068103840B284
-:10175000FFF718FFC6B20D20FFF714FFC0B2864294
-:1017600007D2FF204AA14D3003F033FC01E0F2F72D
-:101770004DF921462846FFF766FF0028F7D070BDD7
-:10178000F8B5404E07462336B1787078212200F034
-:1017900060F8354623353B4C00280ED0A1786078A0
-:1017A000212200F056F8002814D0A9786878212268
-:1017B00000F04FF800281AD025E032497078C91C93
-:1017C0000F547078401CC0B2707021281BD10020CB
-:1017D000707018E02B49607820390F546078401CF5
-:1017E000C0B2607021280ED1002060700BE0254946
-:1017F000687826310F546878401CC0B26870212880
-:1018000001D100206870B1787078212200F021F8B1
-:1018100000281DD0A1786078212200F01AF8002855
-:1018200016D0A9786878212200F013F800280FD08C
-:10183000F2F7CEF8144802F001FA01214903884278
-:1018400003D013A1C12003F0C4FB0F4802F00EFA2D
-:10185000F8BD401C884205D0904201D1002901D03A
-:10186000002070470120704710B5074802F0E6F9E4
-:10187000002801D1F2F79BF810BD000000ED00E058
-:1018800000E400E0501B0020FF00002007200000C3
-:101890007372635C736F635F72616E642E630000CA
-:1018A00010B5284802F0C2F9002803D026A11D2057
-:1018B00003F08FFB2348401C02F0B8F9002803D046
-:1018C00021A1212003F085FB10BDF1B5224D6F68E9
-:1018D00001261C4802F0B2F91A4C002803D1002658
-:1018E000601C02F0C3F91D4A1D490120506000BF71
-:1018F00000BF00BF00BF00BF00230B604B60009B18
-:101900006B60106000BF00BF00BF00BF00BF086871
-:10191000002802D148680028F9D048680028E4D19E
-:10192000002E04D06F60601C02F088F907E0601C94
-:1019300002F084F90028D3D1024802F097F9002080
-:10194000F8BDC2E7010100207372635C736F635FCF
-:101950006563622E6300000000E5004000E0004087
-:1019600000E1004030B5EFF31081CC07E40F72B610
-:101970001D4A116910230D461D431561002C00D12D
-:1019800062B61A4DC406E40E0120A0402C68044241
-:101990000DD0C8060AD4EFF31080C007C00F72B68E
-:1019A000116999431161002800D162B630BD20BF92
-:1019B00040BF20BFEAE70E4908784A78401CC0B211
-:1019C000904200D008707047084A094820BF40BFC5
-:1019D00020BF4178037843701368002B02D103784D
-:1019E0008B42F3D00020704700ED00E000E200E001
-:1019F00003010020FEB5F64C07466068FF213E015A
-:101A000081552178FF2913D0090108314158324608
-:101A1000491E083209020192090A805800F0CEF9E5
-:101A2000002802D02478254615E061682078885582
-:101A30002770FEBDE64842680198115828010090C1
-:101A40000830105800F0BAF9002806D1E0482C46BA
-:101A5000416800980D5CFF2DECD1DD482101406804
-:101A600085554754FEBD70B5D94A04460020157A05
-:101A700053680AE00201561C9E5DA64203D10C3257
-:101A80009A588A4204D0401CC0B28542F2D8FF2046
-:101A900070BDF8B5CE4F3E7801F01AFE0146FF2E1C
-:101AA00071D03401254678680835405900F086F930
-:101AB00002280CD97868405901F0FDFD01F008FEBC
-:101AC00001467868405900F079F902285BD8C0498E
-:101AD0004868025D0A70A11C425C002A0CD0521EAC
-:101AE000425441590122D20589180902090A41517B
-:101AF0003046FFF77FFF30E0631CC25C0092221D7E
-:101B000094468258002A10D001239B029A420FD992
-:101B10009205920D43595703DB191B021B0A4351CF
-:101B20006346C3589A1A920A09E0FF21C1540AE099
-:101B3000435952039A181202120A42510022425487
-:101B40003046FFF757FFA2480C344168C26800983E
-:101B5000095980001258009890479D4C2078FF2822
-:101B600011D0000161680830085801F0A4FD01F0AF
-:101B7000AFFD01462078626800010830105800F07F
-:101B80001DF9022886D3F8BDF8B51C4615460E4649
-:101B90000746FF2B03D38FA1D42003F01AFA8C48F9
-:101BA000FF21C76045600472067401700022427014
-:101BB000104604E00201521C401CA954C0B2A042CD
-:101BC000F8D3F8BD70B5824C06466578207C854216
-:101BD00003D380A1E72003F0FCF9E068A900465098
-:101BE0006078401C6070284670BDFFB581B01D460E
-:101BF000FF2401F06DFD764F064679780198814209
-:101C000003D874A1F52003F0E4F971480021037AA8
-:101C1000406810E00A019446521C825CFF2A25D0DD
-:101C2000019FBA4205D162460C328758029A974208
-:101C30001ED0491CC9B28B42ECD8FF2C18D0210110
-:101C40004A1C019B83540B460C33029AC250039BDF
-:101C50005F4F0022012B0ED00B1DC25001239B02AF
-:101C60009D4216D9AA05920D08D008E00C46E0E77F
-:101C7000FF2005B0F0BD0B1DC550EFE71A4653031A
-:101C80009B190E461B0208361B0AAA1A8351920A98
-:101C900009E0002D00D101256B039B191D022D0ABF
-:101CA0000B460833C550891C42543D463E782046B9
-:101CB000FFF7A0FE2878B04214D000016968083010
-:101CC000085801F0F8FC01F003FD29786A68090161
-:101CD000083152580146104600F070F8022801D22F
-:101CE000FFF7D7FE0198C4E770B50C46054601F032
-:101CF000EFFC064621462846FFF7B5FEFF2817D021
-:101D0000334D04012046696808300858314600F018
-:101D100055F80121090340186968A41C095D400BAE
-:101D2000002901D089020818002800D1012070BDC7
-:101D3000002070BDF3B581B00F460198FFF793FE08
-:101D4000FF282AD0224E3578726829460C4604E0D6
-:101D5000844205D025462301D45CFF2CF8D11CE039
-:101D6000FF2C1AD0A5421CD10801105C3070FF284E
-:101D700015D000010830105801F09DFC01F0A8FCBE
-:101D800001463078726800010830105800F016F8EB
-:101D9000022806D2FFF77DFE03E00020FEBD01F021
-:101DA00092FC39460198FFF79FFF22017168FF23DB
-:101DB000541C0B558A5C2B01CA54FEBD401A00020C
-:101DC0000121000AC905884200D90020704700009F
-:101DD0009C1B00207372635C736F635F74696D6535
-:101DE000722E6300F0B500241C4A01211C4B08032D
-:101DF000546018601B4B1C601B4C20601B4804691E
-:101E0000E443E406E6170469761C10252C430461BC
-:101E1000174C6160174D296000E020BF1F68002F3C
-:101E2000FBD0002E03D107691026B74307619068E5
-:101E30008005906801D5104A10436960A1600021B7
-:101E400019600121084A09031160F0BD10B504466C
-:101E5000FFF7C8FF2060002010BD000000C5004053
-:101E600080E100E000C1004080E200E000ED00E021
-:101E700000C3004000C0004000FCFFFF70B51F49D8
-:101E80000A68002A17D000231D4601244A68521C04
-:101E90004A60092A00D34D600E792246B2400E688E
-:101EA00016420AD072B60B6893430B6062B649685B
-:101EB0000160002070BD052070BD5B1C092BE5D3BF
-:101EC0000FA1362003F085F8F5E7012010498005C1
-:101ED00008607047EFF31081CA07D20F72B6012174
-:101EE00081400648036819430160002A00D162B6A8
-:101EF000EBE70248002101604160704708010020C3
-:101F00007372635C736F635F6576742E63000000A9
-:101F100000E200E00120810708607047012081078E
-:101F2000486070471048C068C00700D00120704763
-:101F30000D488068C00700D0012070470A484069FA
-:101F4000C00700D0012070470748C06970470649A4
-:101F50008A69D20306D589698907890F814201D12F
-:101F6000012070470020704700040040F8B5FE4C87
-:101F7000207BE17A88421AD00126FC4D0027E07AC6
-:101F8000215C14200A4642435019037C052B0FD0D4
-:101F9000062B1BD0072B28D0437C012B33D0F4A178
-:101FA000F64803F016F8207BE17A8842E7D1F8BDC5
-:101FB0000674E07A0A2807D0E07A401CE072491CD7
-:101FC000C8B2AA5802210CE00020F7E70674E07AB4
-:101FD0000A2808D0E07A401CE072491CC8B2AA580E
-:101FE00003219047DFE70020F6E70674E07A0A282D
-:101FF00007D0E07A401CE072491CC8B2AA580821F8
-:10200000EFE70020F7E74774E07A0A2807D0E07A84
-:10201000401CE072491CC8B2AA580721E1E7002021
-:10202000F7E770B5D64D06206872D648002444778D
-:10203000047738300473C472D34801F0F7FDD348F5
-:102040000475EC72D249601E88606C71AC70EC70E3
-:102050002C716C70CF48022104704470CE4804701B
-:10206000047528300470491EFAD10120F1F750FDA3
-:102070000020F1F74DFD0120A871F0F741FDC748A0
-:10208000F0F750FDC64C2070C648F0F74BFD60706D
-:10209000F1F7E2FC70BD10B5F1F709FDC04C2078F6
-:1020A000F0F75EFD6078F0F75BFDB54C207A002814
-:1020B00005D0FFF730FAF0F7E2FD0020207210BDE6
-:1020C00070B5AF4CA079002804D0A9A1B64802F0A1
-:1020D00080FF70BDE07A002804D11320A4A1400144
-:1020E00002F077FF0126A6710025E572607A0421CF
-:1020F000142250439D4A80180174A5488168491CE8
-:1021000004D0691E81600120F1F702FD0020F1F783
-:10211000FFFCF1F7E3FC01F023FEF1F7E8FDA34833
-:10212000056005600120A249C0030860F0F74AFF7E
-:1021300098480078022804D0032804D1E0780028C9
-:1021400001D0A67000E0A570F1F7BDFD70BD03469B
-:1021500086490520142242435218203A127F002A51
-:1021600004D0401E0006000EF4D1704714224243F2
-:1021700051180A46403AD362012220390A77704743
-:10218000012805D0032805D1002903D1002070477C
-:102190000029FBD010B47A4C002363707D4A0028DC
-:1021A00090700CD002280AD007291AD20B007B4469
-:1021B0001B79DB189F441505070D0F111300D37011
-:1021C00003E01B2000E03A20D0700120607010BCBA
-:1021D00070475820F8E77720F6E79620F4E7B52017
-:1021E000F2E710BC0020704710B56A484078F1F75C
-:1021F00085FD80B210BD411E1422504310B55B4ACC
-:102200008418203C042902D8207F002803D158A13B
-:10221000684802F0DEFE207F012803D054A1664802
-:1022200002F0D7FE0020207710BD70B5554C607FBE
-:10223000217F884201D1012500E00025F1F7F7FC5C
-:10224000F1F75CFD617F227F914201D1012100E025
-:102250000021A942EBD170BDF7B50646481E844661
-:102260008EB0C0B2142204905043404A85182846CC
-:102270000595007C2D1D07282AD13B4C0027E07ACC
-:10228000227B824221D0235C049A934201D1012710
-:1022900001E0002F04D00A2811D0421CA25C225475
-:1022A0000A280ED0401C227BC0B28242EBD1002F04
-:1022B0000BD0207B002806D0207B401E04E00022AB
-:1022C000ECE70020EFE70A202073059A0120107444
-:1022D00060462B4C04280FD814204143234808188B
-:1022E0002038007F002807D00598007C012807D0FF
-:1022F0001098807A012807D01DA1304802F069FEAD
-:102300001098807A012871D10598184B007C02281A
-:102310001AD0154C207B0A2874D0207BE17A401C0F
-:10232000884204D1C92012A1800002F052FE059912
-:1023300001204874217B04986054207B0A2865D0D2
-:10234000207B401C20731CE1607A049A0146904275
-:1023500006D0014614277843C018807C9042F8D1FB
-:10236000627A824235D12BE0A81C0020B81C0020E4
-:102370007372635C72656D2E63000000D50500000A
-:102380003C1D0020701C0020481D0020901C0020D7
-:102390001C1D002012010020C81C0020931A0100FF
-:1023A000100100206D1F01007F02000000F50040B9
-:1023B00080E200E0CD020000CE0200001703000022
-:1023C000617A14225143C918897C61720121A1727A
-:1023D00007E014224243D21814277943927CC9188B
-:1023E0008A74142206215043C01881741098007A10
-:1023F000062819D203007B441B79DB189F4408127E
-:10240000100E0C0AE07A00288CD090E7002099E7A3
-:1024100000210FE0B4210DE073210BE0322109E02F
-:102420000A2107E0062105E0FF20FE49E23002F024
-:10243000D0FD0021109802910068401A2860109980
-:10244000097A002912D00221401A0102090A2960E2
-:1024500010980268406810180002000A686010981E
-:10246000807A0228109803D0007B74E00421EBE707
-:10247000007A002813D0022202981018844610987F
-:102480004268604608301718E748029A4078904240
-:1024900002D9E278002A04D03846083005E0042248
-:1024A000EAE7029A801AC0190830627A062A1CD01C
-:1024B000627A14235A43DD4BD2185268914214D0E9
-:1024C000DB4B0793617A14225143D84A89184A6832
-:1024D0008968921B891B12020902120A090A90429A
-:1024E0003AD89A4238D8994236D83018C01B0002E0
-:1024F000000A286010996044CE4AC9680002000AA8
-:102500009446421A01239B0507929A4201D2104633
-:1025100014E00A1A09929A4201D207980EE0079A2B
-:102520006346624503D9591A0818401C06E0099A07
-:10253000624506D9181A4018401C404200285FDC4A
-:1025400003E0B849BC4802F044FD2868C019000205
-:10255000000A6860002028726868082708300002B6
-:10256000000A68601098407AA8721098007A687221
-:1025700003280ED200280CD0FFF7D4FC002803D08B
-:1025800007E0002011B0F0BD02983A210F1A322066
-:102590000290A5480178012901D0032909D1417889
-:1025A0000298814205D9E078002802D10298081AE1
-:1025B000C71928689E4A801B844601026868090A78
-:1025C000801B03021B0A8F421AD81746914217D864
-:1025D000BB4215D8617A062916D0677A6146062271
-:1025E000039200923A4614235A43904BD2189368B0
-:1025F0009B1B8B4216D80397977C062FF2D177E06E
-:10260000049801F059F9BCE7059802220499027474
-:10261000627A062A00D0627A827461720120A07206
-:1026200011B0F0BD062F63D0002239469446142223
-:102630007E4B4A43D21853689B1B834229D2917B1D
-:10264000AB7A99421FD805980521049C7B4D0174F3
-:10265000287B0A2811D0287BE97A401C884203D1C4
-:102660007049774802F0B5FC287B2C54287B0A2857
-:1026700007D0287B401C287383E7E87A0028EFD036
-:10268000F2E70020F7E701218C46917C0629CED1A4
-:1026900002E0604600282AD03D46009114202A46D8
-:1026A000424362480621161831741038007B0A280C
-:1026B000624816D0017BC07A491C814203D161A1D6
-:1026C000634802F086FC5D48017B4554017B0A2982
-:1026D0000BD0017B491C0173B57C0098A842DDD169
-:1026E00006E0C07A0028EAD0EDE70021F3E7009782
-:1026F0000599022008744D4D607AB84207D10599BA
-:1027000000988874049860720120A07221E00398F8
-:10271000062F0FD0062803D14AA14E4802F059FCDB
-:102720000398142250434019049981740599009824
-:1027300088740EE0062803D142A1474802F049FC04
-:102740000398142250434019049981740599062076
-:102750008874012011B0F0BD70B50D4606463F49A2
-:1027600000242046891BA04103D236A13C4802F038
-:1027700030FC3C490020491BA04103D231A13A481A
-:1027800002F027FC394A70190021821A8C4101D3CA
-:102790003749401870BDF8B5401EC0B214214843F7
-:1027A00022494518687B062813D203007B441B7915
-:1027B000DB189F44020C0A080604002066E0B420DF
-:1027C00010E073200EE032200CE00A200AE0062020
-:1027D00008E0FF201BA1E23002F0FBFB697B002038
-:1027E000002953D0022140186968002440180C21A8
-:1027F00000026956000A00294ADBF1F77FFA174AFE
-:1028000006460C27EF570021101AA14103D20DA153
-:10281000134802F0DEFB13490020C91BA0412CD253
-:1028200008A127E07023010012010020B81C00203D
-:10283000FFFF3F00FFFFFF0014070000A81C00205F
-:10284000090200007372635C72656D2E6300000004
-:10285000C7030000DF030000E5030000FF7F841EC4
-:10286000F50300000020A107F60300000080841E8D
-:1028700000807BE1FB4802F0ACFBFB4AF019002131
-:10288000821A8C4101D3F9494018F8BD0421AAE706
-:10289000F1F734FA0C21695600224018F449091A5C
-:1028A000A241F2D24042F8BDF0B5064683B0F148ED
-:1028B0000190457A029534687068001B0702EE4863
-:1028C0003F0A001B0090062D2DD0142029464143BD
-:1028D000EA480122081884464168E748920586467E
-:1028E000081B904210D3631A93420DD302467046E0
-:1028F000724503D900984018401C05E073450ED975
-:10290000411A0819401C404200280CDA6046029522
-:10291000857C0198C0790028D5D003B0F0BDD84996
-:10292000D84802F056FB0298854226D0142148432D
-:10293000D2490123401802908068CF499B058C46FC
-:10294000011B8646994210D3221A9A420DD3634640
-:10295000614503D900997144491C06E01946624556
-:102960002DD9091A0819401C4142002905DD029899
-:10297000B17A807B814200D37446062D15D0BF49C1
-:102980001420454368184268121B1202120ABA4208
-:102990000BD2B27A837B9A4200D38468857C0198FB
-:1029A000C0790028B9D1062DEAD13068A042B4D050
-:1029B000E0190002000A3460706003B0F0BDB04955
-:1029C000B04802F006FBD8E7F0B5AF4904464868C6
-:1029D00085B0C005C00D1CD0103840B200280CDAFC
-:1029E0000207120F083A920892005118C96980072D
-:1029F000C00EC1400806800F09E08108A34A890083
-:102A0000891809688007C00EC1400806800F002899
-:102A100008D000262078002806D0012804D0002005
-:102A200005B0F0BD0126F5E72079062813D2030092
-:102A30007B441B79DB189F44020C0A080604002023
-:102A400018E0B42010E073200EE032200CE00A20E1
-:102A50000AE0062008E0FF208949E23002F0B9FAD6
-:102A600021790020002905D002214718814D002E30
-:102A700002D003E00421F8E70020E87102AA6946C9
-:102A8000A068F1F745F9694608228A56E06801A96D
-:102A90008018C01C01221F2801DA019209E003AA54
-:102AA000F1F736F96846007B002802D00198401CF7
-:102AB000019000990198401808300002000A019026
-:102AC000C81B0002000A009060796946887200986D
-:102AD0000390F1F7ACF8009A019B121A181A6C498E
-:102AE00012020002120A000A8A4216D8884214D83A
-:102AF0006846FFF7D9FE00990398814205D0C819AE
-:102B00000002000AF1F7FAF8A0600120E979002933
-:102B100086D0002EB0D005B0F0BD0020F6E7F3B5AA
-:102B20008FB05C480C460B9001F088F85A4A0F9918
-:102B3000504E5518203D594F00280BD05848007D65
-:102B4000002803D057A15A4802F043FA2078012800
-:102B50007DD05FE1787F0A280CD0787F397F401CD8
-:102B6000884203D14FA1534802F033FA207801285C
-:102B700004D00CE0387F0028F4D0F7E7E87F002885
-:102B800003D048A14C4802F024FA0120E877787F6E
-:102B90000F991422494D504340190174207802289E
-:102BA00023D0787F14214843451920792872607911
-:102BB00068722A460C322946A068F1F7A9F80C2061
-:102BC00028560F2804DD1F3828732868401C286009
-:102BD0000C22AA56281DE16802908818C01C1F28E4
-:102BE0003FDA029901200860FDE027494868C005E6
-:102BF000C00D20D0103840B200280CDA0207120FA6
-:102C0000083A920892005118C9698007C00EC14065
-:102C10000806800F09E081081C4A890089180968A4
-:102C20008007C00EC1400806800F002803D11DA1F7
-:102C3000234802F0CEF9787F14214843451900213A
-:102C4000E0686A460591117303AA05A900E0D8E07F
-:102C5000F1F75EF86A460C2010560F2832DD01208D
-:102C600031E0B3E0F60300000080841E00807BE1C9
-:102C7000FF7F841E3C1D0020FFFFFF00B81C0020CA
-:102C8000442801001407000000ED00E000E400E02B
-:102C9000FFFF3F00481D002016010020701C00208F
-:102CA000901C00207372635C72656D2E63000000DF
-:102CB00017050000F5040000FA040000B01B002016
-:102CC0000605000000200599401808900220A8720F
-:102CD0002079287260796872A068291DC01C039150
-:102CE0001F2801DA01200AE006AAF1F711F8684668
-:102CF000007E002804D0039803990068401C0860F7
-:102D0000287A062813D203007B441B79DB189F44E2
-:102D1000020C0A08060400200FE0B4200DE0732026
-:102D20000BE0322009E00A2007E0062005E0FF2042
-:102D3000FD49E23002F04DF900202179002943D00D
-:102D400002214118069168680831401808990590D9
-:102D500008180699401A0C900020F071F0F767FFF0
-:102D600004462860089820180002000AE860707A7B
-:102D7000062825D0707A14214843EC494018406851
-:102D80000090059940180002000A0190687A69468F
-:102D900088726846FFF788FD0098019A001B121B95
-:102DA00000021202E24B000A120A0C99984207D85C
-:102DB0008A4205D80099069808180002000A28607F
-:102DC000F0790028C8D110E00421BAE704AA0299DA
-:102DD000F0F79EFF6846007C002804D00298029914
-:102DE0000068401C08602078A872787F0A2806D006
-:102DF000787F401C78770B9800F038FF47E0002080
-:102E0000F8E7E87F002803D0CAA1CD4802F0E1F836
-:102E10000120E877CB490F9808742078022803D165
-:102E2000C4A1C94802F0D5F8C64D2079287260794E
-:102E300068722A460C322946A068F0F769FF0C2018
-:102E400028560F2804DD1F3828732868401C286086
-:102E50000C22AA56281DE16802908818C01C1F2861
-:102E600003DA0299012008600CE003AA0299F0F746
-:102E70004FFF6846007B002804D002980299006842
-:102E8000401C08602078A872AE4901200875797F3F
-:102E9000387F814223D0747A062C22D0F0F7C7FE07
-:102EA00014214C43A1496218117C042917D003292D
-:102EB00015D0536892681B1A101A1B0200029C4915
-:102EC0001B0A000A082B0AD30A468B4207D89042F5
-:102ED00005D8787F397F884201D0F0F7F4FE11B031
-:102EE000F0BD787F397F8842F7D111B0F0BD10B5C1
-:102EF0000020F0F7FAFD10BD10B50120F0F7F5FD48
-:102F000010BDF1B5009802281FD0904C607A0628B9
-:102F100003D188A18E4802F05CF80026A671012535
-:102F2000E572607A03211422804F5043C019017466
-:102F3000F0F7CEFE009800280CD001282AD00328F4
-:102F40007CD0B5207BA1C00044E082480078EFF738
-:102F50000DFEF8BD8048007F002803D075A17F4892
-:102F600002F037F865717C4D00202E60F0F7D0FD3F
-:102F7000A968481C04D0012300221846F0F7FEFD82
-:102F8000607A617A401CC0B2142251437A58012100
-:102F90009047F8BD0120F0F7BBFD607900280DD007
-:102FA0006D488068401C09D0607A617A401CC0B2CC
-:102FB000142251437A5806219047F8BD6648007F95
-:102FC00001280AD0022812D0032824D0042836D0A1
-:102FD00058A1634801F0FDFFF8BD2079002803D017
-:102FE0002671F0F77AFEE5705B480677F8BD207A27
-:102FF000002804D1FEF770FAEFF718FE2572607A08
-:10300000617A401CC0B2142251437A580021904783
-:1030100051480677F8BD504F0123397B786800226C
-:10302000411A1846F0F7AAFD2079002803D026712E
-:10303000F0F753FEE57002203877F8BD1BE0464EEE
-:10304000217870680123411A00221846F0F796FD96
-:10305000207A002804D1FEF73FFAEFF7E7FD25724A
-:10306000607A617A401CC0B2142251437A58002120
-:1030700090473577F8BD607A617A401CC0B214225F
-:1030800051437A5805219047F8BD10B52F4C607A0E
-:10309000062803D127A1334801F09BFF607A617AAB
-:1030A000401CC0B214225143204A52580421904778
-:1030B00010BDF0B583B006200290F0F7B8FD234CA8
-:1030C0000090617A28480190062920D0617A142066
-:1030D000414316480918097C042918D0617A142242
-:1030E00051430818007C03287BD00198009A03689C
-:1030F00040689B1A801A1B0200020D491B0A000A35
-:10310000082B6ED30A468B426BD8904269D812487E
-:103110008068401C03D007A1144801F05AFF00202A
-:103120006071607A062823E0A42C0100B81C0020FE
-:10313000FFFF3F007372635C72656D2E63000000D9
-:103140001E050000901C0020240500003C1D0020EE
-:1031500055050000100100201C1D00206105000025
-:103160009C050000AF0500002C1D0020EB050000B1
-:1031700007D16078002804D0FE48C178417081787A
-:103180000170607A062815D0607A1421FA4A484303
-:103190008018007C04280DD1607A0290617A0120A9
-:1031A0001423594389180874617A59438918897C12
-:1031B0006172A072F14D687F297FF14F884233D050
-:1031C000F04E287F142148438019007CC05D0128FF
-:1031D000287F07D048438019007CC05D02282FD08B
-:1031E00044E001E2142148438019807A01280AD082
-:1031F000287F0221142250438019007CC155287F6A
-:103200000A2808D009E0297F002014225143891997
-:10321000097CC8552AE0002001E0287F401C28775F
-:10322000687F297F8842CCD1D74D287D00284CD09B
-:10323000287CC15D012928D0C05D022830D03AE049
-:10324000287F142148438019807A012803D0CFA118
-:10325000D14801F0BEFE297F002014225143891974
-:103260008872297F51438919097CC855287F142108
-:1032700048438219287F48438019017C0098FEF753
-:10328000EBFF287F0A28C8D1C5E7A97A012904D015
-:103290000221C155002028750DE00021C1550AE02A
-:1032A000A87A012803D0B9A1BC4801F092FE002001
-:1032B000A872297CC855287D002806D0297CB24AEE
-:1032C0000098FEF7C9FF00202875029806281ED036
-:1032D00014214843A8494018017C012917D107212E
-:1032E000AF4D0174287B0A283CD0287BE97A401C2A
-:1032F000884203D1A5A1AB4801F06BFE297B02985F
-:103300006854287B0A2831D0287B401C2873607AB7
-:1033100006287DD0A07A00287BD00020A072617A98
-:10332000142041439448A04B0A18566891681D46E2
-:10333000D2687C35DE67AA6069609C4D697E002991
-:1033400016D00226617A14228B4851430818407B1C
-:1033500006281BD203007B441B79DB189F440A1408
-:1033600012100E0CE87A0028C4D0C7E70020CDE781
-:103370000426E7E700200FE0B4200DE073200BE007
-:10338000322009E00A2007E0062005E0FF207FA1A7
-:10339000E23001F01EFE00202873697E022901D070
-:1033A000012910D12969009A09188A1A1202120AF1
-:1033B0003A2A08D90320687632390802000A2861BF
-:1033C000322028730AE0322808D2207A00280ED151
-:1033D000FEF782F8EFF72AFC012007E0207A0028A8
-:1033E00005D0FEF798F8EFF74AFC002020726149FB
-:1033F0000822487820700978012901D0032906D1D4
-:1034000001212171297B884201D9421A083201E049
-:1034100091E0A1E0A378002B00D0921C2179002933
-:1034200001D1002B5DD09446614A00990092019A27
-:10343000176852687F1A511A3F0209023F0A090AA7
-:10344000BC451BD85A4A974218D8009A914215D8C1
-:10345000297B884223D92B69421A9A1A1202120A2E
-:10346000101880190002000A2A616860002914D02F
-:10347000032028770006000E3ED14CE0002020718A
-:10348000A070297B002925D02869401880190002E6
-:10349000000A6860022028772EE00120E9E78142D7
-:1034A0000BD92A69511889190902090A696000288B
-:1034B00001D00420DDE70220DBE7002B03D133A19C
-:1034C0003C4801F086FD286980190002000A686006
-:1034D000002004E0296989190902090A696028772E
-:1034E00019E0287B00280FD02969081880190002EC
-:1034F000000A6860022028772869012381190022C8
-:103500001846F0F73BFB09E0286980190002000A21
-:103510006860002028770120F0F7FAFA607A142119
-:10352000484315490C22401882560123002069683F
-:10353000F0F724FB10E00120F0F7EAFA0020F0F7A2
-:10354000E7FAF0F7CBFA207A002805D0FDF7E3FF81
-:10355000EFF795FB00202072A078002804D0F0F748
-:10356000BCFB0020E070A0706078002827D00148E4
-:10357000C17821E012010020B81C0020701C00203E
-:1035800015010020B01B0020901C00207372635CAA
-:1035900072656D2E630000000D0600002906000014
-:1035A000A81C00203B060000B01C00201C1D0020B1
-:1035B000FFFF3F008D060000417081780170207987
-:1035C000002806D00020CE49E0700978002900D1FB
-:1035D0002071CC48017BC07A814203D0CA48407830
-:1035E000EFF7C4FA0120E07103B0F0BDF0B5C74CAD
-:1035F0000746607A83B0062804D16F20C4A1000179
-:1036000001F0E7FC607A1421C44E48438019007C25
-:10361000032803D0BEA1C24801F0DBFCC14DA8685D
-:10362000401C03D0BAA1C04801F0D3FC607A142139
-:10363000484381190C20085600216A4600911171F7
-:10364000C01901AA6946F0F763FB6A4604201056C8
-:103650000F2801DD012000E0002000994018696872
-:1036600040180102090AA9606079002804D00123EA
-:1036700000221846F0F782FA03B0F0BD70B5AC4CEA
-:10368000AA4A0B1AA34214D3451AA54211D3934256
-:1036900003D9101A43185B1C0BE0954204D9511A48
-:1036A0000818401C434204E099A1A24801F091FC93
-:1036B0000023184670BD10B50146012300220220E8
-:1036C000F0F75CFA10BD10B50220F0F721FA10BD3A
-:1036D00010B5F0F7ACFA10BDF0B58C4D0446E87AA1
-:1036E00083B0002803D18AA1934801F072FC642CB6
-:1036F0004DD3924A00210846121B884147D3904877
-:10370000417F007F814242D18E48007D00283ED11A
-:10371000687A1421814F4843824EC519306801AA46
-:1037200000196946F0F7F4FA6946042008560028A3
-:1037300002DD0098401C0090A96800986B680A1888
-:10374000D21A1202804B120A9A4220D8AA7C062A68
-:1037500008D014235A43D2195268511A0902090A8F
-:10376000814214D3B068401C05D00120F0F7D0F995
-:103770000020C043B060306800193060A86800992C
-:1037800040180002000A7061012003B0F0BD002063
-:1037900003B0F0BDF8B50646401EC4B214205F4920
-:1037A00060434518287C002804D1772058A10001E7
-:1037B00001F00FFC6248017F407F81420CD0634AD8
-:1037C00014234B439B181B7CB3420CD00A290CD00A
-:1037D000491CC9B28142F3D15A48017D002961D008
-:1037E000007CB0425ED10020F8BD0021F1E7052940
-:1037F00003D0062901D0072928D101212974C17AD3
-:103800000023027B8A4221D00246565CA64201D1A7
-:10381000012301E0002B04D00A2911D04E1C965D33
-:1038200056540A290ED0491C167BC9B28E42ECD1DF
-:10383000002B0BD0117B002906D0117B491E04E020
-:103840000026ECE70021EFE70A211173697C0029CB
-:103850002AD06F74C17A0023027B8A4224D0425C52
-:10386000A24201D1012301E0002B04D00A2912D089
-:103870004A1C825C42540A290FD0491C027BC9B2FF
-:103880008A42ECD1002B0FD0027B0146002A06D0E1
-:103890000A7B521E04E00022EBE70021EEE70A2239
-:1038A0000A7301E017480027297C01299FD16A7C0F
-:1038B000002A9CD10120F8BD70B505461420174A96
-:1038C0000521684380180F4C0174207B0A2811D011
-:1038D000207BE17A401C884203D10DA11C4801F0F5
-:1038E00078FB207B2554207B0A2807D0207B401CB6
-:1038F000207370BDE07A0028EFD0F2E70020F7E7F0
-:1039000012010020A81C0020100100203C1D0020F6
-:103910007372635C72656D2E63000000B81C00203A
-:10392000F10600001C1D0020F2060000FF7F841E2F
-:103930000020A1071407000033070000FF1FA107A4
-:10394000701C0020901C0020FFFF3F00B01B0020D7
-:103950000902000010B501462022094801F09CF937
-:1039600007490020C877084610BD06490120486174
-:103970000548064A0168914201D100210160704763
-:103980004C1D0020000500401C010020BEBAFECAEC
-:10399000064A10705170704704481C22017841712A
-:1039A00042700170704770477047704720010020D7
-:1039B00030B50346002002460DE09C5C2546303DB4
-:1039C0000A2D02D30020C04330BD0A256843303899
-:1039D0002018521CD2B28A42EFD330BD70B50D46CA
-:1039E000144608E00A2101F0D1F92A193031203AB1
-:1039F000641ED177E4B2002CF4D170BD10B5002361
-:103A000010E0040A00020443A0B2CC5C444020064B
-:103A1000000F60400407240C44402006C00C6040A6
-:103A20005B1C9BB29342ECD310BD10B520380C4602
-:103A3000030001F0BFFB33E0DBE41B1F23272C3125
-:103A4000373C41474D5054585C606D7165697478DE
-:103A50007C8084888C9094989C9FA2A6AAAEB2B8D1
-:103A6000BCC0C5CACFE9F0F3D3D7F800206800F096
-:103A7000DDF8D6E0206800F0E1F8D2E0206800F040
-:103A8000F5F8CEE0207840B200F092FAC9E0207854
-:103A900040B200F0B0FAC4E02078616840B200F0B3
-:103AA000C3FABEE0207840B200F0D3FAB9E0207843
-:103AB00040B200F0DEFAB4E02078217940B200F0A4
-:103AC000E9FAAEE02078616840B200F013FBA8E0AC
-:103AD00000F01FFBA5E0206800F023FBA1E02078A8
-:103AE00000F038FB9DE02068FDF7F5FD99E02068C7
-:103AF000FDF7F5FD95E021792068FDF7F7FD90E0F1
-:103B00002068FDF73FFC8CE02068FDF740FC88E072
-:103B10002078FDF740FC84E0FDF74EFC81E0207842
-:103B2000FDF750FC7DE02078FDF762FC79E020682D
-:103B3000FDF77BFC75E02068FDF77DFC71E02068F7
-:103B4000FDF77FFC6DE02068FDF780FC69E02068F0
-:103B5000FDF782FC65E02068FDF784FC61E02068E9
-:103B6000FDF785FC5DE00846EDF7F0FA59E0EFF768
-:103B700070F856E0EFF79DF853E02068EFF7A5F8EE
-:103B80004FE0206800F080F84BE0206800F082F8F9
-:103B900047E0206800F083F843E02078A26861687D
-:103BA00000F082F83DE0207800F089F839E02078D4
-:103BB00000F091F835E02078616800F098F830E086
-:103BC0002078616800F09FF82BE02179207800F0E0
-:103BD000D5FB26E02068FDF778FE22E02068FEF79E
-:103BE0004DF91EE02068FEF731F91AE0204607C8BB
-:103BF00000F0B9FC15E0206800F00CFD11E06168F0
-:103C0000206800F037FD0CE0206800F029FF08E094
-:103C100009E003E0FFE700F03BFF02E0206800F06E
-:103C200073FF206010BD0120086010BD00210170ED
-:103C3000084670470146002008707047EFF3108176
-:103C4000C907C90F72B60278012A01D0012200E02B
-:103C5000002201230370002900D162B6002A01D09E
-:103C600000207047012040037047E7E7EFF3108121
-:103C7000C907C90F72B600220270002900D162B6CE
-:103C800000207047F2E7000038490968C9B20160B6
-:103C9000002070473549C0B2486000207047334962
-:103CA000C0B2886000207047082801D330487047B0
-:103CB000C3002E4818180161426100207047022895
-:103CC00002D32B48401C70472A4A0121C0008018AB
-:103CD000016000207047022802D32548401C70472D
-:103CE000244A0121C000801841600020704702284A
-:103CF00002D31F48401C70471F4A8000C9B2801879
-:103D0000016000207047022802D31948401C704708
-:103D1000194A800080180068C0B20860002070470F
-:103D200010B5FF20114AC043906008200021C30055
-:103D30009B1819615961401C1028F8D300200E4AC5
-:103D400005E0022803D383009B18196004E0830078
-:103D50009B181C68E4B21C60401C0428F1D310BD01
-:103D6000FF200249C04388607047000000F5014011
-:103D70000820000000F0014000F8014010B572B6C4
-:103D800000F0DEF800280BD0EDF78AFAFEF783F991
-:103D900000F0BBFA6F490020C86288626E49086073
-:103DA00062B6002010BDF3B5002501200007C06AEF
-:103DB00081B0C0430006000E04D168480068401C72
-:103DC00000D1012572B600F0BBF8002801D062B620
-:103DD00087E0EDF7D1F9EDF767FA614C614A002110
-:103DE0002368CB40DB071FD00346CB40DB0718D14D
-:103DF0004BB2002B07DA1E07360F083EB608B60096
-:103E0000B618F66904E09E08574FB600F6193668F2
-:103E10009B07DB0EDE4033069B0F012B04D0032BE8
-:103E200002D062B65148FEBD491C2029D8D3019C5E
-:103E300001204F49230001F0BDF914222424242439
-:103E4000242424240B0D1012142016181A1C1E2FC3
-:103E5000002400E00124C86314E00224FBE70324EB
-:103E6000F9E70424F7E70824F5E70924F3E70A242F
-:103E7000F1E70B24EFE70C24EDE70524EBE707243B
-:103E800000E00624D06901210002000AC9070843A6
-:103E9000D061002D04D009E062B601200003FEBD10
-:103EA0002C4D3448E862EDF7FFF9A8622A49324800
-:103EB0000860324902980860EDF7F6F9214600F0F3
-:103EC0000BFAFEF7AEF800F00DFC00F087FA01984F
-:103ED000EDF7B4F9040062B603D0FFF74FFF2046B8
-:103EE000FEBD0020FEBD10B5044600F029F80028F4
-:103EF00000D001202070002010BD21490860002062
-:103F0000704710B50C46102808D011280BD0122885
-:103F10000CD013280ED00120086010BD6168206805
-:103F2000FFF741FF0AE0FFF729FF07E02068FFF7EE
-:103F3000DAFF03E01249206808600020206010BD0D
-:103F400005480D490068884201D1012070470020D2
-:103F500070470000000500401C0100200010001008
-:103F600000E100E000ED00E000E400E001100000EE
-:103F70004000004000200000BEBAFECA2801002018
-:103F8000040000208107C90E002808DA0007000F8E
-:103F900008388008814A80008018C06904E08008E1
-:103FA0007F4A800080180068C8400006800F704774
-:103FB00010B5044600F0DBF8002813D02046FFF7C8
-:103FC000E1FFC0B200F0E1F800280DD07549E2062B
-:103FD0000B78D20E01209040002B08D04A68104385
-:103FE000486006E0704810BD6F48401C10BD6F4926
-:103FF0000860002010BD10B5044600F0B8F8002895
-:104000000BD06849E2060B78D20E01209040002BBD
-:1040100005D04A6882434A6004E0634810BD6349A2
-:1040200080310860002010BD70B50D46044600F0D8
-:104030009EF800280BD05E480068E206D20E0121EF
-:104040009140084000D001202860002070BD5648F3
-:1040500070BD10B5044600F08AF8002807D0E106CC
-:10406000C90E0120884052490860002010BD4E480A
-:1040700010BD10B5044600F07AF8002808D0E1061B
-:10408000C90E012088404A4980310860002010BDD7
-:10409000454810BD70B50D46044600F068F800288C
-:1040A00019D0284600F071F8002816D0A007C20EDB
-:1040B000FF209040A907090E9140002C10DA22073A
-:1040C000120F083A9308354A9B009B18DA6982431D
-:1040D0000A43DA610CE0344870BD3348401C70BDBF
-:1040E000A3082F4A9B009B181A6882430A431A6050
-:1040F000002070BD70B50C46054600F038F8002869
-:1041000005D02846FFF73EFF2070002070BD2648EE
-:1041100070BDBFF34F8F21492648C860BFF34F8F52
-:10412000FEE770B51F4C05462178012000290ED10D
-:10413000207072B600F0F8F81C4E8036316881436A
-:10414000616000F0F1F8C043306062B60020287072
-:10415000002070BD13490A78002A06D0002804D137
-:10416000124A48681060002008700020704710B59F
-:104170000446202805DA00F0D7F80121A1400842C2
-:1041800001D0002010BD012010BD012803D003285C
-:1041900001D00020704701207047000000ED00E0D2
-:1041A00000E400E02C0100200120000000E100E01C
-:1041B00000E200E00400FA05F8B504468007002597
-:1041C0000126002804DA5A48C563C66302208443E6
-:1041D000E00404D55748C563C66380148443600077
-:1041E00003D55548456080058443E00504D5534810
-:1041F000C563C66380158443A00404D55048C563D5
-:10420000C6634014844360042704C00FF90F88423A
-:1042100003D04CA1612000F0DCFEB80F0AD04E495B
-:10422000CD634E48C563C563CE63C663C6630320D2
-:104230008003844320050AD5494FFD632F20ECF706
-:10424000B3FFFE632F20ECF7AFFFF8148443002C7C
-:1042500003DAFFF765FD640064084248044203D0B6
-:1042600038A1902000F0B5FEF8BDF0B500210A4657
-:10427000FF230446CC40E4072AD04CB2E606F60EF3
-:104280000125B540384E3560384E3560002C11DAC6
-:1042900025072D0F083DAE08354DB6007619F56996
-:1042A000A407E70E1C46BC40A5431446BC4025436A
-:1042B000F5610DE0A6082F4DB60076193568A40704
-:1042C000E70E1C46BC40A5431446BC402543356060
-:1042D000491C2029CDD3F0BD70B5274C0D46206078
-:1042E000FFF76AFF2068FFF7C0FF2846EEF77AFD68
-:1042F000FDF7D6FAFDF782F9FFF712FDFDF7D5F8C5
-:10430000EEF7FEFB00F06AF870BD10B51A4C20689D
-:10431000FFF752FF2068FFF7A8FFFFF701FDEEF758
-:10432000E6FD0020206010BD1348006870470000C3
-:10433000C01F0040C0CF004000E50140C08F0040DA
-:10434000C0DF00407372635C736F635F636F6E66A0
-:1043500069672E6300000000C0EF0040C0FF00400E
-:10436000C0BF0040FEFF0FFC80E100E080E200E003
-:1043700000ED00E000E400E03401002070B500240E
-:1043800002460D4620462146002A1ED0012A04D0AE
-:10439000022A04D0032A1ED103E0012002E00220F9
-:1043A00013E003202B0000F005FF07160507090B9B
-:1043B0000D0F1600012108E0022106E0032104E0B0
-:1043C000042102E0052100E00621FDF7D9FE0028C6
-:1043D00001D0204670BD0724FBE70000B148002152
-:1043E00001708170704770B5AF4D01236B60AF4BAA
-:1043F0001C68002CFCD0002407E00E6806601E68D4
-:10440000002EFCD0001D091D641C9442F5D3002031
-:10441000686018680028FCD070BD70B5A14C0D46CE
-:104420006178884203D0A2A16C2000F0D2FD2B005D
-:1044300000F0C0FE094F0625254F4F4F4F464F0055
-:104440002078022803D09AA1702000F0C2FD03203A
-:104450002070A078022802D0012804D008E0A068CB
-:1044600000F0CEFB04E02269E168A068FFF7BBFF23
-:104470000020A070FDF724FE0420207070BDFDF721
-:10448000D4FE01466068FFF7F9F805462078022857
-:1044900003D087A1842000F09CFD894A89498A487D
-:1044A000954206D8401BC86086496078FEF737FB06
-:1044B00070BD854202D802224A71F3E7032003E06F
-:1044C000A0780028FAD10220FDF704FD00F0E0F802
-:1044D00070BD77A1AD2000F07CFD70BD70B50546C4
-:1044E000FDF7A3FE6F4C60602078012803D070A117
-:1044F000B42000F06EFD73490220087000220A719A
-:104500008D6003224A71704ACA6020706078FEF79D
-:1045100006FB70BD10B5634CA078002802D120784E
-:10452000002801D0112010BD6848FDF710FE607012
-:104530006078002803D001202070002010BD0320E7
-:1045400010BD10B50124020B64040121604BA04290
-:1045500002D29140186802E0203A58689140084021
-:1045600000D0012010BDF8B50E46910005464F1948
-:1045700014463F1F009100F054FB009980028919F6
-:10458000091FB14201D2012200E00022002C03D019
-:10459000FF2101318C4201D90920F8BD4D498D42DE
-:1045A00019D3AF4217D3854205D2874203D228469A
-:1045B0003043800701D01020F8BD8E420BD3002A73
-:1045C00009D12846FFF7BDFF002804D13846FFF780
-:1045D000B8FF002801D00F20F8BD3F483F490068D0
-:1045E000884205D0224631462846FFF7FCFE0FE000
-:1045F000FFF790FF0028EFD12A480121C6608560AF
-:10460000046181702046312148431430FFF766FF72
-:104610000020F8BD10B504462E48800A84420BD312
-:1046200000F0FFFAA04201D8102010BDA0020446FD
-:10463000FFF787FF002801D00F2010BD264827492B
-:104640000068884203D0204600F0DAFA0AE0FFF75B
-:1046500061FF0028F1D11348022184608170204855
-:10466000FFF73CFF002010BD1A48010B01208840D5
-:10467000401E704700B50B460246FFF7F5FF10429B
-:1046800001D00F2000BD124802604360002000BD31
-:1046900010B5044C6078FDF7AEFD00202070A070CE
-:1046A00010BD00003801002000E5014000E4014099
-:1046B0007372635C736F635F666C6173682E630013
-:1046C000307500006C1D0020D0FB01001B44010070
-:1046D00000060040006001001C010020BEBAFECAB6
-:1046E00010540000F74805218170002101704170CD
-:1046F000C1708160704710B5F3490A78022A07D06B
-:10470000CA681018C860C8689638FEF76FFF10BDF9
-:104710008A68101888608868F6E70378EB49EC4AE5
-:10472000002B02D0012B10D014E00379002B01D014
-:10473000012B0FD14379002B01D0012B0AD18368C3
-:10474000643B8B4206D2C06810E00379002B03D093
-:10475000012B01D0002070474379002B01D0012BA1
-:10476000F8D1C368643B8B42F4D280689042F1D8A0
-:1047700001207047F8B504460226FEF7BDFB00682D
-:10478000002803D0D3A1BE2000F023FC0127CD4D8B
-:10479000002C08D02078002817D0012805D0022846
-:1047A00011D0032813D02F710DE06068C82808D3FA
-:1047B000FEF792FF002804D06068FFF79CFF0126F7
-:1047C00003E0002601E000F0F9F93046F8BD287852
-:1047D0000028F8D16068FFF7A0FF0028E3D06068E8
-:1047E0000078002826D0A878042803D0B9A1F820A2
-:1047F00000F0EFFBB44F00203870606800790128AA
-:1048000000D00020387160684079002837D003203C
-:10481000787160688168E868FDF79EFFB86060683D
-:10482000C0689630F8600320A870A749E878FEF7C2
-:1048300076F9C8E7A4480221017061680979012965
-:1048400019D00021017161684979002915D003212F
-:10485000417161688968963181606168C968C16029
-:10486000C068984C14346060FDF7DFFC20606F7006
-:104870000220A870A7E70321E4E70221E8E702206D
-:10488000C6E7F8B58F4C0D46E178884204D0FF208A
-:1048900090A11A3000F09DFB28468A4F0025012682
-:1048A0001437030000F086FC090612375A7C8D97F6
-:1048B000C4A0C400A078032807D0A078022804D0A0
-:1048C000FF2084A11E3000F084FBF8BDA0780328EF
-:1048D00007D0A078022804D0FF207EA1223000F06B
-:1048E00078FB0420A07025712078002810D1FFF7F4
-:1048F00002FFE078FDF74FFFE0607D49886A7D4A5E
-:10490000024022617B4AD24310408862002050E07E
-:1049100000F054F9F8BDA078032807D0A078022849
-:1049200004D0FF206BA1453000F053FB2078002815
-:1049300002D000F04FF9F8BDA07803281FD1042061
-:104940002AE0091A6048C1600146E078FEF7E7F8FE
-:10495000F8BD0420FDF7BEFAA570F8BDA0780328C5
-:1049600007D0A078022804D0FF205AA1663000F0BA
-:1049700030FB20780028DCD1A07803280BD0FDF78D
-:1049800054FC01463868FEF779FE0028E1DB7968BF
-:104990008142DEDBD5E70520FDF79CFAA670F8BD65
-:1049A000A078042804D0FF204AA1873000F011FB32
-:1049B0000220A1688847FFF7DDFEFF260546C036C6
-:1049C00042E0A078042804D0FF2042A18C3000F0FF
-:1049D00000FB0120EDE7A078042899D0FF203DA13D
-:1049E000913000F0F6FA93E7A07804280AD06078B6
-:1049F000002802D0A078022804D0FF2035A19630EC
-:104A000000F0E7FA2078002893D12079002804D01C
-:104A10000620FDF75FFA2571C0E76078002805D011
-:104A20002949E078FEF77BF86570F8BD0720B3E709
-:104A3000FF2028A1B13046E7002D0AD0012D06D075
-:104A400024A1304600F0C5FA022DF5D1F8BD0420AE
-:104A500000E00320A1688847FFF78CFE0546F3E7D6
-:104A600070B5050005D0174CA078052803D011209B
-:104A700070BD102070BD2048FDF769FBE070E07844
-:104A8000002803D0A5600020A07070BD032070BD79
-:104A900010B50C480178002901D0112010BD817893
-:104AA00005292BD0817801292AD08178002927D0A7
-:104AB000012101708178012922D0807800281FD03F
-:104AC00020E000004C0100207C1D00203D860100FC
-:104AD000FF1FA1077372635C736F635F7261646928
-:104AE0006F5F74696D65736C6F742E6300000000F6
-:104AF0000005004002810080834801000F2010BDA6
-:104B000000F068F8002010BDF8B5394E0446B078C2
-:104B1000002801D001280DD1002C0DD02046FFF730
-:104B2000FCFD00280AD02078324D002808D0B0784B
-:104B3000012823D00F20F8BD1020F8BD0720F8BDB4
-:104B400002272F702079012814D000202871607965
-:104B5000002811D003206871A0689630A860E06832
-:104B6000E860E868224C14346060FDF75EFB20606A
-:104B7000B77019E00320E9E70220ECE70020287075
-:104B80002079012816D0002028716079002813D0E0
-:104B900003206871A168F068FDF7DEFDA860E06899
-:104BA0009630E8600320B0701249F078FDF7B7FF47
-:104BB0000020F8BD0320E7E70220EAE710B50E4821
-:104BC000816A0E4A11400A4A126911438162FDF757
-:104BD00077FA10BD10B5064CE078FDF70CFB082005
-:104BE000FDF778F90520A07000202070607010BDDE
-:104BF0004C0100207C1D002000050040FD7EFF7F51
-:104C00000A4A022151600A490B68002BFCD09060CF
-:104C100008680028FCD00020506008680028FCD0FC
-:104C200070470120000740697047000000E501401F
-:104C300000E4014070477047704770477047034673
-:104C400010B50B439B070FD1042A0DD308C810C918
-:104C5000121FA342F8D018BA21BA884201D9012004
-:104C600010BD0020C04310BD002A03D0D30703D0DD
-:104C7000521C07E0002010BD03780C78401C491C32
-:104C80001B1B07D103780C78401C491C1B1B01D14E
-:104C9000921EF1D1184610BDF8B5042A2CD3830713
-:104CA00012D00B78491C0370401C521E83070BD096
-:104CB0000B78491C0370401C521E830704D00B78EC
-:104CC000491C0370401C521E8B079B0F05D0C91A4C
-:104CD000DF002023DE1B08C90AE0ECF775FAF8BDF7
-:104CE0001D4608C9FD401C46B4402C4310C0121F8D
-:104CF000042AF5D2F308C91A521EF0D40B78491CC5
-:104D00000370401C521EEAD40B78491C0370401CEF
-:104D1000521EE4D409780170F8BD01E004C0091FF7
-:104D20000429FBD28B0701D50280801CC90700D063
-:104D30000270704700290BD0C30702D00270401CDC
-:104D4000491E022904D3830702D50280801C891ED4
-:104D5000E3E70022EEE70022DFE70378C278194696
-:104D6000437812061B0219438378C0781B04194349
-:104D700011430902090A000608437047020A087035
-:104D80004A70020C8A70020ECA7070470022030932
-:104D90008B4273D3030A8B4258D3030B8B423CD311
-:104DA000030C8B4221D312E003460B437FD4002235
-:104DB00043088B4274D303098B425FD3030A8B42AF
-:104DC00044D3030B8B4228D3030C8B420DD3FF2219
-:104DD000090212BA030C8B4202D31212090265D0E7
-:104DE000030B8B4219D300E0090AC30B8B4201D39A
-:104DF000CB03C01A5241830B8B4201D38B03C01AE1
-:104E00005241430B8B4201D34B03C01A5241030B57
-:104E10008B4201D30B03C01A5241C30A8B4201D308
-:104E2000CB02C01A5241830A8B4201D38B02C01AB3
-:104E30005241430A8B4201D34B02C01A5241030A2A
-:104E40008B4201D30B02C01A5241CDD2C3098B420F
-:104E500001D3CB01C01A524183098B4201D38B018C
-:104E6000C01A524143098B4201D34B01C01A52412F
-:104E700003098B4201D30B01C01A5241C3088B4274
-:104E800001D3CB00C01A524183088B4201D38B005F
-:104E9000C01A524143088B4201D34B00C01A524101
-:104EA000411A00D201465241104670475DE0CA0FD8
-:104EB00000D04942031000D34042534000229C4698
-:104EC00003098B422DD3030A8B4212D3FC228901A2
-:104ED00012BA030A8B420CD3890192118B4208D378
-:104EE000890192118B4204D389013AD0921100E0DA
-:104EF0008909C3098B4201D3CB01C01A52418309EE
-:104F00008B4201D38B01C01A524143098B4201D31A
-:104F10004B01C01A524103098B4201D30B01C01A45
-:104F20005241C3088B4201D3CB00C01A52418308BF
-:104F30008B4201D38B00C01A5241D9D243088B4215
-:104F400001D34B00C01A5241411A00D201466346B8
-:104F500052415B10104601D34042002B00D549421C
-:104F6000704763465B1000D3404201B50020C04645
-:104F7000C04602BD704770477047704710B500F0DB
-:104F800059F810BD30B58C180278401C13071B0F60
-:104F900001D10378401C120906D10278401C03E0BD
-:104FA0000578401C0D70491C5B1EF9D101E00B70A7
-:104FB000491C521EFBD1A142E6D3002030BD0000A7
-:104FC00001231B68134B1860134B1960134B1A60B5
-:104FD0007047134A134B13607246053AF0E7114AC3
-:104FE0000F4B1B689A420ED10D4B002018600198A0
-:104FF0000D4B04B598470CBC9E460246029800999A
-:105000000A4B1B68184706980599094B1B68DB6813
-:105010001847000070010020740100207801002072
-:1050200068010020EFBEADDE5539010028010020E7
-:10503000040000201D481E497047FFF7FBFFECF7F6
-:105040007DF800BD01200007C06AC0B2FF2804D16E
-:10505000184819490968884202D01848184901605F
-:10506000184819490968884203D1184A13605B68D7
-:10507000184700BD20BFFDE7124813490968884260
-:105080000ED1134B18680B498842F3D080F308887F
-:105090001049884204DD1048026802210A43026078
-:1050A0000E4880470E4880470E480047901D00205C
-:1050B000901D0020FFFFFFFF001000102C05004096
-:1050C0000800000000100000000000200400002084
-:1050D0000060010000200020240500406B39010021
-:1050E00045500100C14F01001348704502D1EFF354
-:1050F000098101E0EFF308818869023800781028FF
-:1051000014DB202810DB23280BDB0C4A12680C4B25
-:105110009A4203D1602804DB0A4A10470220086043
-:105120007047094A10470000084A1047084A1268A9
-:105130002C32126810470000FDFFFFFF1C01002009
-:10514000BEBAFECAAD1200002B3A0100033F0100B7
-:10515000040000200D4B0E4908470E4B0C49084730
-:105160000D4B0B4908470D4B094908470C4B0849A3
-:1051700008470C4B064908470B4B054908470B4BA2
-:10518000034908470A4B024908470000052E000062
-:10519000E13D0000BD2F0000873C0000353C0000D1
-:1051A000E9390000B912000063170000493D000012
-:1051B000AB2B000030B47446641E2578641CAB42EF
-:1051C00000D21D46635D5B00E31830BC1847000049
-:1051D00002490020C861203908727047E0030020AE
-:1051E00000020207FFFFFFFF0000FFFF01020408AB
-:1051F00010204080555555D6BE898E00F401FA0026
-:10520000960064004B0032001E00140001000300F1
-:10521000000001000000000000000000000000008D
-:1052200000000000870000000000000000000000F7
-:105230000000000000000203040500000E0F000043
-:10524000705201000800002010000000041100004E
-:10525000805201001800002064010000844F01000A
-:10526000A45201007C010020141C00002011000049
-:105270000249022208681042FCD0704700E200E0B8
-:10528000E1078F56FF9900CD29022B01360100015D
-:1052900000EC3720FB349B5F8074800010027001AB
-:0452A000E4C54F0111
-:00000001FF
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/doc/ble_api.dox	Fri Oct 17 14:15:08 2014 +0100
@@ -0,0 +1,1334 @@
+/**
+ * @addtogroup BLE_COMMON 
+ * @{
+ * @defgroup BLE_COMMON_MSC Message Sequence Charts
+ * @{
+ * @defgroup BLE_COMMON_IRQ_EVT_MSC Interrupt-driven Event Retrieval
+ * @msc
+ * hscale = "1.5";
+ * APP,SD;
+ * |||;
+ * APP=>SD [label = "sd_softdevice_enable(clock, assertion_handler);"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * APP=>SD [label = "sd_nvic_EnableIRQ(SD_EVENT_IRQn)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * |||;
+ * APP rbox SD [label="Application runs and uses SD API"];
+ * |||;
+ * SD rbox SD [label="Event Available for the App"];
+ * |||;
+ * APP<-SD [label = "SD_EVENT_IRQn", textcolor="#800080", linecolor="#800080"];
+ * APP=>APP [label = "SD_EVENT_IRQHandler()"];
+ * APP=>SD [label = "sd_ble_evt_get(buffer);"];
+ * APP<<SD [label = "{NRF_SUCCESS, event}"];
+ * |||;
+ * @endmsc
+ *
+ * @defgroup BLE_COMMON_THREAD_EVT_MSC Thread Mode Event Retrieval
+ * @msc
+ * hscale = "1.5";
+ * APP,SD;
+ * |||;
+ * APP=>SD [label = "sd_softdevice_enable(clock, assertion_handler);"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * |||;
+ * APP=>SD [label = "sd_app_evt_wait(void);"];
+ * APP rbox APP [label="App Thread Mode blocked, CPU in low power mode"];
+ * |||;
+ * ...;
+ * |||;
+ * SD rbox SD [label="Event Available for the App"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * APP=>SD [label = "sd_ble_evt_get(buffer);"];
+ * APP<<SD [label = "{NRF_SUCCESS, event}"];
+ * APP=>SD [label = "sd_app_evt_wait(void);"];
+ * APP rbox APP [label="App Thread Mode blocked, CPU in low power mode"];
+ * |||;
+ * ...;
+ * |||;
+ * SD rbox SD [label="Event Available for the App"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * APP=>SD [label = "sd_ble_evt_get(buffer);"];
+ * APP<<SD [label = "{NRF_SUCCESS, event}"];
+ * APP=>SD [label = "sd_app_evt_wait(void);"];
+ * APP rbox APP [label="App Thread Mode blocked, CPU in low power mode"];
+ * |||;
+ * ...;
+ * |||;
+ * @endmsc
+ *
+ * @defgroup BLE_COMMON_APP_BUFF_MSC App Buffer Management
+ * @msc
+ * hscale = "1.5";
+ * APP,SD,PEER;
+ * |||;
+ * APP=>SD [label = "sd_ble_tx_buffer_count_get();"];
+ * APP<<SD [label = "{NRF_SUCCESS, N}"];
+ * APP rbox APP [label="available = N"];
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * APP=>SD [label = "sd_ble_gattc_write(handle, value)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * APP rbox APP [label="available--"];
+ * SD:>PEER [label = "ATT Write Command", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_EVT_TX_COMPLETE {1}"];
+ * APP rbox APP [label="available += 1"];
+ * |||;
+ * ...;
+ * |||;
+ * APP=>SD [label = "sd_ble_gatts_hvx(NOTIFICATION, app_value)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * APP rbox APP [label="available--"];
+ * SD:>PEER [label = "ATT Handle Value Notification", textcolor="#000080", linecolor="#000080"];
+ * APP=>SD [label = "sd_ble_gatts_hvx(NOTIFICATION, app_value)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * APP rbox APP [label="available--"];
+ * SD:>PEER [label = "ATT Handle Value Notification", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_EVT_TX_COMPLETE {2}"];
+ * APP rbox APP [label="available += 2"];
+ * |||;
+ * ...;
+ * |||;
+ * APP rbox PEER [label="Terminate Connection"];
+ * |||;
+ * APP rbox APP [label="available = N"];
+ * |||;
+ * @endmsc
+ * @}
+ * @}
+ */
+
+/**
+ * @addtogroup BLE_GAP 
+ * @{
+ * @defgroup BLE_GAP_MSC Message Sequence Charts
+ * @{
+ * @defgroup BLE_GAP_ADV_MSC GAP Advertisement
+ * @msc
+ * hscale = "1.5";
+ * APP,SD,SCANNERS;
+ * |||;
+ * APP=>SD [label = "sd_ble_gap_address_set(addr)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * APP=>SD [label = "sd_ble_gap_adv_data_set(adv, sr)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * APP=>SD [label = "sd_ble_gap_adv_start(params)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * |||;
+ * SD->SCANNERS [label = "ADV packet", textcolor="#000080", linecolor="#000080"];
+ * SD->SCANNERS [label = "ADV packet", textcolor="#000080", linecolor="#000080"];
+ * SD->SCANNERS [label = "ADV packet", textcolor="#000080", linecolor="#000080"];
+ * ...;
+ * SD->SCANNERS [label = "ADV packet", textcolor="#000080", linecolor="#000080"];
+ * |||;
+ * --- [label = " Variant #1 App Stops Advertisement "];
+ * APP=>SD [label = "sd_ble_gap_adv_stop()"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * |||;
+ * --- [label = " Variant #2 Advertisement Timeout "];
+ * APP<<=SD [label = "BLE_GAP_EVT_TIMEOUT"];
+ * @endmsc
+ *
+ * @defgroup BLE_GAP_CONN_MSC GAP Connection Establishment and Termination
+ * @msc
+ * hscale = "1.5";
+ * APP,SD,CENTRAL;
+ * |||;
+ * APP rbox CENTRAL [label="Start Advertising"];
+ * |||;
+ * SD<:>CENTRAL [label = "Connection Establishment", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_CONNECTED"];
+ * |||;
+ * --- [label = " Variant #1 Local Disconnection "];
+ * APP=>SD [label = "sd_ble_gap_disconnect(reason)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>CENTRAL [label = "Connection Termination", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_DISCONNECTED {reason}"];
+ * |||;
+ * --- [label = " Variant #2 Remote Disconnection "];
+ * SD<:CENTRAL [label = "Connection Termination", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_DISCONNECTED {reason}"];
+ * @endmsc
+ *
+ * @defgroup BLE_GAP_CPU_MSC GAP Connection Parameter Update
+ * @msc
+ * hscale = "1.5";
+ * APP,SD,CENTRAL;
+ * |||;
+ * APP rbox CENTRAL [label="Connection Established with conn. params. CP#1"];
+ * |||;
+ * APP=>SD [label = "sd_ble_gap_conn_param_update(CP#2)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>CENTRAL [label = "L2CAP CPU Request", textcolor="#000080", linecolor="#000080"];
+ * |||;
+ * --- [label = " Variant #1 Central Accepts "];
+ * |||;
+ * SD<:CENTRAL [label = "L2CAP CPU Response: Accepted", textcolor="#000080", linecolor="#000080"];
+ * |||;
+ * SD<:CENTRAL [label = "Connection Update", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_CONN_PARAM_UPDATE {CP#2}"];
+ * |||;
+ * --- [label = " Variant #2 Central Rejects "];
+ * |||;
+ * SD<:CENTRAL [label = "L2CAP CPU Response: Rejected", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_CONN_PARAM_UPDATE {CP#1}"];
+ * --- [label = " Variant #3 Central Ignores "];
+ * |||;
+ * ...;
+ * |||;
+ * SD box SD [label="Timeout"];
+ * APP<<=SD [label = "BLE_GAP_EVT_CONN_PARAM_UPDATE {CP#1}"];
+ * @endmsc
+ *
+ * @defgroup BLE_GAP_RSSI_MSC GAP RSSI
+ * @msc
+ * hscale = "1.5";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * APP=>SD [label = "sd_ble_gap_rssi_start()"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * |||;
+ * SD<-PEER [label = "RSSI Sample", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_RSSI_CHANGED {RSSI#1}"];
+ * |||;
+ * SD<-PEER [label = "RSSI Sample", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_RSSI_CHANGED {RSSI#2}"];
+ * |||;
+ * SD<-PEER [label = "RSSI Sample", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_RSSI_CHANGED {RSSI#3}"];
+ * |||;
+ * APP=>SD [label = "sd_ble_gap_rssi_stop()"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * @endmsc
+ *
+ * @defgroup BLE_GAP_PAIRING_JW_MSC GAP Pairing: Just Works
+ * @msc
+ * hscale = "2";
+ * APP,SD,CENTRAL;
+ * |||;
+ * APP rbox CENTRAL [label="Connection Established"];
+ * |||;
+ * SD<:CENTRAL [label = "SMP Pairing Request", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_SEC_PARAMS_REQUEST {central_params: no_bond, no_mitm, no_io_caps}"];
+ * APP=>SD [label = "sd_ble_gap_sec_params_reply(SUCCESS, periph_params: no_bond, no_mitm, no_io_caps)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>CENTRAL [label = "SMP Pairing Response", textcolor="#000080", linecolor="#000080"];
+ * |||;
+ * SD abox CENTRAL [label="SMP Pairing Phase 2", textbgcolor="#7f7fff"];
+ * |||;
+ * APP<<=SD [label = "BLE_GAP_EVT_AUTH_STATUS {SUCCESS}"];
+ * APP rbox CENTRAL [label = "Encrypted with STK"];
+ * APP<<=SD [label = "BLE_GAP_EVT_CONN_SEC_UPDATE {ENC_NO_MITM}"];
+ * @endmsc
+ *
+ * @defgroup BLE_GAP_BONDING_JW_MSC GAP Bonding: Just Works
+ * @msc
+ * hscale = "2";
+ * APP,SD,CENTRAL;
+ * |||;
+ * APP rbox CENTRAL [label="Connection Established"];
+ * |||;
+ * SD<:CENTRAL [label = "SMP Pairing Request", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_SEC_PARAMS_REQUEST {central_params: bond, no_mitm, no_io_caps}"];
+ * APP=>SD [label = "sd_ble_gap_sec_params_reply(SUCCESS, periph_params: bond, no_mitm, no_io_caps)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>CENTRAL [label = "SMP Pairing Response", textcolor="#000080", linecolor="#000080"];
+ * |||;
+ * SD abox CENTRAL [label="SMP Pairing Phase 2", textbgcolor="#7f7fff"];
+ * |||;
+ * APP rbox CENTRAL [label = "Encrypted with STK"];
+ * APP<<=SD [label = "BLE_GAP_EVT_CONN_SEC_UPDATE {ENC_NO_MITM}"];
+ * |||;
+ * SD abox CENTRAL [label="SMP Pairing Phase 3", textbgcolor="#7f7fff"];
+ * |||;
+ * APP<<=SD [label = "BLE_GAP_EVT_AUTH_STATUS {SUCCESS, periph_keys}"];
+ * APP rbox APP [label = "Store Peripheral Keys"];
+ * @endmsc
+ *
+ * @defgroup BLE_GAP_BONDING_PK_PERIPH_MSC GAP Bonding: Passkey Entry, Peripheral displays
+ * @msc
+ * hscale = "2";
+ * APP,SD,CENTRAL;
+ * |||;
+ * APP rbox CENTRAL [label="Connection Established"];
+ * |||;
+ * SD<:CENTRAL [label = "SMP Pairing Request", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_SEC_PARAMS_REQUEST {central_params: bond, mitm, keyboard}"];
+ * APP=>SD [label = "sd_ble_gap_sec_params_reply(SUCCESS, periph_params: bond, mitm, display)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>CENTRAL [label = "SMP Pairing Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_PASSKEY_DISPLAY {passkey}"];
+ * APP rbox APP [label="Passkey displayed to the user"];
+ * |||;
+ * SD abox CENTRAL [label="SMP Pairing Phase 2", textbgcolor="#7f7fff"];
+ * |||;
+ * APP rbox CENTRAL [label = "Encrypted with STK"];
+ * APP<<=SD [label = "BLE_GAP_EVT_CONN_SEC_UPDATE {ENC_MITM}"];
+ * |||;
+ * SD abox CENTRAL [label="SMP Pairing Phase 3", textbgcolor="#7f7fff"];
+ * |||;
+ * APP<<=SD [label = "BLE_GAP_EVT_AUTH_STATUS {SUCCESS, periph_keys}"];
+ * APP rbox APP [label = "Store Peripheral Keys"];
+ * @endmsc
+ *
+ * @defgroup BLE_GAP_BONDING_PK_CENTRAL_OOB_MSC GAP Bonding: Passkey Entry (Central display) or OOB MSC
+ * @msc
+ * hscale = "2";
+ * APP,SD,CENTRAL;
+ * |||;
+ * APP rbox CENTRAL [label="Connection Established"];
+ * |||;
+ * SD<:CENTRAL [label = "SMP Pairing Request", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_SEC_PARAMS_REQUEST {central_params: bond, mitm, display}"];
+ * APP=>SD [label = "sd_ble_gap_sec_params_reply(SUCCESS, periph_params: bond, mitm, keyboard)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>CENTRAL [label = "SMP Pairing Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_AUTH_KEY_REQUEST {type}"];
+ * APP rbox APP [label="User enters Passkey or data received Out Of Band"];
+ * APP=>SD [label = "sd_ble_gap_auth_key_reply(passkey or OOB)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * |||;
+ * SD abox CENTRAL [label="SMP Pairing Phase 2", textbgcolor="#7f7fff"];
+ * |||;
+ * APP rbox CENTRAL [label = "Encrypted with STK"];
+ * APP<<=SD [label = "BLE_GAP_EVT_CONN_SEC_UPDATE {ENC_MITM}"];
+ * |||;
+ * SD abox CENTRAL [label="SMP Pairing Phase 3", textbgcolor="#7f7fff"];
+ * |||;
+ * APP<<=SD [label = "BLE_GAP_EVT_AUTH_STATUS {SUCCESS, periph_keys}"];
+ * APP rbox APP [label = "Store Peripheral Keys"];
+ * @endmsc
+ *
+ * @defgroup BLE_GAP_BONDING_STATIC_PK_PERIPHERAL GAP Bonding: Passkey Entry (Peripheral uses static passkey) MSC
+ * @msc
+ * hscale = "2";
+ * APP,SD,CENTRAL;
+ * |||;
+ * APP=>SD [label = "sd_ble_opt_set(opt_id = BLE_GAP_OPT_PASSKEY, p_opt->p_passkey=passkey)"];
+ * APP rbox CENTRAL [label="Connection Established"];
+ * |||;
+ * SD<:CENTRAL [label = "SMP Pairing Request", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_SEC_PARAMS_REQUEST {central_params: bond, mitm, keyboard}"];
+ * APP=>SD [label = "sd_ble_gap_sec_params_reply(SUCCESS, periph_params: bond, mitm, io_caps = display)"];
+ *
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>CENTRAL [label = "SMP Pairing Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_PASSKEY_DISPLAY {passkey}"];
+ * APP rbox APP [label="Passkey displayed to the user"];
+ * |||;
+ * SD abox CENTRAL [label="SMP Pairing Phase 2", textbgcolor="#7f7fff"];
+ * |||;
+ * APP rbox CENTRAL [label = "Encrypted with STK"];
+ * APP<<=SD [label = "BLE_GAP_EVT_CONN_SEC_UPDATE {ENC_MITM}"];
+ * |||;
+ * SD abox CENTRAL [label="SMP Pairing Phase 3", textbgcolor="#7f7fff"];
+ * |||;
+ * APP<<=SD [label = "BLE_GAP_EVT_AUTH_STATUS {SUCCESS, periph_keys}"];
+ * APP rbox APP [label = "Store Peripheral Keys"];
+ * @endmsc
+ *
+ * @defgroup BLE_GAP_SEC_MSC GAP Security Establishment using stored keys
+ * @msc
+ * hscale = "1.5";
+ * APP,SD,CENTRAL;
+ * |||;
+ * APP rbox CENTRAL [label="Connection Established"];
+ * |||;
+ * SD<:CENTRAL [label = "LL Encryption Request", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_SEC_INFO_REQUEST {addr, div}"];
+ * |||;
+ * --- [label = " Variant #1 App Replies with Keys "];
+ * |||;
+ * APP rbox APP [label = "Load Peripheral Keys"];
+ * APP=>SD [label = "sd_ble_gap_sec_info_reply(div, LTK)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>CENTRAL [label = "LL Encryption Response", textcolor="#000080", linecolor="#000080"];
+ * APP rbox CENTRAL [label = "Encrypted with LTK"];
+ * APP<<=SD [label = "BLE_GAP_EVT_CONN_SEC_UPDATE"];
+ * |||;
+ * --- [label = " Variant #2 App Replies without Keys "];
+ * |||;
+ * APP=>SD [label = "sd_ble_gap_sec_info_reply(NULL)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>CENTRAL [label = "LL Reject Ind: Pin or Key Missing", textcolor="#000080", linecolor="#000080"];
+ * APP rbox CENTRAL [label = "Link Not Encrypted"];
+ * @endmsc
+ *
+ * @defgroup BLE_GAP_PERIPH_SEC_MSC GAP Peripheral Initiated Security Establishment
+ * @msc
+ * hscale = "1.5";
+ * APP,SD,CENTRAL;
+ * |||;
+ * APP rbox CENTRAL [label="Connection Established"];
+ * |||;
+ * APP=>SD [label = "sd_ble_gap_authenticate(params)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>CENTRAL [label = "SMP Security Request", textcolor="#000080", linecolor="#000080"];
+ * |||;
+ * --- [label = " Variant #1 Central initiates Security Establishment "];
+ * |||;
+ * APP rbox CENTRAL [label="Encryption or Pairing/Bonding initiated by Central"];
+ * |||;
+ * --- [label = " Variant #2 Central ignores "];
+ * |||;
+ * ...;
+ * |||;
+ * APP<<=SD [label = "BLE_GAP_EVT_TIMEOUT"];
+ * |||;
+ * @endmsc
+ *
+ * @defgroup BLE_GAP_PAIRING_KS_OUT_OF_RANGE_MSC GAP Failed Pairing: Keysize out of supported range
+ * This occurs if the min key size offered by the peer is above 16, or max key size below 7.
+ * @msc
+ * hscale = "2";
+ * APP,SD,CENTRAL;
+ * |||;
+ * APP rbox CENTRAL [label="Connection Established"];
+ * |||;
+ * SD<:CENTRAL [label = "SMP Pairing Request", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_AUTH_STATUS {auth_status: Invalid params, error_src: local}"];
+ * SD:>CENTRAL [label = "SMP Pairing failed", textcolor="#000080", linecolor="#000080"];
+ * @endmsc
+ *
+ * @defgroup BLE_GAP_PAIRING_KS_TOO_SMALL_MSC GAP Failed Pairing: Keysize too small
+ * This occurs if the max key size offered by the peer is below the min key size specified by
+ * the app.
+ * @msc
+ * hscale = "2";
+ * APP,SD,CENTRAL;
+ * |||;
+ * APP rbox CENTRAL [label="Connection Established"];
+ * |||;
+ * SD<:CENTRAL [label = "SMP Pairing Request", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_SEC_PARAMS_REQUEST"];
+ * APP=>SD [label = "sd_ble_gap_sec_params_reply(SUCCESS)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>CENTRAL [label = "SMP Pairing Response", textcolor="#000080", linecolor="#000080"];
+ * SD<:CENTRAL [label = "SMP Pairing Confirm", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_AUTH_STATUS {auth_status: Enc key size, error_src: local}"];
+ * SD:>CENTRAL [label = "SMP Pairing failed", textcolor="#000080", linecolor="#000080"];
+ * @endmsc
+ *
+ * @defgroup BLE_GAP_PAIRING_APP_ERROR_MSC GAP Failed Pairing: Pairing aborted by the application
+ * When the application detects that the pairing should not be performed, for example an
+ * insufficient IO combination, it can use sd_ble_gap_sec_params_reply() to send
+ * SMP Pairing failed to the peer.
+ *
+ * When the stack handles the response from the application it will also validate 
+ * the passkey (SMP_STC_PASSKEY_ENTRY_FAILED). If any error is detected it will be
+ * reported when sd_ble_gap_sec_params_reply() is called. 
+ * @msc
+ * hscale = "2";
+ * APP,SD,CENTRAL;
+ * |||;
+ * APP rbox CENTRAL [label="Connection Established"];
+ * |||;
+ * SD<:CENTRAL [label = "SMP Pairing Request", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_SEC_PARAMS_REQUEST"];
+ * SD abox APP [label="Stack looks for errors", textbgcolor="#7f7fff"];
+ * APP=>SD [label = "sd_ble_gap_sec_params_reply(<code from application>)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>CENTRAL [label = "SMP Pairing failed", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_AUTH_STATUS {auth_status: <code from application>, error_src: local}"];
+ * @endmsc
+ *
+ * @defgroup BLE_GAP_PAIRING_CONFIRM_FAIL_MSC GAP Failed Pairing: Confirm failed
+ * This occurs if the random value doesn't match, usually because the user entered a wrong pin
+ * or out of band data was missing.
+ * @msc
+ * hscale = "2";
+ * APP,SD,CENTRAL;
+ * |||;
+ * APP rbox CENTRAL [label="Connection Established"];
+ * |||;
+ * SD<:CENTRAL [label = "SMP Pairing Request", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_SEC_PARAMS_REQUEST {central_params: mitm, display}"];
+ * APP=>SD [label = "sd_ble_gap_sec_params_reply(SUCCESS, periph_params: mitm, keyboard)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>CENTRAL [label = "SMP Pairing Response", textcolor="#000080", linecolor="#000080"];
+ * SD<:CENTRAL [label = "SMP Pairing Confirm", textcolor="#000080", linecolor="#000080"];
+ * SD:>CENTRAL [label = "SMP Pairing Confirm", textcolor="#000080", linecolor="#000080"];
+ * SD<:CENTRAL [label = "SMP Pairing Random", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_AUTH_STATUS {auth_status: Confirm value, error_src: local}"];
+ * SD:>CENTRAL [label = "SMP Pairing failed", textcolor="#000080", linecolor="#000080"];
+ * @endmsc
+ *
+ * @defgroup BLE_GAP_PAIRING_REMOTE_PAIRING_FAIL_MSC GAP Failed Pairing: Pairing failed from master
+ * SMP Pairing Failed may be sent from the master at various times. The application should
+ * prepare for this and gracefully handle the event.
+ * @msc
+ * hscale = "2";
+ * APP,SD,CENTRAL;
+ * |||;
+ * APP rbox CENTRAL [label="Connection Established"];
+ * |||;
+ * SD<:CENTRAL [label = "SMP Pairing Request", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_SEC_PARAMS_REQUEST"];
+ * APP=>SD [label = "sd_ble_gap_sec_params_reply(SUCCESS)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>CENTRAL [label = "SMP Pairing Response", textcolor="#000080", linecolor="#000080"];
+ * SD<:CENTRAL [label = "SMP Pairing Failed", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_AUTH_STATUS {auth_status: <remote_reason>, error_src: remote}"];
+ * @endmsc
+ *
+ * @defgroup BLE_GAP_PAIRING_TIMEOUT_MSC GAP Failed Pairing: Timeout
+ * This occurs if the central device doesn't continue the pairing sequence within 30 seconds.
+ * @msc
+ * hscale = "2";
+ * APP,SD,CENTRAL;
+ * |||;
+ * APP rbox CENTRAL [label="Connection Established"];
+ * |||;
+ * SD<:CENTRAL [label = "SMP Pairing Request", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GAP_EVT_SEC_PARAMS_REQUEST"];
+ * APP=>SD [label = "sd_ble_gap_sec_params_reply(SUCCESS)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>CENTRAL [label = "SMP Pairing Response", textcolor="#000080", linecolor="#000080"];
+ * ---  [ label = "Wait 30 sec" ];
+ * APP<<=SD [label = "BLE_GAP_EVT_AUTH_STATUS {auth_status: Timeout, error_src: local}"];
+
+ * @endmsc
+ *
+ * @defgroup BLE_GAP_SECURITY_TIMEOUT_MSC GAP Authenticate request: Timeout
+ * This occurs if the central device doesn't continue the pairing sequence after
+ * the security procedure timeout.
+ * @msc
+ * hscale = "2";
+ * APP,SD,CENTRAL;
+ * |||;
+ * APP rbox CENTRAL [label="Connection Established"];
+ * |||;
+ * APP=>SD [label = "sd_ble_gap_authenticate(..., ble_gap_sec_params_t*)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>CENTRAL [label = "Security Request", textcolor="#000080", linecolor="#000080"];
+  ---  [ label = "After req_timeout (in ble_gap_sec_params_t)" ];
+ * APP<<=SD [label = "BLE_GAP_EVT_TIMEOUT {error_src: BLE_GAP_TIMEOUT_SRC_SECURITY_REQUEST}"];
+ * @endmsc
+ *
+ * @}
+ * @}
+ */
+
+/**
+ * @addtogroup BLE_GATTC 
+ * @{
+ * @defgroup BLE_GATTC_MSC Message Sequence Charts
+ * @{
+ * @defgroup BLE_GATTC_PRIM_SRVC_DISC_MSC GATTC Primary Service Discovery
+ * @msc
+ * hscale = "2";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * --- [label = " Variant #1 Discover All Services "];
+ * |||;
+ * APP=>SD [label = "sd_ble_gattc_primary_services_discover(handle, NULL)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Read By Group Type Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Read By Group Type Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP {SUCCESS, services}"];
+ * APP=>SD [label = "sd_ble_gattc_primary_services_discover(handle + N, NULL)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Read By Group Type Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Read By Group Type Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP {SUCCESS, services}"];
+ * APP=>SD [label = "sd_ble_gattc_primary_services_discover(handle + N + M, NULL)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Read By Group Type Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Error Response: Attribute Not Found", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP {ATTRIBUTE_NOT_FOUND}"];
+ * |||;
+ * --- [label = " Variant #2 Discover a Specific Service "];
+ * |||;
+ * APP=>SD [label = "sd_ble_gattc_primary_services_discover(handle, uuid)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Find By Type Value Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Find By Type Value Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP {SUCCESS, services}"];
+ * APP=>SD [label = "sd_ble_gattc_primary_services_discover(handle + N, uuid)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Find By Type Value Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Find By Type Value Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP {SUCCESS, services}"];
+ * APP=>SD [label = "sd_ble_gattc_primary_services_discover(handle + N + M, uuid)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Find By Type Value Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Error Response: Attribute Not Found", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP {ATTRIBUTE_NOT_FOUND}"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTC_REL_DISC_MSC GATTC Relationship Discovery
+ * @msc
+ * hscale = "2";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * APP=>SD [label = "sd_ble_gattc_relationships_discover(handle_range)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Read By Type Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Read By Type Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_REL_DISC_RSP {SUCCESS, includes}"];
+ * APP=>SD [label = "sd_ble_gattc_relationships_discover(handle_range + N)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Read By Type Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Read By Type Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_REL_DISC_RSP {SUCCESS, includes}"];
+ * APP=>SD [label = "sd_ble_gattc_relationships_discover(handle_range + N + M)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Read By Type Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Error Response: Attribute Not Found", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_REL_DISC_RSP {ATTRIBUTE_NOT_FOUND}"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTC_CHAR_DISC_MSC GATTC Characteristic Discovery
+ * @msc
+ * hscale = "2";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * APP=>SD [label = "sd_ble_gattc_characteristics_discover(handle_range)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Read By Type Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Read By Type Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_CHAR_DISC_RSP {SUCCESS, chars}"];
+ * APP=>SD [label = "sd_ble_gattc_characteristics_discover(handle_range + N)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Read By Type Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Read By Type Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_CHAR_DISC_RSP {SUCCESS, chars}"];
+ * APP=>SD [label = "sd_ble_gattc_characteristics_discover(handle_range + N + M)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Read By Type Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Error Response: Attribute Not Found", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_CHAR_DISC_RSP {ATTRIBUTE_NOT_FOUND}"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTC_DESC_DISC_MSC GATTC Descriptor Discovery
+ * @msc
+ * hscale = "2";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * APP=>SD [label = "sd_ble_gattc_descriptors_discover(handle_range)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Find Information Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Find Information Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_DESC_DISC_RSP {SUCCESS, descs}"];
+ * APP=>SD [label = "sd_ble_gattc_descriptors_discover(handle_range + N)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Find Information Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Find Information Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_DESC_DISC_RSP {SUCCESS, descs}"];
+ * APP=>SD [label = "sd_ble_gattc_descriptors_discover(handle_range + N + M)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Find Information Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Error Response: Attribute Not Found", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_DESC_DISC_RSP {ATTRIBUTE_NOT_FOUND}"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTC_READ_UUID_MSC GATTC Read Characteristic Value by UUID
+ * @msc
+ * hscale = "2";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * APP=>SD [label = "sd_ble_gattc_char_value_by_uuid_read(uuid, handle_range)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Read By Type Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Read By Type Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP {SUCCESS, char_values}"];
+ * APP=>SD [label = "sd_ble_gattc_char_value_by_uuid_read(uuid, handle_range + N)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Read By Type Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Read By Type Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP {SUCCESS, char_values}"];
+ * APP=>SD [label = "sd_ble_gattc_char_value_by_uuid_read(uuid, handle_range + N + M)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Read By Type Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Error Response: Attribute Not Found", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP {ATTRIBUTE_NOT_FOUND}"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTC_VALUE_READ_MSC GATTC Characteristic or Descriptor Value Read
+ * @msc
+ * hscale = "2";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * --- [label = " Variant #1 offset == 0 "];
+ * |||;
+ * APP=>SD [label = "sd_ble_gattc_read(handle, 0)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Read Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Read Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_READ_RSP {SUCCESS, value}"];
+ * |||;
+ * --- [label = " Variant #2 offset != 0 "];
+ * |||;
+ * APP=>SD [label = "sd_ble_gattc_read(handle, offset)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Read Blob Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Read Blob Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_READ_RSP {SUCCESS, value}"];
+ * APP=>SD [label = "sd_ble_gattc_read(handle, offset + N)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Read Blob Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Read Blob Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_READ_RSP {SUCCESS, value}"];
+ * APP=>SD [label = "sd_ble_gattc_read(handle, offset + N + M + 1)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Read Blob Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Error Response: Invalid Offset", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_READ_RSP {INVALID_OFFSET}"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTC_READ_MULT_MSC GATTC Read Multiple Characteristic Values
+ * @msc
+ * hscale = "2";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * --- [label = " Variant #1 Successful request "];
+ * |||;
+ * APP=>SD [label = "sd_ble_gattc_char_values_read(handles)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Read Multiple Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Read Multiple Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_CHAR_VALS_READ_RSP {SUCCESS, char_values}"];
+ * |||;
+ * --- [label = " Variant #2 Failing request (invalid handle) "];
+ * |||;
+ * APP=>SD [label = "sd_ble_gattc_char_values_read(handles)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Read Multiple Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Error Response: Invalid Handle", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_CHAR_VALS_READ_RSP {INVALID_HANDLE, error_handle=<invalid handle>}"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTC_VALUE_WRITE_MSC GATTC Characteristic or Descriptor Value Write
+ * @msc
+ * hscale = "2";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * --- [label = " Variant #1 write_op == BLE_GATT_OP_WRITE_CMD "];
+ * |||;
+ * APP=>SD [label = "sd_ble_gattc_write(handle, value)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Write Command", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_EVT_TX_COMPLETE"];
+ * |||;
+ * --- [label = " Variant #2 write_op == BLE_GATT_OP_WRITE_REQ "];
+ * |||;
+ * APP=>SD [label = "sd_ble_gattc_write(handle, value)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Write Request", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Write Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_WRITE_RSP {SUCCESS}"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTC_HVI_MSC GATTC Handle Value Indication
+ * <b> GATTC Handle Value Indication MSC </b>
+ * @msc
+ * hscale = "2";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * SD<:PEER [label = "ATT Handle Value Indication", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_HVX {INDICATION, data}"];
+ * APP=>SD [label = "sd_ble_gattc_hv_confirm(handle)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Handle Value Confirmation", textcolor="#000080", linecolor="#000080"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTC_HVN_MSC GATTC Handle Value Notification
+ * @msc
+ * hscale = "2";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * SD<:PEER [label = "ATT Handle Value Notification", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_HVX {NOTIFICATION, data}"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTC_TIMEOUT_MSC GATTC Timeout
+ * @msc
+ * hscale = "2";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * APP rbox PEER [label="Any GATTC API used"];
+ * SD:>PEER [label = "ATT Packet", textcolor="#000080", linecolor="#000080"];
+ * APP note PEER [label = "No Response from Peer"];
+ * |||;
+ * ...;
+ * |||;
+ * SD box SD [label="Timeout"];
+ * APP<<=SD [label = "BLE_GATTC_EVT_TIMEOUT {source}"];
+ * APP rbox PEER [label="No additional ATT Traffic Allowed", textbgcolour="#ff7f7f"];
+ * APP=>SD [label = "Any API call"];
+ * APP<<SD [label = "NRF_ERROR_BUSY"];
+ * @endmsc
+ * @}
+ * @}
+ */
+
+/**
+ * @addtogroup BLE_GATTS 
+ * @{
+ * @defgroup BLE_GATTS_MSC Message Sequence Charts
+ * @{
+ * @defgroup BLE_GATTS_ATT_TABLE_POP_MSC GATTS ATT Table Population
+ * @msc
+ * hscale = "1.5";
+ * APP,SD;
+ * |||;
+ * APP=>SD [label = "sd_ble_gatts_service_add(uuid#1)"];
+ * APP<<SD [label = "{NRF_SUCCESS, handle_srvc#1}"];
+ * APP=>SD [label = "sd_ble_gatts_characteristic_add(handle_srvc#1, char_md, value)"];
+ * APP<<SD [label = "{NRF_SUCCESS, handle_char#1, ...}"];
+ * APP=>SD [label = "sd_ble_gatts_descriptor_add(handle_char#1, value)"];
+ * APP<<SD [label = "{NRF_SUCCESS, handle_desc#1}"];
+ * APP=>SD [label = "sd_ble_gatts_descriptor_add(handle_char#1, value)"];
+ * APP<<SD [label = "{NRF_SUCCESS, handle_desc#2}"];
+ * APP=>SD [label = "sd_ble_gatts_characteristic_add(handle_srvc#1, char_md, value)"];
+ * APP<<SD [label = "{NRF_SUCCESS, handle_char#2, ...}"];
+ * APP=>SD [label = "sd_ble_gatts_descriptor_add(handle_char#2, value)"];
+ * APP<<SD [label = "{NRF_SUCCESS, handle_desc#3}"];
+ * APP=>SD [label = "sd_ble_gatts_service_add(uuid#2)"];
+ * APP<<SD [label = "{NRF_SUCCESS, handle_srvc#2}"];
+ * APP=>SD [label = "sd_ble_gatts_include_add(handle_srvc#2, handle_srvc#1)"];
+ * APP<<SD [label = "{NRF_SUCCESS, handle_inc#1}"];
+ * |||;
+ * ...;
+ * |||;
+ * @endmsc
+ *
+ * @defgroup BLE_GATTS_READ_REQ_NO_AUTH_MSC Read Request without Authorization
+ * @msc
+ * hscale = "1.5";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * SD<:PEER [label = "ATT Read Request", textcolor="#000080", linecolor="#000080"];
+ * SD:>PEER [label = "ATT Read Response", textcolor="#000080", linecolor="#000080"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTS_WRITE_REQ_NO_AUTH_MSC GATTS Write Request without Authorization
+ * @msc
+ * hscale = "1.5";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * SD<:PEER [label = "ATT Write Request", textcolor="#000080", linecolor="#000080"];
+ * SD:>PEER [label = "ATT Write Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_WRITE {WRITE_REQ, data}"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTS_WRITE_CMD_NO_AUTH_MSC GATTS Write Command with or without Authorization
+ * @msc
+ * hscale = "1.5";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * SD<:PEER [label = "ATT Write Command", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_WRITE {WRITE_CMD, data}"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTS_READ_REQ_AUTH_MSC GATTS Read Request with Authorization
+ * @msc
+ * hscale = "2";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * SD rbox SD [label="Value in ATT Table: current_value"];
+ * SD<:PEER [label = "ATT Read Request", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {READ, current_value}"];
+ * --- [label = " Variant #1 App Authorizes "];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(SUCCESS, app_value)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD rbox SD [label="Value in ATT Table: app_value"];
+ * SD:>PEER [label = "ATT Read Response {app_value}", textcolor="#000080", linecolor="#000080"];
+ * --- [label = " Variant #2 App Disallows "];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(READ_NOT_PERMITTED)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Error Response", textcolor="#000080", linecolor="#000080"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTS_WRITE_REQ_AUTH_MSC GATTS Write Request with Authorization
+ * @msc
+ * hscale = "2";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * SD rbox SD [label="Value in ATT Table: current_value"];
+ * SD<:PEER [label = "ATT Write Request {peer_data}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, peer_value}"];
+ * --- [label = " Variant #1 App Authorizes "];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(SUCCESS)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD rbox SD [label="Value in ATT Table: peer_data"];
+ * SD:>PEER [label = "ATT Write Response", textcolor="#000080", linecolor="#000080"];
+ * --- [label = " Variant #2 App Disallows "];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE_NOT_PERMITTED)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Error Response", textcolor="#000080", linecolor="#000080"];
+ * SD rbox SD [label="Value in ATT Table: current_value"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTS_QUEUED_WRITE_BUF_NOAUTH_MSC GATTS Queued Writes: Stack handled, no attributes require authorization
+ * @msc
+ * hscale = "2";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * SD rbox SD [label="Values in ATT Table:\nhandle_1: current_value_1\nhandle_2: current_value_2"];
+ * SD<:PEER [label = "ATT Prepare Write Request {handle_1, offset_1, peer_value_1}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_EVT_USER_MEM_REQUEST {BLE_USER_MEM_TYPE_GATTS_QUEUED_WRITES}"];
+ * APP=>SD [label = "sd_ble_user_mem_reply {user_mem_block}"];
+ * SD:>PEER [label = "ATT Prepare Write Response {handle_1, offset_1, peer_value_1}", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Prepare Write Request {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
+ * SD:>PEER [label = "ATT Prepare Write Response {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
+ * |||;
+ * --- [label = " Variant #1 Attribute Values validation passed "];
+ * SD<:PEER [label = "ATT Execute Write Request {WRITE}", textcolor="#000080", linecolor="#000080"];
+ * SD rbox SD [label="Values in ATT Table:\nhandle_1: peer_value_1\nhandle_2: peer_value_2"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_WRITE {EXEC_WRITE_REQ_NOW}"];
+ * APP rbox APP [label="App parses the memory it provided"];
+ * SD:>PEER [label = "ATT Execute Write Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_EVT_USER_MEM_RELEASE {user_mem_block}"];
+ * |||;
+ * --- [label = " Variant #2 Attribute Values validation failed "];
+ * SD<:PEER [label = "ATT Execute Write Request {WRITE}", textcolor="#000080", linecolor="#000080"];
+ * SD rbox SD [label="Values in ATT Table:\nhandle_1: current_value_1\nhandle_2: current_value_2"];
+ * SD:>PEER [label = "ATT Error Response {Invalid Value Length / Offset}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_EVT_USER_MEM_RELEASE {user_mem_block}"];
+ * |||;
+ * --- [label = " Variant #3 Peer cancels operation "];
+ * SD<:PEER [label = "ATT Execute Write Request {CANCEL}", textcolor="#000080", linecolor="#000080"];
+ * SD rbox SD [label="Values in ATT Table:\nhandle_1: current_value_1\nhandle_2: current_value_2"];
+ * SD:>PEER [label = "ATT Execute Write Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_EVT_USER_MEM_RELEASE {user_mem_block}"];
+ * |||;
+ * @endmsc
+ *
+ * @defgroup BLE_GATTS_QUEUED_WRITE_BUF_AUTH_MSC GATTS Queued Writes: Stack handled, one or more attributes require authorization
+ * @msc
+ * hscale = "2";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * SD rbox SD [label="Values in ATT Table:\nhandle_1: current_value_1\nhandle_2: current_value_2"];
+ * SD<:PEER [label = "ATT Prepare Write Request {handle_1, offset_1, peer_value_1}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_EVT_USER_MEM_REQUEST {BLE_USER_MEM_TYPE_GATTS_QUEUED_WRITES}"];
+ * APP=>SD [label = "sd_ble_user_mem_reply {user_mem_block}"];
+ * SD:>PEER [label = "ATT Prepare Write Response {handle_1, offset_1, peer_value_1}", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Prepare Write Request {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, PREP_WRITE_REQ, handle_2, offset_2, peer_value_2}"];
+ * |||;
+ * --- [label = " Variant #1 App Authorizes both Prepare Write and Execute Write"];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
+ * SD:>PEER [label = "ATT Prepare Write Response {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Execute Write Request {WRITE}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, EXEC_WRITE_REQ_NOW}"];
+ * APP rbox APP [label="App parses the memory it provided"];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
+ * SD rbox SD [label="Values in ATT Table:\nhandle_1: peer_value_1\nhandle_2: peer_value_2"];
+ * SD:>PEER [label = "ATT Execute Write Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_EVT_USER_MEM_RELEASE {user_mem_block}"];
+ * |||;
+ * --- [label = " Variant #2 App Disallows Prepare Write and Authorizes Execute Write "];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, INSUF_AUTHORIZATION)"];
+ * SD:>PEER [label = "ATT Error Response {Insufficient Authorization}", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Execute Write Request {WRITE}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, EXEC_WRITE_REQ_NOW}"];
+ * APP rbox APP [label="App parses the memory it provided"];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
+ * SD rbox SD [label="Values in ATT Table:\nhandle_1: peer_value_1\nhandle_2: current_value_2"];
+ * SD:>PEER [label = "ATT Execute Write Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_EVT_USER_MEM_RELEASE {user_mem_block}"];
+ * |||;
+ * --- [label = " Variant #3 App Authorizes Prepare Write and Disallows Execute Write "];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
+ * SD:>PEER [label = "ATT Prepare Write Response {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Execute Write Request {WRITE}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, EXEC_WRITE_REQ_NOW}"];
+ * APP rbox APP [label="App parses the memory it provided"];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, APP_ERROR_CODE)"];
+ * SD rbox SD [label="Values in ATT Table:\nhandle_1: current_value_1\nhandle_2: current_value_2"];
+ * SD:>PEER [label = "ATT Error Response {APP_ERROR_CODE}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_EVT_USER_MEM_RELEASE {user_mem_block}"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTS_QUEUED_WRITE_NOBUF_NOAUTH_MSC GATTS Queued Writes: App handled, no attributes require authorization
+ * @msc
+ * hscale = "2";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * APP rbox SD [label="Values in ATT Table:\nhandle_1: current_value_1\nhandle_2: current_value_2"];
+ * SD<:PEER [label = "ATT Prepare Write Request {handle_1, offset_1, peer_value_1}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_EVT_USER_MEM_REQUEST {BLE_USER_MEM_TYPE_GATTS_QUEUED_WRITES}"];
+ * APP=>SD [label = "sd_ble_user_mem_reply {NULL}"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, PREP_WRITE_REQ, handle_1, offset_1, peer_value_1}"];
+ * APP rbox APP [label="App queues {handle_1, offset_1, peer_value_1}"];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
+ * SD:>PEER [label = "ATT Prepare Write Response {handle_1, offset_1, peer_value_1}", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Prepare Write Request {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, PREP_WRITE_REQ, handle_2, offset_2, peer_value_2}"];
+ * APP rbox APP [label="App queues {handle_2, offset_2, peer_value_2}"];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
+ * SD:>PEER [label = "ATT Prepare Write Response {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Execute Write Request {WRITE}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, EXEC_WRITE_REQ_NOW}"];
+ * |||;
+ * --- [label = " Variant #1 Attribute values in stack memory (VLOC_STACK), attribute values validation passed "];
+ * APP=>SD [label = "sd_ble_gatts_value_set {handle_1, offset_1, peer_value_1}"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * APP=>SD [label = "sd_ble_gatts_value_set {handle_2, offset_2, peer_value_2}"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD rbox SD [label="Values in ATT Table:\nhandle_1: peer_value_1\nhandle_2: peer_value_2"];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
+ * SD:>PEER [label = "ATT Execute Write Response", textcolor="#000080", linecolor="#000080"];
+ * |||;
+ * --- [label = " Variant #2 Attribute values in user memory (VLOC_USER), attribute values validation passed "];
+ * APP rbox APP [label="Application traverses its queue and executes the write operations (memcpy)"];
+ * APP rbox APP [label="Values in ATT Table:\nhandle_1: peer_value_1\nhandle_2: peer_value_2"];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
+ * SD:>PEER [label = "ATT Execute Write Response", textcolor="#000080", linecolor="#000080"];
+ * |||;
+ * --- [label = " Variant #3 Attribute values validation failed "];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, INVALID_OFFSET)"];
+ * APP rbox SD [label="Values in ATT Table:\nhandle_1: current_value_1\nhandle_2: current_value_2"];
+ * SD:>PEER [label = "ATT Error Response {Invalid Offset}", textcolor="#000080", linecolor="#000080"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTS_QUEUED_WRITE_NOBUF_AUTH_MSC GATTS Queued Writes: App handled, one or more attributes require authorization
+ * @msc
+ * hscale = "2";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * APP rbox APP [label="Values in ATT Table (in user memory):\nhandle_1: current_value_1\nhandle_2: current_value_2"];
+ * SD<:PEER [label = "ATT Prepare Write Request {handle_1, offset_1, peer_value_1}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_EVT_USER_MEM_REQUEST {BLE_USER_MEM_TYPE_GATTS_QUEUED_WRITES}"];
+ * APP=>SD [label = "sd_ble_user_mem_reply {NULL}"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, PREP_WRITE_REQ, handle_1, offset_1, peer_value_1}"];
+ * APP rbox APP [label="App queues {handle_1, offset_1, peer_value_1}"];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
+ * SD:>PEER [label = "ATT Prepare Write Response {handle_1, offset_1, peer_value_1}", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Prepare Write Request {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, PREP_WRITE_REQ, handle_2, offset_2, peer_value_2}"];
+ * |||;
+ * --- [label = " Variant #1 App Authorizes both Prepare Write and Execute Write"];
+ * APP rbox APP [label="App queues {handle_2, offset_2, peer_value_2}"];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
+ * SD:>PEER [label = "ATT Prepare Write Response {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Execute Write Request {WRITE}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, EXEC_WRITE_REQ_NOW}"];
+ * APP rbox APP [label="Application traverses its queue and executes the write operations (memcpy)"];
+ * APP rbox APP [label="Values in ATT Table:\nhandle_1: peer_value_1\nhandle_2: peer_value_2"];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
+ * SD:>PEER [label = "ATT Execute Write Response", textcolor="#000080", linecolor="#000080"];
+ * |||;
+ * --- [label = " Variant #2 App Disallows Prepare Write and Authorizes Execute Write "];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, INSUF_AUTHORIZATION)"];
+ * SD:>PEER [label = "ATT Error Response {Insufficient Authorization}", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Execute Write Request {WRITE}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, EXEC_WRITE_REQ_NOW}"];
+ * APP rbox APP [label="Application traverses its queue and executes the write operations (memcpy)"];
+ * APP rbox APP [label="Values in ATT Table:\nhandle_1: peer_value_1\nhandle_2: current_value_2"];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
+ * SD:>PEER [label = "ATT Execute Write Response", textcolor="#000080", linecolor="#000080"];
+ * |||;
+ * --- [label = " Variant #3 App Authorizes Prepare Write and Disallows Execute Write "];
+ * APP rbox APP [label="App queues {handle_2, offset_2, peer_value_2}"];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
+ * SD:>PEER [label = "ATT Prepare Write Response {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Execute Write Request {WRITE}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, EXEC_WRITE_REQ_NOW}"];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, APP_ERROR_CODE)"];
+ * APP rbox APP [label="Values in ATT Table:\nhandle_1: current_value_1\nhandle_2: current_value_2"];
+ * SD:>PEER [label = "ATT Error Response {APP_ERROR_CODE}", textcolor="#000080", linecolor="#000080"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTS_QUEUED_WRITE_QUEUE_FULL_MSC GATTS Queued Writes: Prepare Queue Full
+ * @msc
+ * hscale = "2";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * SD rbox SD [label="Values in ATT Table:\nhandle_1: current_value_1\nhandle_2: current_value_2"];
+ * SD<:PEER [label = "ATT Prepare Write Request {handle_1, offset_1, peer_value_1}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_EVT_USER_MEM_REQUEST {BLE_USER_MEM_TYPE_GATTS_QUEUED_WRITES}"];
+ * |||;
+ * --- [label = " Variant #1 Stack handled "];
+ * APP=>SD [label = "sd_ble_user_mem_reply {user_mem_block}"];
+ * SD:>PEER [label = "ATT Prepare Write Response {handle_1, offset_1, peer_value_1}", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Prepare Write Request {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
+ * SD:>PEER [label = "ATT Error Response {Prepare Queue Full}", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Execute Write Request {WRITE}", textcolor="#000080", linecolor="#000080"];
+ * SD rbox SD [label="Values in ATT Table:\nhandle_1: peer_value_1\nhandle_2: current_value_2"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_WRITE {EXEC_WRITE_REQ_NOW}"];
+ * APP rbox APP [label="App parses the memory it provided"];
+ * SD:>PEER [label = "ATT Execute Write Response", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_EVT_USER_MEM_RELEASE {user_mem_block}"];
+ * |||;
+ * --- [label = " Variant #2 App handled "];
+ * APP=>SD [label = "sd_ble_user_mem_reply {NULL}"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, PREP_WRITE_REQ, handle_1, offset_1, peer_value_1}"];
+ * APP rbox APP [label="App queues {handle_1, offset_1, peer_value_1}"];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
+ * SD:>PEER [label = "ATT Prepare Write Response {handle_1, offset_1, peer_value_1}", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Prepare Write Request {handle_2, offset_2, peer_value_2}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, PREP_WRITE_REQ, handle_2, offset_2, peer_value_2}"];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, PREPARE_QUEUE_FULL)"];
+ * SD:>PEER [label = "ATT Error Response {Prepare Queue Full}", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Execute Write Request {WRITE}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST {WRITE, EXEC_WRITE_REQ_NOW}"];
+ * APP=>SD [label = "sd_ble_gatts_value_set {handle_1, offset_1, peer_value_1}"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * APP=>SD [label = "sd_ble_gatts_rw_authorize_reply(WRITE, SUCCESS)"];
+ * SD rbox SD [label="Values in ATT Table:\nhandle_1: peer_value_1\nhandle_2: current_value_2"];
+ * SD:>PEER [label = "ATT Execute Write Response", textcolor="#000080", linecolor="#000080"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTS_HVI_MSC GATTS Handle Value Indication
+ * @msc
+ * hscale = "1.5";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * APP rbox PEER [label="Indications Enabled in CCCD"];
+ * |||;
+ * SD rbox SD [label="Value in ATT Table: current_value"];
+ * APP=>SD [label = "sd_ble_gatts_hvx(INDICATION, app_value)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD rbox SD [label="Value in ATT Table: app_value"];
+ * SD:>PEER [label = "ATT Handle Value Indication {app_value}", textcolor="#000080", linecolor="#000080"];
+ * --- [label = " Variant #1 Peer Confirms "];
+ * SD<:PEER [label = "ATT Handle Value Confirmation", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_HVC"];
+ * --- [label = " Variant #2 Peer Ignores "];
+ * |||;
+ * ...;
+ * |||;
+ * SD box SD [label="Timeout"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_TIMEOUT"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTS_HVN_MSC GATTS Handle Value Notification
+ * @msc
+ * hscale = "1.5";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * APP rbox PEER [label="Notifications Enabled in CCCD"];
+ * |||;
+ * SD rbox SD [label="Value in ATT Table: current_value"];
+ * APP=>SD [label = "sd_ble_gatts_hvx(NOTIFICATION, app_value)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD rbox SD [label="Value in ATT Table: app_value"];
+ * SD:>PEER [label = "ATT Handle Value Notification {app_value}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_EVT_TX_COMPLETE"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTS_HVX_DISABLED_MSC GATTS Handle Value Indication or Notification disabled
+ * @msc
+ * hscale = "1.5";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * APP rbox PEER [label="Indications and Notifications Disabled in CCCD"];
+ * |||;
+ * SD rbox SD [label="Value in ATT Table: current_value"];
+ * APP=>SD [label = "sd_ble_gatts_hvx(INDICATION or NOTIFICATION, app_value)"];
+ * APP<<SD [label = "NRF_ERROR_INVALID_STATE"];
+ * SD rbox SD [label="Value in ATT Table: current_value"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTS_HVX_SYS_ATTRS_MISSING_MSC GATTS Handle Value Indication or Notification with System Attributes Missing
+ * @msc
+ * hscale = "1.5";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * APP rbox PEER [label="System Attributes Uninitialized"];
+ * |||;
+ * SD rbox SD [label="Value in ATT Table: current_value"];
+ * APP=>SD [label = "sd_ble_gatts_hvx(INDICATION or NOTIFICATION, app_value)"];
+ * APP<<SD [label = "BLE_ERROR_GATTS_SYS_ATTR_MISSING"];
+ * SD rbox SD [label="Value in ATT Table: current_value"];
+ * APP=>SD [label = "sd_ble_gatts_sys_attr_set()"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * |||;
+ * ...;
+ * @endmsc
+ *
+ * @defgroup BLE_GATTS_SC_MSC GATTS Service Changed
+ * @msc
+ * hscale = "1.5";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox SD [label="Entries added to the ATT Table between handles N and M"];
+ * |||;
+ * APP rbox PEER [label="Connection Established with a Bonded Peer"];
+ * |||;
+ * APP=>SD [label = "sd_ble_gatts_service_changed(N, M)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Handle Value Indication {N, M}", textcolor="#000080", linecolor="#000080"];
+ * SD<:PEER [label = "ATT Handle Value Confirmation", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_SC_CONFIRM"];
+ * |||;
+ * SD rbox PEER [label="Service Discovery"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTS_SYS_ATTRS_UNK_PEER_MSC GATTS System Attributes Handling: Unknown Peer
+ * @msc
+ * hscale = "1.5";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established with an Unknown Peer"];
+ * |||;
+ * SD<:PEER [label = "ATT Read Request {sys_attr_handle}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_SYS_ATTR_MISSING"];
+ * APP=>SD [label = "sd_ble_gatts_sys_attr_set(NULL)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Read Response {sys_attr_value}", textcolor="#000080", linecolor="#000080"];
+ * @endmsc
+ *
+ * @defgroup BLE_GATTS_SYS_ATTRS_BONDED_PEER_MSC GATTS System Attributes Handling: Bonded Peer
+ * @msc
+ * hscale = "1.5";
+ * APP,SD,PEER;
+ * |||;
+ * APP rbox PEER [label="Connection Established with a Bonded Peer"];
+ * |||;
+ * APP rbox PEER [label="ATT Traffic"];
+ * |||;
+ * APP rbox PEER [label="Connection Terminated"];
+ * APP<<=SD [label = "BLE_GAP_EVT_DISCONNECTED {reason}"];
+ * |||;
+ * APP=>SD [label = "sd_ble_gatts_sys_attr_get()"];
+ * APP<<SD [label = "{NRF_SUCCESS, sys_attr_data}"];
+ * APP rbox APP [label="Store System Attributes"];
+ * |||;
+ * APP rbox SD [label="Shut down IC"];
+ * |||;
+ * APP rbox SD [label="Power up IC"];
+ * |||;
+ * APP rbox PEER [label="Connection Established with the Bonded Peer"];
+ * SD<:PEER [label = "ATT Read Request {sys_attr_handle}", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_GATTS_EVT_SYS_ATTR_MISSING"];
+ * APP rbox APP [label="Load System Attributes"];
+ * APP=>SD [label = "sd_ble_gatts_sys_attr_set(sys_attr_data)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "ATT Read Response {sys_attr_value}", textcolor="#000080", linecolor="#000080"];
+ * @endmsc
+ * @}
+ *
+ * @addtogroup BLE_GATTS_QUEUED_WRITES_USER_MEM User memory layout for Queued Writes
+ * @{ 
+ *  The following table shows the memory layout used by the SoftDevice to queue a Queued Write operation (Prepare Write ATT packet) in user memory:
+ *
+ *  <table style="border:1px solid black;border-collapse:collapse;">
+ *  <caption>Queued Write</caption>
+ *  <tr>
+ *  <th style="border:1px solid black;padding:5px;">Parameter</th>
+ *  <th style="border:1px solid black;padding:5px;">Size (octets)</th>
+ *  <th style="border:1px solid black;padding:5px;">Description</th>
+ *  </tr>
+ *  <tr>
+ *  <td style="border:1px solid black;padding:5px;">Handle</td>
+ *  <td style="border:1px solid black;padding:5px;">2</td>
+ *  <td style="border:1px solid black;padding:5px;">Attribute Handle</td>
+ *  </tr>
+ *  <tr>
+ *  <td style="border:1px solid black;padding:5px;">Offset</td>
+ *  <td style="border:1px solid black;padding:5px;">2</td>
+ *  <td style="border:1px solid black;padding:5px;">Value Offset</td>
+ *  </tr>
+ *  <tr>
+ *  <td style="border:1px solid black;padding:5px;">Length</td>
+ *  <td style="border:1px solid black;padding:5px;">2</td>
+ *  <td style="border:1px solid black;padding:5px;">Value Length</td>
+ *  </tr>
+ *  <tr>
+ *  <td style="border:1px solid black;padding:5px;">Value</td>
+ *  <td style="border:1px solid black;padding:5px;">Length</td>
+ *  <td style="border:1px solid black;padding:5px;">Attribute Value</td>
+ *  </tr>
+ *  </table>
+ *
+ *  The application can parse the array of Queued Write instances at any time, but it is recommended to do so whenever an Execute Write ATT packet 
+ *  has been received over the air. See the GATT Server Queued Writes MSCs for more details.
+ *  The array will be terminated by an Queued Write instance with its handle set to @ref BLE_GATT_HANDLE_INVALID.
+ * @}
+ * @}
+ */
+
+/**
+ * @addtogroup BLE_L2CAP 
+ * @{
+ * @defgroup BLE_L2CAP_MSC Message Sequence Charts
+ * @{
+ * @defgroup BLE_L2CAP_API_MSC L2CAP API
+ * @msc
+ * hscale = "1.5";
+ * APP,SD,PEER;
+ * |||;
+ * APP=>SD [label = "sd_ble_l2cap_cid_register(cid)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * |||;
+ * APP rbox PEER [label="Connection Established"];
+ * |||;
+ * APP=>SD [label = "sd_ble_l2cap_tx(data)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "L2CAP packet", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_EVT_TX_COMPLETE"];
+ * SD<:PEER [label = "L2CAP packet", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_L2CAP_EVT_RX"];
+ * SD<:PEER [label = "L2CAP packet", textcolor="#000080", linecolor="#000080"];
+ * APP<<=SD [label = "BLE_L2CAP_EVT_RX"];
+ * |||;
+ * APP=>SD [label = "sd_ble_l2cap_tx(data)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * SD:>PEER [label = "L2CAP packet", textcolor="#000080", linecolor="#000080"];
+ * SD=>>APP [label = "BLE_EVT_TX_COMPLETE"];
+ * |||;
+ * APP rbox PEER [label="Terminate Connection"];
+ * |||;
+ * APP=>SD [label = "sd_ble_l2cap_cid_unregister(cid)"];
+ * APP<<SD [label = "NRF_SUCCESS"];
+ * @endmsc
+ * @}
+ * @}
+ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/ble.h	Fri Oct 17 14:15:08 2014 +0100
@@ -0,0 +1,419 @@
+/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved.
+ *
+ * The information contained herein is confidential property of Nordic Semiconductor. The use,
+ * copying, transfer or disclosure of such information is prohibited except by express written
+ * agreement with Nordic Semiconductor.
+ *
+ */
+/**
+  @addtogroup BLE_COMMON BLE SoftDevice Common
+  @{
+  @defgroup ble_api Events, type definitions and API calls
+  @{
+
+  @brief Module independent events, type definitions and API calls for the S110 SoftDevice.
+
+ */
+
+#ifndef BLE_H__
+#define BLE_H__
+
+#include "ble_ranges.h"
+#include "ble_types.h"
+#include "ble_gap.h"
+#include "ble_l2cap.h"
+#include "ble_gatt.h"
+#include "ble_gattc.h"
+#include "ble_gatts.h"
+
+/** @addtogroup BLE_COMMON_ENUMERATIONS Enumerations
+ * @{ */
+
+/**
+ * @brief Common API SVC numbers.
+ */
+enum BLE_COMMON_SVCS
+{
+  SD_BLE_ENABLE = BLE_SVC_BASE,         /**< Enable and initialize the BLE stack */
+  SD_BLE_EVT_GET,                       /**< Get an event from the pending events queue. */
+  SD_BLE_TX_BUFFER_COUNT_GET,           /**< Get the total number of available application transmission buffers from the stack. */
+  SD_BLE_UUID_VS_ADD,                   /**< Add a Vendor Specific UUID. */
+  SD_BLE_UUID_DECODE,                   /**< Decode UUID bytes. */
+  SD_BLE_UUID_ENCODE,                   /**< Encode UUID bytes. */
+  SD_BLE_VERSION_GET,                   /**< Get the local version information (company id, Link Layer Version, Link Layer Subversion). */
+  SD_BLE_USER_MEM_REPLY,                /**< User Memory Reply. */
+  SD_BLE_OPT_SET,                       /**< Set a BLE option. */
+  SD_BLE_OPT_GET,                       /**< Get a BLE option. */
+};
+
+/**@brief Common Option IDs.
+ * IDs that uniquely identify a common option.
+ */
+enum BLE_COMMON_OPTS
+{
+  BLE_COMMON_OPT_RADIO_CPU_MUTEX = BLE_OPT_BASE    /**< Radio CPU mutex option. @ref ble_common_opt_radio_cpu_mutex_t */
+};
+/** @} */
+
+/** @addtogroup BLE_COMMON_DEFINES Defines
+ * @{ */
+
+/** @brief  Required pointer alignment for BLE Events.
+*/
+#define BLE_EVTS_PTR_ALIGNMENT    4
+
+/** @defgroup BLE_USER_MEM_TYPES User Memory Types
+ * @{ */
+#define BLE_USER_MEM_TYPE_INVALID               0x00  /**< Invalid User Memory Types. */
+#define BLE_USER_MEM_TYPE_GATTS_QUEUED_WRITES   0x01  /**< User Memory for GATTS queued writes. */
+/** @} */
+
+/** @brief  Maximum number of Vendor Specific UUIDs.
+*/
+#define BLE_UUID_VS_MAX_COUNT     10
+
+/** @} */
+
+/** @addtogroup BLE_COMMON_STRUCTURES Structures
+ * @{ */
+
+/**
+ * @brief BLE Module Independent Event IDs.
+ */
+enum BLE_COMMON_EVTS
+{
+  BLE_EVT_TX_COMPLETE  = BLE_EVT_BASE,  /**< Transmission Complete. */
+  BLE_EVT_USER_MEM_REQUEST,             /**< User Memory request. */
+  BLE_EVT_USER_MEM_RELEASE              /**< User Memory release. */
+};
+
+/**@brief User Memory Block. */
+typedef struct
+{
+  uint8_t*          p_mem;      /**< Pointer to the start of the user memory block. */
+  uint16_t          len;        /**< Length in bytes of the user memory block. */
+} ble_user_mem_block_t;
+
+/**
+ * @brief TX complete event.
+ */
+typedef struct
+{
+  uint8_t count;                        /**< Number of packets transmitted. */
+} ble_evt_tx_complete_t;
+
+/**@brief Event structure for BLE_EVT_USER_MEM_REQUEST. */
+typedef struct
+{
+  uint8_t                     type;     /**< User memory type, see @ref BLE_USER_MEM_TYPES. */
+} ble_evt_user_mem_request_t;
+
+/**@brief Event structure for BLE_EVT_USER_MEM_RELEASE. */
+typedef struct
+{
+  uint8_t                     type;       /**< User memory type, see @ref BLE_USER_MEM_TYPES. */
+  ble_user_mem_block_t        mem_block;  /**< User memory block */
+} ble_evt_user_mem_release_t;
+
+
+/**@brief Event structure for events not associated with a specific function module. */
+typedef struct
+{
+  uint16_t conn_handle;                 /**< Connection Handle on which this event occured. */
+  union
+  {
+    ble_evt_tx_complete_t           tx_complete;        /**< Transmission Complete. */
+    ble_evt_user_mem_request_t      user_mem_request;   /**< User Memory Request Event Parameters. */
+    ble_evt_user_mem_release_t      user_mem_release;   /**< User Memory Release Event Parameters. */
+  } params;
+} ble_common_evt_t;
+
+/**@brief BLE Event header. */
+typedef struct
+{
+  uint16_t evt_id;                      /**< Value from a BLE_<module>_EVT series. */
+  uint16_t evt_len;                     /**< Length in octets excluding this header. */
+} ble_evt_hdr_t;
+
+/**@brief Common BLE Event type, wrapping the module specific event reports. */
+typedef struct
+{
+  ble_evt_hdr_t header;                 /**< Event header. */
+  union
+  {
+    ble_common_evt_t  common_evt;         /**< Common Event, evt_id in BLE_EVT_* series. */
+    ble_gap_evt_t     gap_evt;            /**< GAP originated event, evt_id in BLE_GAP_EVT_* series. */
+    ble_l2cap_evt_t   l2cap_evt;          /**< L2CAP originated event, evt_id in BLE_L2CAP_EVT* series. */
+    ble_gattc_evt_t   gattc_evt;          /**< GATT client originated event, evt_id in BLE_GATTC_EVT* series. */
+    ble_gatts_evt_t   gatts_evt;          /**< GATT server originated event, evt_id in BLE_GATTS_EVT* series. */
+  } evt;
+} ble_evt_t;
+
+
+/**
+ * @brief Version Information.
+ */
+typedef struct
+{
+  uint8_t   version_number;             /**< Link Layer Version number for BT 4.1 spec is 7 (https://www.bluetooth.org/en-us/specification/assigned-numbers/link-layer). */
+  uint16_t  company_id;                 /**< Company ID, Nordic Semiconductor's company ID is 89 (0x0059) (https://www.bluetooth.org/apps/content/Default.aspx?doc_id=49708). */
+  uint16_t  subversion_number;          /**< Link Layer Sub Version number, corresponds to the SoftDevice Config ID or Firmware ID (FWID). */
+} ble_version_t;
+
+/**@brief Mutual exclusion of radio activity and CPU execution.
+ *
+ *        This option configures the application's access to the CPU when the radio is active. The
+ *        application can configure itself to have access to the CPU while the radio is active.
+ *        By default, the application will be not able to share CPU time with the SoftDevice
+ *        during radio activity. This parameter structure is used together with @ref sd_ble_opt_set
+ *        to configure the @ref BLE_COMMON_OPT_RADIO_CPU_MUTEX option.
+ *
+ * @note  Note that the mutual exclusion of radio activity and CPU execution should remain enabled
+ *        when running the SoftDevice on hardware affected by PAN #44 "CCM may exceed real time 
+ *        requirements"and PAN #45 "AAR may exceed real time requirements".
+ *
+ * @note  @ref sd_ble_opt_get is not supported for this option.
+ *
+ */
+typedef struct
+{
+  uint8_t enable : 1;                          /**< Enable mutual exclusion of radio activity and the CPU execution. */
+} ble_common_opt_radio_cpu_mutex_t;
+
+/**@brief Option structure for common options. */
+typedef union
+{
+  ble_common_opt_radio_cpu_mutex_t  radio_cpu_mutex;        /**< Parameters for the option for the mutual exclusion of radio activity and CPU execution. */
+} ble_common_opt_t;
+
+/**@brief Common BLE Option type, wrapping the module specific options. */
+typedef union
+{
+  ble_common_opt_t  common_opt;         /**< Common option, opt_id in BLE_COMMON_OPT_* series. */
+  ble_gap_opt_t     gap;                /**< GAP option, opt_id in BLE_GAP_OPT_* series. */
+} ble_opt_t;
+
+/**
+ * @brief BLE GATTS init options
+ */
+typedef struct
+{
+  ble_gatts_enable_params_t  gatts_enable_params; /**< GATTS init options @ref ble_gatts_enable_params_t. */
+} ble_enable_params_t;
+
+/** @} */
+
+/** @addtogroup BLE_COMMON_FUNCTIONS Functions
+ * @{ */
+
+/**@brief Enable the bluetooth stack
+ *
+ * @param[in] p_ble_enable_params Pointer to ble_enable_params_t
+ *
+ * @details This call initializes the bluetooth stack, no other BLE related call can be called before this one has been executed.
+ *
+ * @return @ref NRF_SUCCESS BLE stack has been initialized successfully
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid or not sufficiently aligned pointer supplied.
+ */
+SVCALL(SD_BLE_ENABLE, uint32_t, sd_ble_enable(ble_enable_params_t * p_ble_enable_params));
+
+/**@brief Get an event from the pending events queue.
+ *
+ * @param[in] p_dest Pointer to buffer to be filled in with an event, or NULL to retrieve the event length. This buffer <b>must be 4-byte aligned in memory</b>.
+ * @param[in, out] p_len Pointer the length of the buffer, on return it is filled with the event length.
+ *
+ * @details This call allows the application to pull a BLE event from the BLE stack. The application is signalled that an event is
+ * available from the BLE Stack by the triggering of the SD_EVT_IRQn interrupt (mapped to IRQ 22).
+ * The application is free to choose whether to call this function from thread mode (main context) or directly from the Interrupt Service Routine
+ * that maps to SD_EVT_IRQn. In any case however, and because the BLE stack runs at a higher priority than the application, this function should be called
+ * in a loop (until @ref NRF_ERROR_NOT_FOUND is returned) every time SD_EVT_IRQn is raised to ensure that all available events are pulled from the stack.
+ * Failure to do so could potentially leave events in the internal queue without the application being aware of this fact.
+ * Sizing the p_dest buffer is equally important, since the application needs to provide all the memory necessary for the event to be copied into
+ * application memory. If the buffer provided is not large enough to fit the entire contents of the event, @ref NRF_ERROR_DATA_SIZE will be returned
+ * and the application can then call again with a larger buffer size.
+ * Please note that because of the variable length nature of some events, sizeof(ble_evt_t) will not always be large enough to fit certain events,
+ * and so it is the application's responsability to provide an amount of memory large enough so that the relevant event is copied in full.
+ * The application may "peek" the event length by providing p_dest as a NULL pointer and inspecting the value of *p_len upon return.
+ *
+ * @note The pointer supplied must be aligned to the extend defined by @ref BLE_EVTS_PTR_ALIGNMENT
+ *
+ * @return @ref NRF_SUCCESS Event pulled and stored into the supplied buffer.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid or not sufficiently aligned pointer supplied.
+ * @return @ref NRF_ERROR_NOT_FOUND No events ready to be pulled.
+ * @return @ref NRF_ERROR_DATA_SIZE Event ready but could not fit into the supplied buffer.
+ */
+SVCALL(SD_BLE_EVT_GET, uint32_t, sd_ble_evt_get(uint8_t* p_dest, uint16_t *p_len));
+
+
+/**@brief Get the total number of available application transmission buffers in the BLE stack.
+ *
+ * @details This call allows the application to obtain the total number of
+ *          transmission buffers available for application data. Please note that
+ *          this does not give the number of free buffers, but rather the total amount of them.
+ *          The application has two options to handle its own application transmission buffers:
+ *          - Use a simple arithmetic calculation: at boot time the application should use this function
+ *          to find out the total amount of buffers available to it and store it in a variable.
+ *          Every time a packet that consumes an application buffer is sent using any of the
+ *          exposed functions in this BLE API, the application should decrement that variable.
+ *          Conversely, whenever a @ref BLE_EVT_TX_COMPLETE event is received by the application
+ *          it should retrieve the count field in such event and add that number to the same
+ *          variable storing the number of available packets.
+ *          This mechanism allows the application to be aware at any time of the number of
+ *          application packets available in the BLE stack's internal buffers, and therefore
+ *          it can know with certainty whether it is possible to send more data or it has to
+ *          wait for a @ref BLE_EVT_TX_COMPLETE event before it proceeds.
+ *          - Choose to simply not keep track of available buffers at all, and instead handle the
+ *          @ref BLE_ERROR_NO_TX_BUFFERS error by queueing the packet to be transmitted and
+ *          try again as soon as a @ref BLE_EVT_TX_COMPLETE event arrives.
+ *
+ *          The API functions that <b>may</b> consume an application buffer depending on
+ *          the parameters supplied to them can be found below:
+ *
+ *          - @ref sd_ble_gattc_write (write witout response only)
+ *          - @ref sd_ble_gatts_hvx (notifications only)
+ *          - @ref sd_ble_l2cap_tx (all packets)
+ *
+ * @param[out] p_count Pointer to a uint8_t which will contain the number of application transmission buffers upon
+ *                     successful return.
+ *
+ * @return @ref NRF_SUCCESS Number of application transmission buffers retrieved successfully.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ */
+SVCALL(SD_BLE_TX_BUFFER_COUNT_GET, uint32_t, sd_ble_tx_buffer_count_get(uint8_t* p_count));
+
+
+/**@brief Add a Vendor Specific UUID.
+ *
+ * @details This call enables the application to add a vendor specific UUID to the BLE stack's table,
+ *          for later use all other modules and APIs. This then allows the application to use the shorter,
+ *          24-bit @ref ble_uuid_t format when dealing with both 16-bit and 128-bit UUIDs without having to
+ *          check for lengths and having split code paths. The way that this is accomplished is by extending the
+ *          grouping mechanism that the Bluetooth SIG standard base UUID uses for all other 128-bit UUIDs. The
+ *          type field in the @ref ble_uuid_t structure is an index (relative to @ref BLE_UUID_TYPE_VENDOR_BEGIN)
+ *          to the table populated by multiple calls to this function, and the uuid field in the same structure
+ *          contains the 2 bytes at indices 12 and 13. The number of possible 128-bit UUIDs available to the
+ *          application is therefore the number of Vendor Specific UUIDs added with the help of this function times 65536,
+ *          although restricted to modifying bytes 12 and 13 for each of the entries in the supplied array.
+ *
+ * @note Bytes 12 and 13 of the provided UUID will not be used internally, since those are always replaced by
+ * the 16-bit uuid field in @ref ble_uuid_t.
+ *
+ *
+ * @param[in]  p_vs_uuid    Pointer to a 16-octet (128-bit) little endian Vendor Specific UUID disregarding
+ *                          bytes 12 and 13.
+ * @param[out] p_uuid_type  Pointer where the type field in @ref ble_uuid_t corresponding to this UUID will be stored.
+ *
+ * @return @ref NRF_SUCCESS Successfully added the Vendor Specific UUID.
+ * @return @ref NRF_ERROR_INVALID_ADDR If p_vs_uuid or p_uuid_type is NULL or invalid.
+ * @return @ref NRF_ERROR_NO_MEM If there are no more free slots for VS UUIDs.
+ * @return @ref NRF_ERROR_FORBIDDEN If p_vs_uuid has already been added to the VS UUID table.
+ */
+SVCALL(SD_BLE_UUID_VS_ADD, uint32_t, sd_ble_uuid_vs_add(ble_uuid128_t const * const p_vs_uuid, uint8_t * const p_uuid_type));
+
+
+/** @brief Decode little endian raw UUID bytes (16-bit or 128-bit) into a 24 bit @ref ble_uuid_t structure.
+ *
+ * @details The raw UUID bytes excluding bytes 12 and 13 (i.e. bytes 0-11 and 14-15) of p_uuid_le are compared
+ * to the corresponding ones in each entry of the table of vendor specific UUIDs pouplated with @ref sd_ble_uuid_vs_add
+ * to look for a match. If there is such a match, bytes 12 and 13 are returned as p_uuid->uuid and the index
+ * relative to @ref BLE_UUID_TYPE_VENDOR_BEGIN as p_uuid->type.
+ *
+ * @note If the UUID length supplied is 2, then the type set by this call will always be @ref BLE_UUID_TYPE_BLE.
+ *
+ * @param[in]      uuid_le_len Length in bytes of the buffer pointed to by p_uuid_le (must be 2 or 16 bytes).
+ * @param[in]      p_uuid_le   Pointer pointing to little endian raw UUID bytes.
+ * @param[in,out]  p_uuid      Pointer to a @ref ble_uuid_t structure to be filled in.
+ *
+ * @return @ref NRF_SUCCESS Successfully decoded into the @ref ble_uuid_t structure.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_INVALID_LENGTH Invalid UUID length.
+ * @return @ref NRF_ERROR_NOT_FOUND For a 128-bit UUID, no match in the populated table of UUIDs.
+ */
+SVCALL(SD_BLE_UUID_DECODE, uint32_t, sd_ble_uuid_decode(uint8_t uuid_le_len, uint8_t const * const p_uuid_le, ble_uuid_t * const p_uuid));
+
+
+/** @brief Encode a @ref ble_uuid_t structure into little endian raw UUID bytes (16-bit or 128-bit).
+ *
+ * @note The pointer to the destination buffer p_uuid_le may be NULL, in which case only the validitiy and size of p_uuid is computed.
+ *
+ * @param[in]      p_uuid        Pointer to a @ref ble_uuid_t structure that will be encoded into bytes.
+ * @param[out]     p_uuid_le_len Pointer to a uint8_t that will be filled with the encoded length (2 or 16 bytes).
+ * @param[out]     p_uuid_le     Pointer to a buffer where the little endian raw UUID bytes (2 or 16) will be stored.
+ *
+ * @return @ref NRF_SUCCESS Successfully encoded into the buffer.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid UUID type.
+ */
+SVCALL(SD_BLE_UUID_ENCODE, uint32_t, sd_ble_uuid_encode(ble_uuid_t const * const p_uuid, uint8_t * const  p_uuid_le_len, uint8_t * const p_uuid_le));
+
+
+/**@brief Get Version Information.
+ *
+ * @details This call allows the application to get the BLE stack version information.
+ *
+ * @param[in] p_version Pointer to ble_version_t structure to be filled in.
+ *
+ * @return @ref NRF_SUCCESS  Version information stored successfully.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_BUSY The stack is busy (typically doing a locally-initiated disconnection procedure).
+ */
+SVCALL(SD_BLE_VERSION_GET, uint32_t, sd_ble_version_get(ble_version_t * p_version));
+
+
+/**@brief Provide a user memory block.
+ *
+ * @note This call can only be used as a response to a @ref BLE_EVT_USER_MEM_REQUEST event issued to the application.
+ *
+ * @param[in] conn_handle                 Connection handle.
+ * @param[in] p_block                     Pointer to a user memory block structure.
+ *
+ * @return @ref NRF_SUCCESS               Successfully queued a response to the peer.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
+ * @return @ref NRF_ERROR_INVALID_STATE   No execute write request pending.
+ */
+SVCALL(SD_BLE_USER_MEM_REPLY, uint32_t, sd_ble_user_mem_reply(uint16_t conn_handle, ble_user_mem_block_t *p_block));
+
+
+/**@brief Set a BLE option.
+ *
+ * @details This call allows the application to set the value of an option.
+ *
+ * @param[in] opt_id Option ID.
+ * @param[in] p_opt Pointer to a ble_opt_t structure containing the option value.
+ *
+ * @retval ::NRF_SUCCESS  Option set successfully.
+ * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
+ * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints.
+ * @retval ::NRF_ERROR_INVALID_STATE Unable to set the parameter at this time.
+ * @retval ::NRF_ERROR_BUSY The stack is busy or the previous procedure has not completed.
+ */
+SVCALL(SD_BLE_OPT_SET, uint32_t, sd_ble_opt_set(uint32_t opt_id, ble_opt_t const *p_opt));
+
+
+/**@brief Get a BLE option.
+ *
+ * @details This call allows the application to retrieve the value of an option.
+ *
+ * @param[in] opt_id Option ID.
+ * @param[out] p_opt Pointer to a ble_opt_t structure to be filled in.
+ *
+ * @retval ::NRF_SUCCESS  Option retrieved successfully.
+ * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
+ * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints.
+ * @retval ::NRF_ERROR_INVALID_STATE Unable to retrieve the parameter at this time.
+ * @retval ::NRF_ERROR_BUSY The stack is busy or the previous procedure has not completed.
+ * @retval ::NRF_ERROR_NOT_SUPPORTED This option is not supported.
+ *
+ */
+SVCALL(SD_BLE_OPT_GET, uint32_t, sd_ble_opt_get(uint32_t opt_id, ble_opt_t *p_opt));
+
+/** @} */
+
+#endif /* BLE_H__ */
+
+/**
+  @}
+  @}
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/ble_err.h	Fri Oct 17 14:15:08 2014 +0100
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved.
+ *
+ * The information contained herein is confidential property of Nordic Semiconductor. The use,
+ * copying, transfer or disclosure of such information is prohibited except by express written
+ * agreement with Nordic Semiconductor.
+ *
+ */
+ /**
+  @addtogroup BLE_COMMON
+  @{
+  @addtogroup  nrf_error
+  @{
+    @ingroup BLE_COMMON
+  @}
+
+  @defgroup ble_err General error codes
+  @{
+
+  @brief General error code definitions for the BLE API.
+
+  @ingroup BLE_COMMON
+*/
+#ifndef NRF_BLE_ERR_H__
+#define NRF_BLE_ERR_H__
+
+#include "nrf_error.h"
+
+/* @defgroup BLE_ERRORS Error Codes
+ * @{ */
+#define BLE_ERROR_NOT_ENABLED            (NRF_ERROR_STK_BASE_NUM+0x001) /**< @ref sd_ble_enable has not been called. */
+#define BLE_ERROR_INVALID_CONN_HANDLE    (NRF_ERROR_STK_BASE_NUM+0x002) /**< Invalid connection handle. */
+#define BLE_ERROR_INVALID_ATTR_HANDLE    (NRF_ERROR_STK_BASE_NUM+0x003) /**< Invalid attribute handle. */
+#define BLE_ERROR_NO_TX_BUFFERS          (NRF_ERROR_STK_BASE_NUM+0x004) /**< Buffer capacity exceeded. */
+/** @} */
+
+
+/** @defgroup BLE_ERROR_SUBRANGES Module specific error code subranges
+ *  @brief Assignment of subranges for module specific error codes.
+ *  @note For specific error codes, see ble_<module>.h or ble_error_<module>.h.
+ * @{ */
+#define NRF_L2CAP_ERR_BASE             (NRF_ERROR_STK_BASE_NUM+0x100) /**< L2CAP specific errors. */
+#define NRF_GAP_ERR_BASE               (NRF_ERROR_STK_BASE_NUM+0x200) /**< GAP specific errors. */
+#define NRF_GATTC_ERR_BASE             (NRF_ERROR_STK_BASE_NUM+0x300) /**< GATT client specific errors. */
+#define NRF_GATTS_ERR_BASE             (NRF_ERROR_STK_BASE_NUM+0x400) /**< GATT server specific errors. */
+/** @} */
+
+#endif
+
+
+/**
+  @}
+  @}
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/ble_gap.h	Fri Oct 17 14:15:08 2014 +0100
@@ -0,0 +1,1035 @@
+/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved.
+ *
+ * The information contained herein is confidential property of Nordic Semiconductor. The use,
+ * copying, transfer or disclosure of such information is prohibited except by express written
+ * agreement with Nordic Semiconductor.
+ *
+ */
+/**
+  @addtogroup BLE_GAP Generic Access Profile (GAP)
+  @{
+  @brief Definitions and prototypes for the GAP interface.
+ */
+
+#ifndef BLE_GAP_H__
+#define BLE_GAP_H__
+
+#include "ble_types.h"
+#include "ble_ranges.h"
+#include "nrf_svc.h"
+
+
+/**@addtogroup BLE_GAP_ENUMERATIONS Enumerations
+ * @{ */
+
+/**@brief GAP API SVC numbers.
+ */
+enum BLE_GAP_SVCS
+{
+  SD_BLE_GAP_ADDRESS_SET  = BLE_GAP_SVC_BASE,  /**< Set own Bluetooth Address. */
+  SD_BLE_GAP_ADDRESS_GET,                      /**< Get own Bluetooth Address. */
+  SD_BLE_GAP_ADV_DATA_SET,                     /**< Set Advertisement Data. */
+  SD_BLE_GAP_ADV_START,                        /**< Start Advertising. */
+  SD_BLE_GAP_ADV_STOP,                         /**< Stop Advertising. */
+  SD_BLE_GAP_CONN_PARAM_UPDATE,                /**< Connection Parameter Update. */
+  SD_BLE_GAP_DISCONNECT,                       /**< Disconnect. */
+  SD_BLE_GAP_TX_POWER_SET,                     /**< Set TX Power. */
+  SD_BLE_GAP_APPEARANCE_SET,                   /**< Set Appearance. */
+  SD_BLE_GAP_APPEARANCE_GET,                   /**< Get Appearance. */
+  SD_BLE_GAP_PPCP_SET,                         /**< Set PPCP. */
+  SD_BLE_GAP_PPCP_GET,                         /**< Get PPCP. */
+  SD_BLE_GAP_DEVICE_NAME_SET,                  /**< Set Device Name. */
+  SD_BLE_GAP_DEVICE_NAME_GET,                  /**< Get Device Name. */
+  SD_BLE_GAP_AUTHENTICATE,                     /**< Initiate Pairing/Bonding. */
+  SD_BLE_GAP_SEC_PARAMS_REPLY,                 /**< Reply with Security Parameters. */
+  SD_BLE_GAP_AUTH_KEY_REPLY,                   /**< Reply with an authentication key. */
+  SD_BLE_GAP_SEC_INFO_REPLY,                   /**< Reply with Security Information. */
+  SD_BLE_GAP_CONN_SEC_GET,                     /**< Obtain connection security level. */
+  SD_BLE_GAP_RSSI_START,                       /**< Start reporting of changes in RSSI. */
+  SD_BLE_GAP_RSSI_STOP,                        /**< Stop reporting of changes in RSSI. */
+};
+/**@} */
+
+/**@addtogroup BLE_GAP_DEFINES Defines
+ * @{ */
+
+/**@defgroup BLE_ERRORS_GAP SVC return values specific to GAP
+ * @{ */
+#define BLE_ERROR_GAP_UUID_LIST_MISMATCH            (NRF_GAP_ERR_BASE + 0x000)  /**< UUID list does not contain an integral number of UUIDs. */
+#define BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST   (NRF_GAP_ERR_BASE + 0x001)  /**< Use of Whitelist not permitted with discoverable advertising. */
+#define BLE_ERROR_GAP_INVALID_BLE_ADDR              (NRF_GAP_ERR_BASE + 0x002)  /**< The upper two bits of the address do not correspond to the specified address type. */
+/**@} */
+
+
+/**@defgroup BLE_GAP_ROLES GAP Roles
+ * @note Not explicitly used in peripheral API, but will be relevant for central API.
+ * @{ */
+#define BLE_GAP_ROLE_INVALID     0x0            /**< Invalid Role. */
+#define BLE_GAP_ROLE_PERIPH      0x1            /**< Peripheral Role. */
+#define BLE_GAP_ROLE_CENTRAL     0x2            /**< Central Role. */
+/**@} */
+
+
+/**@defgroup BLE_GAP_TIMEOUT_SOURCES GAP Timeout sources
+ * @{ */
+#define BLE_GAP_TIMEOUT_SRC_ADVERTISEMENT              0x00 /**< Advertisement timeout. */
+#define BLE_GAP_TIMEOUT_SRC_SECURITY_REQUEST           0x01 /**< Security request timeout. */
+/**@} */
+
+
+/**@defgroup BLE_GAP_ADDR_TYPES GAP Address types
+ * @{ */
+#define BLE_GAP_ADDR_TYPE_PUBLIC                        0x00 /**< Public address. */
+#define BLE_GAP_ADDR_TYPE_RANDOM_STATIC                 0x01 /**< Random Static address. */
+#define BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE     0x02 /**< Private Resolvable address. */
+#define BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE 0x03 /**< Private Non-Resolvable address. */
+/**@} */
+
+/**@defgroup BLE_GAP_ADDR_CYCLE_MODES GAP Address cycle modes
+ * @{ */
+#define BLE_GAP_ADDR_CYCLE_MODE_NONE      0x00 /**< Set addresses directly, no automatic address cycling. */
+#define BLE_GAP_ADDR_CYCLE_MODE_AUTO      0x01 /**< Automatically generate and update private addresses. */
+/** @} */
+
+/**@brief The default interval in seconds at which a private address is refreshed when address cycle mode is @ref BLE_GAP_ADDR_CYCLE_MODE_AUTO.  */
+#define BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S (60 * 15)
+
+/** @brief BLE address length. */
+#define BLE_GAP_ADDR_LEN            6
+
+
+/**@defgroup BLE_GAP_AD_TYPE_DEFINITIONS GAP Advertising and Scan Response Data format
+ * @note Found at https://www.bluetooth.org/Technical/AssignedNumbers/generic_access_profile.htm
+ * @{ */
+#define BLE_GAP_AD_TYPE_FLAGS                               0x01 /**< Flags for discoverability. */
+#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_MORE_AVAILABLE   0x02 /**< Partial list of 16 bit service UUIDs. */
+#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_COMPLETE         0x03 /**< Complete list of 16 bit service UUIDs. */
+#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_MORE_AVAILABLE   0x04 /**< Partial list of 32 bit service UUIDs. */
+#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_COMPLETE         0x05 /**< Complete list of 32 bit service UUIDs. */
+#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_MORE_AVAILABLE  0x06 /**< Partial list of 128 bit service UUIDs. */
+#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_COMPLETE        0x07 /**< Complete list of 128 bit service UUIDs. */
+#define BLE_GAP_AD_TYPE_SHORT_LOCAL_NAME                    0x08 /**< Short local device name. */
+#define BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME                 0x09 /**< Complete local device name. */
+#define BLE_GAP_AD_TYPE_TX_POWER_LEVEL                      0x0A /**< Transmit power level. */
+#define BLE_GAP_AD_TYPE_CLASS_OF_DEVICE                     0x0D /**< Class of device. */
+#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C               0x0E /**< Simple Pairing Hash C. */
+#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R         0x0F /**< Simple Pairing Randomizer R. */
+#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_TK_VALUE           0x10 /**< Security Manager TK Value. */
+#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_OOB_FLAGS          0x11 /**< Security Manager Out Of Band Flags. */
+#define BLE_GAP_AD_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE     0x12 /**< Slave Connection Interval Range. */
+#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_16BIT       0x14 /**< List of 16-bit Service Solicitation UUIDs. */
+#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_128BIT      0x15 /**< List of 128-bit Service Solicitation UUIDs. */
+#define BLE_GAP_AD_TYPE_SERVICE_DATA                        0x16 /**< Service Data - 16-bit UUID. */
+#define BLE_GAP_AD_TYPE_PUBLIC_TARGET_ADDRESS               0x17 /**< Public Target Address. */
+#define BLE_GAP_AD_TYPE_RANDOM_TARGET_ADDRESS               0x18 /**< Random Target Address. */
+#define BLE_GAP_AD_TYPE_APPEARANCE                          0x19 /**< Appearance. */
+#define BLE_GAP_AD_TYPE_ADVERTISING_INTERVAL                0x1A /**< Advertising Interval. */
+#define BLE_GAP_AD_TYPE_LE_BLUETOOTH_DEVICE_ADDRESS         0x1B /**< LE Bluetooth Device Address. */
+#define BLE_GAP_AD_TYPE_LE_ROLE                             0x1C /**< LE Role. */
+#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C256            0x1D /**< Simple Pairing Hash C-256. */
+#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R256      0x1E /**< Simple Pairing Randomizer R-256. */
+#define BLE_GAP_AD_TYPE_SERVICE_DATA_32BIT_UUID             0x20 /**< Service Data - 32-bit UUID. */
+#define BLE_GAP_AD_TYPE_SERVICE_DATA_128BIT_UUID            0x21 /**< Service Data - 128-bit UUID. */
+#define BLE_GAP_AD_TYPE_3D_INFORMATION_DATA                 0x3D /**< 3D Information Data. */
+#define BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA          0xFF /**< Manufacturer Specific Data. */
+/**@} */
+
+
+/**@defgroup BLE_GAP_ADV_FLAGS GAP Advertisement Flags
+ * @{ */
+#define BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE         (0x01)   /**< LE Limited Discoverable Mode. */
+#define BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE         (0x02)   /**< LE General Discoverable Mode. */
+#define BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED         (0x04)   /**< BR/EDR not supported. */
+#define BLE_GAP_ADV_FLAG_LE_BR_EDR_CONTROLLER         (0x08)   /**< Simultaneous LE and BR/EDR, Controller. */
+#define BLE_GAP_ADV_FLAG_LE_BR_EDR_HOST               (0x10)   /**< Simultaneous LE and BR/EDR, Host. */
+#define BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE   (BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED)   /**< LE Limited Discoverable Mode, BR/EDR not supported. */
+#define BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE   (BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED)   /**< LE General Discoverable Mode, BR/EDR not supported. */
+/**@} */
+
+
+/**@defgroup BLE_GAP_ADV_INTERVALS GAP Advertising interval max and min
+ * @{ */
+#define BLE_GAP_ADV_INTERVAL_MIN        0x0020 /**< Minimum Advertising interval in 625 us units, i.e. 20 ms. */
+#define BLE_GAP_ADV_NONCON_INTERVAL_MIN 0x00A0 /**< Minimum Advertising interval in 625 us units for non connectable mode, i.e. 100 ms. */
+#define BLE_GAP_ADV_INTERVAL_MAX        0x4000 /**< Maximum Advertising interval in 625 us units, i.e. 10.24 s. */
+ /**@}  */
+
+
+/**@brief Maximum size of advertising data in octets. */
+#define  BLE_GAP_ADV_MAX_SIZE       31
+
+
+/**@defgroup BLE_GAP_ADV_TYPES GAP Advertising types
+ * @{ */
+#define BLE_GAP_ADV_TYPE_ADV_IND          0x00   /**< Connectable undirected. */
+#define BLE_GAP_ADV_TYPE_ADV_DIRECT_IND   0x01   /**< Connectable directed. */
+#define BLE_GAP_ADV_TYPE_ADV_SCAN_IND     0x02   /**< Scannable undirected. */
+#define BLE_GAP_ADV_TYPE_ADV_NONCONN_IND  0x03   /**< Non connectable undirected. */
+/**@} */
+
+
+/**@defgroup BLE_GAP_ADV_FILTER_POLICIES GAP Advertising filter policies
+ * @{ */
+#define BLE_GAP_ADV_FP_ANY                0x00   /**< Allow scan requests and connect requests from any device. */
+#define BLE_GAP_ADV_FP_FILTER_SCANREQ     0x01   /**< Filter scan requests with whitelist. */
+#define BLE_GAP_ADV_FP_FILTER_CONNREQ     0x02   /**< Filter connect requests with whitelist. */
+#define BLE_GAP_ADV_FP_FILTER_BOTH        0x03   /**< Filter both scan and connect requests with whitelist. */
+/**@} */
+
+
+/**@defgroup BLE_GAP_ADV_TIMEOUT_VALUES GAP Advertising timeout values
+ * @{ */
+#define BLE_GAP_ADV_TIMEOUT_LIMITED_MAX      180 /**< Maximum advertising time in limited discoverable mode (TGAP(lim_adv_timeout) = 180s in spec (Addendum 2)). */
+#define BLE_GAP_ADV_TIMEOUT_GENERAL_UNLIMITED  0 /**< Unlimited advertising in general discoverable mode. */
+/**@} */
+
+
+/**@defgroup BLE_GAP_DISC_MODES GAP Discovery modes
+ * @{ */
+#define BLE_GAP_DISC_MODE_NOT_DISCOVERABLE  0x00   /**< Not discoverable discovery Mode. */
+#define BLE_GAP_DISC_MODE_LIMITED           0x01   /**< Limited Discovery Mode. */
+#define BLE_GAP_DISC_MODE_GENERAL           0x02   /**< General Discovery Mode. */
+/**@} */
+
+/**@defgroup BLE_GAP_IO_CAPS GAP IO Capabilities
+ * @{ */
+#define BLE_GAP_IO_CAPS_DISPLAY_ONLY      0x00   /**< Display Only. */
+#define BLE_GAP_IO_CAPS_DISPLAY_YESNO     0x01   /**< Display and Yes/No entry. */
+#define BLE_GAP_IO_CAPS_KEYBOARD_ONLY     0x02   /**< Keyboard Only. */
+#define BLE_GAP_IO_CAPS_NONE              0x03   /**< No I/O capabilities. */
+#define BLE_GAP_IO_CAPS_KEYBOARD_DISPLAY  0x04   /**< Keyboard and Display. */
+/**@} */
+
+
+/**@defgroup BLE_GAP_AUTH_KEY_TYPES GAP Authentication Key Types
+ * @{ */
+#define BLE_GAP_AUTH_KEY_TYPE_NONE        0x00   /**< No key (may be used to reject). */
+#define BLE_GAP_AUTH_KEY_TYPE_PASSKEY     0x01   /**< 6-digit Passkey. */
+#define BLE_GAP_AUTH_KEY_TYPE_OOB         0x02   /**< Out Of Band data. */
+/**@} */
+
+/**@defgroup BLE_GAP_SEC_STATUS GAP Security status
+ * @{ */
+#define BLE_GAP_SEC_STATUS_SUCCESS                0x00  /**< Successful parameters. */
+#define BLE_GAP_SEC_STATUS_TIMEOUT                0x01  /**< Procedure timed out. */
+#define BLE_GAP_SEC_STATUS_PDU_INVALID            0x02  /**< Invalid PDU received. */
+#define BLE_GAP_SEC_STATUS_PASSKEY_ENTRY_FAILED   0x81  /**< Passkey entry failed (user cancelled or other). */
+#define BLE_GAP_SEC_STATUS_OOB_NOT_AVAILABLE      0x82  /**< Out of Band Key not available. */
+#define BLE_GAP_SEC_STATUS_AUTH_REQ               0x83  /**< Authentication requirements not met. */
+#define BLE_GAP_SEC_STATUS_CONFIRM_VALUE          0x84  /**< Confirm value failed. */
+#define BLE_GAP_SEC_STATUS_PAIRING_NOT_SUPP       0x85  /**< Pairing not supported.  */
+#define BLE_GAP_SEC_STATUS_ENC_KEY_SIZE           0x86  /**< Encryption key size. */
+#define BLE_GAP_SEC_STATUS_SMP_CMD_UNSUPPORTED    0x87  /**< Unsupported SMP command. */
+#define BLE_GAP_SEC_STATUS_UNSPECIFIED            0x88  /**< Unspecified reason. */
+#define BLE_GAP_SEC_STATUS_REPEATED_ATTEMPTS      0x89  /**< Too little time elapsed since last attempt. */
+#define BLE_GAP_SEC_STATUS_INVALID_PARAMS         0x8A  /**< Invalid parameters. */
+/**@} */
+
+/**@defgroup BLE_GAP_SEC_STATUS_SOURCES GAP Security status sources
+ * @{ */
+#define BLE_GAP_SEC_STATUS_SOURCE_LOCAL           0x00  /**< Local failure. */
+#define BLE_GAP_SEC_STATUS_SOURCE_REMOTE          0x01  /**< Remote failure. */
+/**@} */
+
+/**@defgroup BLE_GAP_CP_LIMITS GAP Connection Parameters Limits
+ * @{ */
+#define BLE_GAP_CP_MIN_CONN_INTVL_NONE           0xFFFF  /**< No new minimum connction interval specified in connect parameters. */
+#define BLE_GAP_CP_MIN_CONN_INTVL_MIN            0x0006  /**< Lowest mimimum connection interval permitted, in units of 1.25 ms, i.e. 7.5 ms. */
+#define BLE_GAP_CP_MIN_CONN_INTVL_MAX            0x0C80  /**< Highest minimum connection interval permitted, in units of 1.25 ms, i.e. 4 s. */
+#define BLE_GAP_CP_MAX_CONN_INTVL_NONE           0xFFFF  /**< No new maximum connction interval specified in connect parameters. */
+#define BLE_GAP_CP_MAX_CONN_INTVL_MIN            0x0006  /**< Lowest maximum connection interval permitted, in units of 1.25 ms, i.e. 7.5 ms. */
+#define BLE_GAP_CP_MAX_CONN_INTVL_MAX            0x0C80  /**< Highest maximum connection interval permitted, in units of 1.25 ms, i.e. 4 s. */
+#define BLE_GAP_CP_SLAVE_LATENCY_MAX             0x03E8  /**< Highest slave latency permitted, in connection events. */
+#define BLE_GAP_CP_CONN_SUP_TIMEOUT_NONE         0xFFFF  /**< No new supervision timeout specified in connect parameters. */
+#define BLE_GAP_CP_CONN_SUP_TIMEOUT_MIN          0x000A  /**< Lowest supervision timeout permitted, in units of 10 ms, i.e. 100 ms. */
+#define BLE_GAP_CP_CONN_SUP_TIMEOUT_MAX          0x0C80  /**< Highest supervision timeout permitted, in units of 10 ms, i.e. 32 s. */
+/**@} */
+
+
+/**@brief GAP device name maximum length. */
+#define BLE_GAP_DEVNAME_MAX_LEN           31
+
+
+/**@defgroup BLE_GAP_CONN_SEC_MODE_SET_MACROS GAP attribute security requirement setters
+ *
+ * See @ref ble_gap_conn_sec_mode_t.
+ * @{ */
+/**@brief Set sec_mode pointed to by ptr to have no access rights.*/
+#define BLE_GAP_CONN_SEC_MODE_SET_NO_ACCESS(ptr)         do {(ptr)->sm = 0; (ptr)->lv = 0;} while(0)
+/**@brief Set sec_mode pointed to by ptr to require no protection, open link.*/
+#define BLE_GAP_CONN_SEC_MODE_SET_OPEN(ptr)              do {(ptr)->sm = 1; (ptr)->lv = 1;} while(0)
+/**@brief Set sec_mode pointed to by ptr to require encryption, but no MITM protection.*/
+#define BLE_GAP_CONN_SEC_MODE_SET_ENC_NO_MITM(ptr)       do {(ptr)->sm = 1; (ptr)->lv = 2;} while(0)
+/**@brief Set sec_mode pointed to by ptr to require encryption and MITM protection.*/
+#define BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(ptr)     do {(ptr)->sm = 1; (ptr)->lv = 3;} while(0)
+/**@brief Set sec_mode pointed to by ptr to require signing or encryption, no MITM protection needed.*/
+#define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_NO_MITM(ptr)    do {(ptr)->sm = 2; (ptr)->lv = 1;} while(0)
+/**@brief Set sec_mode pointed to by ptr to require signing or encryption with MITM protection.*/
+#define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_WITH_MITM(ptr)  do {(ptr)->sm = 2; (ptr)->lv = 2;} while(0)
+/**@} */
+
+
+/**@brief GAP Security Key Length. */
+#define BLE_GAP_SEC_KEY_LEN 16
+
+/**@brief GAP Passkey Length. */
+#define BLE_GAP_PASSKEY_LEN 6
+
+/**@brief Maximum amount of addresses in a whitelist. */
+#define BLE_GAP_WHITELIST_ADDR_MAX_COUNT (8)
+
+/**@brief Maximum amount of IRKs in a whitelist.
+ * @note  The number of IRKs is limited to 8, even if the hardware supports more.
+ */
+#define BLE_GAP_WHITELIST_IRK_MAX_COUNT (8)
+
+/**@defgroup GAP_SEC_MODES GAP Security Modes
+ * @{ */
+#define BLE_GAP_SEC_MODE 0x00 /**< No key (may be used to reject). */
+/**@} */
+
+/**@} */
+
+/**@addtogroup BLE_GAP_STRUCTURES Structures
+ * @{ */
+
+/**@brief Bluetooth Low Energy address. */
+typedef struct
+{
+  uint8_t addr_type;                    /**< See @ref BLE_GAP_ADDR_TYPES. */
+  uint8_t addr[BLE_GAP_ADDR_LEN];       /**< 48-bit address, LSB format. */
+} ble_gap_addr_t;
+
+
+/**@brief GAP connection parameters.
+ *
+ * @note  When ble_conn_params_t is received in an event, both min_conn_interval and
+ *        max_conn_interval will be equal to the connection interval set by the central.
+ */
+typedef struct
+{
+  uint16_t min_conn_interval;         /**< Minimum Connection Interval in 1.25 ms units, see @ref BLE_GAP_CP_LIMITS.*/
+  uint16_t max_conn_interval;         /**< Maximum Connection Interval in 1.25 ms units, see @ref BLE_GAP_CP_LIMITS.*/
+  uint16_t slave_latency;             /**< Slave Latency in number of connection events, see @ref BLE_GAP_CP_LIMITS.*/
+  uint16_t conn_sup_timeout;          /**< Connection Supervision Timeout in 10 ms units, see @ref BLE_GAP_CP_LIMITS.*/
+} ble_gap_conn_params_t;
+
+
+/**@brief GAP link requirements.
+ *
+ * See Bluetooth Core specification, Volume 3 Part C 10.2 for details.
+ *
+ * Security Mode 0 Level 0: No access permissions at all (this level is not defined by the Bluetooth Core specification).\n
+ * Security Mode 1 Level 1: No security is needed (aka open link).\n
+ * Security Mode 1 Level 2: Encrypted link required, MITM protection not necessary.\n
+ * Security Mode 1 Level 3: MITM protected encrypted link required.\n
+ * Security Mode 2 Level 1: Signing or encryption required, MITM protection not necessary.\n
+ * Security Mode 2 Level 2: MITM protected signing required, unless link is MITM protected encrypted.\n
+ */
+typedef struct
+{
+  uint8_t sm : 4;                     /**< Security Mode (1 or 2), 0 for no permissions at all. */
+  uint8_t lv : 4;                     /**< Level (1, 2 or 3), 0 for no permissions at all. */
+
+} ble_gap_conn_sec_mode_t;
+
+
+/**@brief GAP connection security status.*/
+typedef struct
+{
+  ble_gap_conn_sec_mode_t sec_mode;           /**< Currently active security mode for this connection.*/
+  uint8_t                 encr_key_size;      /**< Length of currently active encryption key, 7 to 16 octets (only applicable for bonding procedures). */
+} ble_gap_conn_sec_t;
+
+
+/**@brief Identity Resolving Key. */
+typedef struct
+{
+  uint8_t irk[BLE_GAP_SEC_KEY_LEN];   /**< Array containing IRK. */
+} ble_gap_irk_t;
+
+
+/**@brief Whitelist structure. */
+typedef struct
+{
+  ble_gap_addr_t   ** pp_addrs;        /**< Pointer to array of device address pointers, pointing to addresses to be used in whitelist. NULL if none are given. */
+  uint8_t             addr_count;      /**< Count of device addresses in array, up to @ref BLE_GAP_WHITELIST_ADDR_MAX_COUNT. */
+  ble_gap_irk_t    ** pp_irks;         /**< Pointer to array of Identity Resolving Key (IRK) pointers, each pointing to an IRK in the whitelist. NULL if none are given. */
+  uint8_t             irk_count;       /**< Count of IRKs in array, up to @ref BLE_GAP_WHITELIST_IRK_MAX_COUNT. */
+} ble_gap_whitelist_t;
+
+
+/**@brief GAP advertising parameters.*/
+typedef struct
+{
+  uint8_t               type;                 /**< See @ref BLE_GAP_ADV_TYPES. */
+  ble_gap_addr_t*       p_peer_addr;          /**< For BLE_GAP_CONN_MODE_DIRECTED mode only, known peer address. */
+  uint8_t               fp;                   /**< Filter Policy, see @ref BLE_GAP_ADV_FILTER_POLICIES. */
+  ble_gap_whitelist_t * p_whitelist;          /**< Pointer to whitelist, NULL if none is given. */
+  uint16_t              interval;             /**< Advertising interval between 0x0020 and 0x4000 in 0.625 ms units (20ms to 10.24s), see @ref BLE_GAP_ADV_INTERVALS.
+                                                   - If type equals @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND, this parameter must be set to 0 for high duty cycle directed advertising.
+                                                   - If type equals @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND, set @ref BLE_GAP_ADV_INTERVAL_MIN <= interval <= @ref BLE_GAP_ADV_INTERVAL_MAX for low duty cycle advertising */
+  uint16_t              timeout;              /**< Advertising timeout between 0x0001 and 0x3FFF in seconds, 0x0000 disables timeout. See also @ref BLE_GAP_ADV_TIMEOUT_VALUES. If type equals @ref BLE_GAP_ADV_TYPE_ADV_DIRECT_IND, this parameter must be set to 0 for High duty cycle directed advertising. */
+} ble_gap_adv_params_t;
+
+
+/**@brief GAP scanning parameters. */
+typedef struct
+{
+  uint8_t    filter;                    /**< Filter based on discovery mode, see @ref BLE_GAP_DISC_MODES. */
+  uint8_t    active    : 1;             /**< If 1, perform active scanning (scan requests). */
+  uint8_t    selective : 1;             /**< If 1, ignore unknown devices (non whitelisted). */
+  uint16_t   interval;                  /**< Scan interval between 0x0020 and 0x4000 in 0.625ms units (20ms to 10.24s). */
+  uint16_t   window;                    /**< Scan window between 0x0004 and 0x4000 in 0.625ms units (2.5ms to 10.24s). */
+  uint16_t   timeout;                   /**< Scan timeout between 0x0001 and 0x3FFF in seconds, 0x0000 disables timeout. */
+} ble_gap_scan_params_t;
+
+
+/**@brief GAP security parameters. */
+typedef struct
+{
+  uint16_t   timeout;                   /**< Timeout for SMP transactions or Security Request in seconds, see @ref sd_ble_gap_authenticate and @ref sd_ble_gap_sec_params_reply for more information. */
+  uint8_t    bond    : 1;               /**< Perform bonding. */
+  uint8_t    mitm    : 1;               /**< Man In The Middle protection required. */
+  uint8_t    io_caps : 3;               /**< IO capabilities, see @ref BLE_GAP_IO_CAPS. */
+  uint8_t    oob     : 1;               /**< Out Of Band data available. */
+  uint8_t    min_key_size;              /**< Minimum encryption key size in octets between 7 and 16. */
+  uint8_t    max_key_size;              /**< Maximum encryption key size in octets between min_key_size and 16. */
+} ble_gap_sec_params_t;
+
+
+/**@brief GAP Encryption Information. */
+typedef struct
+{
+  uint16_t  div;                        /**< Encryption Diversifier. */
+  uint8_t   ltk[BLE_GAP_SEC_KEY_LEN];   /**< Long Term Key. */
+  uint8_t   auth : 1;                   /**< Authenticated Key. */
+  uint8_t   ltk_len : 7;                /**< LTK length in octets. */
+} ble_gap_enc_info_t;
+
+
+/**@brief GAP Master Identification. */
+typedef struct
+{
+  uint16_t  ediv;                       /**< Encrypted Diversifier. */
+  uint8_t   rand[8];                    /**< Random Number. */
+} ble_gap_master_id_t;
+
+
+/**@brief GAP Identity Information. */
+typedef struct
+{
+  ble_gap_addr_t  addr;                       /**< Bluetooth address to which this key applies. */
+  uint8_t         irk[BLE_GAP_SEC_KEY_LEN];   /**< Identity Resolution Key. */
+} ble_gap_id_info_t;
+
+
+/**@brief GAP Signing Information. */
+typedef struct
+{
+  uint8_t   csrk[BLE_GAP_SEC_KEY_LEN]; /* Connection Signature Resolving Key. */
+} ble_gap_sign_info_t;
+
+
+/**@brief GAP Event IDs.
+ * Those IDs uniquely identify an event coming from the stack to the application.
+ */
+enum BLE_GAP_EVTS
+{
+  BLE_GAP_EVT_CONNECTED  = BLE_GAP_EVT_BASE,    /**< Connection established. */
+  BLE_GAP_EVT_DISCONNECTED,                     /**< Disconnected from peer. */
+  BLE_GAP_EVT_CONN_PARAM_UPDATE,                /**< Connection Parameters updated. */
+  BLE_GAP_EVT_SEC_PARAMS_REQUEST,               /**< Request to provide security parameters. */
+  BLE_GAP_EVT_SEC_INFO_REQUEST,                 /**< Request to provide security information. */
+  BLE_GAP_EVT_PASSKEY_DISPLAY,                  /**< Request to display a passkey to the user. */
+  BLE_GAP_EVT_AUTH_KEY_REQUEST,                 /**< Request to provide an authentication key. */
+  BLE_GAP_EVT_AUTH_STATUS,                      /**< Authentication procedure completed with status. */
+  BLE_GAP_EVT_CONN_SEC_UPDATE,                  /**< Connection security updated. */
+  BLE_GAP_EVT_TIMEOUT,                          /**< Timeout expired. */
+  BLE_GAP_EVT_RSSI_CHANGED,                     /**< Signal strength measurement report. */
+};
+
+
+/**
+ * @brief GAP Option IDs.
+ * IDs that uniquely identify a GAP option.
+ */
+enum BLE_GAP_OPTS
+{
+  BLE_GAP_OPT_LOCAL_CONN_LATENCY  = BLE_GAP_OPT_BASE,    /**< Local connection latency. */
+  BLE_GAP_OPT_PASSKEY,                                   /**< Set passkey to be used during pairing. This option can be used to make the SoftDevice use an application provided passkey instead of generating a random passkey.*/
+  BLE_GAP_OPT_PRIVACY,                                   /**< Set or get custom IRK or custom private address cycle interval. */
+};
+/**@} */
+
+
+/**@brief Event data for connected event. */
+typedef struct
+{
+  ble_gap_addr_t        peer_addr;              /**< Bluetooth address of the peer device. */
+  uint8_t               irk_match :1;           /**< If 1, peer device's address resolved using an IRK. */
+  uint8_t               irk_match_idx  :7;      /**< Index in IRK list where the address was matched. */
+  ble_gap_conn_params_t conn_params;            /**< GAP Connection Parameters. */
+} ble_gap_evt_connected_t;
+
+
+/**@brief Event data for disconnected event. */
+typedef struct
+{
+  uint8_t reason;                               /**< HCI error code. */
+} ble_gap_evt_disconnected_t;
+
+
+/**@brief Event data for connection parameter update event. */
+typedef struct
+{
+  ble_gap_conn_params_t conn_params;            /**<  GAP Connection Parameters. */
+} ble_gap_evt_conn_param_update_t;
+
+
+/**@brief Event data for security parameters request event. */
+typedef struct
+{
+  ble_gap_sec_params_t peer_params;             /**< Initiator Security Parameters. */
+} ble_gap_evt_sec_params_request_t;
+
+
+/**@brief Event data for security info request event. */
+typedef struct
+{
+  ble_gap_addr_t peer_addr;                     /**< Bluetooth address of the peer device. */
+  uint16_t       div;                           /**< Encryption diversifier for LTK lookup. */
+  uint8_t        enc_info  : 1;                 /**< If 1, Encryption Information required. */
+  uint8_t        id_info   : 1;                 /**< If 1, Identity Information required. */
+  uint8_t        sign_info : 1;                 /**< If 1, Signing Information required. */
+} ble_gap_evt_sec_info_request_t;
+
+
+/**@brief Event data for passkey display event. */
+typedef struct
+{
+  uint8_t passkey[BLE_GAP_PASSKEY_LEN];         /**< 6-digit passkey in ASCII ('0'-'9' digits only). */
+} ble_gap_evt_passkey_display_t;
+
+
+/**@brief Event data for authentication key request event. */
+typedef struct
+{
+  uint8_t key_type;                             /**< See @ref BLE_GAP_AUTH_KEY_TYPES. */
+} ble_gap_evt_auth_key_request_t;
+
+
+/**@brief Security levels supported.
+ * @note See Bluetooth Specification Version 4.1 Volume 3, Part C, Chapter 10.
+*/
+typedef struct
+{
+  uint8_t lv1 : 1;                              /**< If 1: Level 1 is supported. */
+  uint8_t lv2 : 1;                              /**< If 1: Level 2 is supported. */
+  uint8_t lv3 : 1;                              /**< If 1: Level 3 is supported. */
+} ble_gap_sec_levels_t;
+
+
+/**@brief Keys that have been exchanged. */
+typedef struct
+{
+  uint8_t ltk       : 1;                        /**< Long Term Key. */
+  uint8_t ediv_rand : 1;                        /**< Encrypted Diversifier and Random value. */
+  uint8_t irk       : 1;                        /**< Identity Resolving Key. */
+  uint8_t address   : 1;                        /**< Public or static random address. */
+  uint8_t csrk      : 1;                        /**< Connection Signature Resolving Key. */
+} ble_gap_sec_keys_t;
+
+
+/**@brief Event data for authentication status event. */
+typedef struct
+{
+  uint8_t               auth_status;            /**< Authentication status, see @ref BLE_GAP_SEC_STATUS. */
+  uint8_t               error_src;              /**< On error, source that caused the failure, see @ref BLE_GAP_SEC_STATUS_SOURCES. */
+  ble_gap_sec_levels_t  sm1_levels;             /**< Levels supported in Security Mode 1. */
+  ble_gap_sec_levels_t  sm2_levels;             /**< Levels supported in Security Mode 2. */
+  ble_gap_sec_keys_t    periph_kex;             /**< Bitmap stating which keys were exchanged (distributed) by the peripheral. */
+  ble_gap_sec_keys_t    central_kex;            /**< Bitmap stating which keys were exchanged (distributed) by the central. */
+  struct periph_keys_t
+  {
+    ble_gap_enc_info_t    enc_info;             /**< Peripheral's Encryption information. */
+  } periph_keys;                                /**< Actual keys distributed from the Peripheral to the Central. */
+  struct central_keys_t
+  {
+    ble_gap_irk_t         irk;                  /**< Central's IRK. */
+    ble_gap_addr_t        id_info;              /**< Central's Identity Info. */
+  } central_keys;                               /**< Actual keys distributed from the Central to the Peripheral. */
+} ble_gap_evt_auth_status_t;
+
+
+/**@brief Event data for connection security update event. */
+typedef struct
+{
+  ble_gap_conn_sec_t conn_sec;                  /**< Connection security level. */
+} ble_gap_evt_conn_sec_update_t;
+
+
+/**@brief Event data for timeout event. */
+typedef struct
+{
+  uint8_t src;                                  /**< Source of timeout event, see @ref BLE_GAP_TIMEOUT_SOURCES. */
+} ble_gap_evt_timeout_t;
+
+
+/**@brief Event data for advertisement report event. */
+typedef struct
+{
+  int8_t  rssi;                               /**< Received Signal Strength Indication in dBm. */
+} ble_gap_evt_rssi_changed_t;
+
+
+/**@brief GAP event callback event structure. */
+typedef struct
+{
+  uint16_t conn_handle;                                     /**< Connection Handle on which event occured. */
+  union                                                     /**< union alternative identified by evt_id in enclosing struct. */
+  {
+    ble_gap_evt_connected_t          connected;             /**< Connected Event Parameters. */
+    ble_gap_evt_disconnected_t       disconnected;          /**< Disconnected Event Parameters. */
+    ble_gap_evt_conn_param_update_t  conn_param_update;     /**< Connection Parameter Update Parameters. */
+    ble_gap_evt_sec_params_request_t sec_params_request;    /**< Security Parameters Request Event Parameters. */
+    ble_gap_evt_sec_info_request_t   sec_info_request;      /**< Security Information Request Event Parameters. */
+    ble_gap_evt_passkey_display_t    passkey_display;       /**< Passkey Display Event Parameters. */
+    ble_gap_evt_auth_key_request_t   auth_key_request;      /**< Authentication Key Request Event Parameters. */
+    ble_gap_evt_auth_status_t        auth_status;           /**< Authentication Status Event Parameters. */
+    ble_gap_evt_conn_sec_update_t    conn_sec_update;       /**< Connection Security Update Event Parameters. */
+    ble_gap_evt_timeout_t            timeout;               /**< Timeout Event Parameters. */
+    ble_gap_evt_rssi_changed_t       rssi_changed;          /**< RSSI Event parameters. */
+  } params;
+
+} ble_gap_evt_t;
+
+
+/**@brief Local connection latency option.
+ *
+ *         Local connection latency is a feature which enables the slave to improve
+ *         current consumption by ignoring the slave latency set by the peer. The
+ *         local connection latency can only be set to a multiple of the slave latency,
+ *         and cannot be longer than half of the supervision timeout.
+ *
+ *         Used with @ref sd_ble_opt_set to set the local connection latency. The
+ *         @ref sd_ble_opt_get is not supported for this option, but the actual
+ *         local connection latency (unless set to NULL) is set as a return parameter
+ *         when setting the option.
+ *
+ *  @note  The latency set will be truncated down to the closest slave latency event
+ *         multiple, or the nearest multiple before half of the supervision timeout.
+ *
+ *  @note  The local connection latency is default off, and needs to be set for new
+ *         connections and whenever the connection is updated.
+ *
+ *  @retval ::NRF_SUCCESS Set successfully.
+ *  @retval ::NRF_ERROR_NOT_SUPPORTED Get is not supported.
+ *  @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle parameter.
+ */
+typedef struct
+{
+  uint16_t   conn_handle;                       /**< Connection Handle */
+  uint16_t   requested_latency;                 /**< Requested local connection latency. */
+  uint16_t * p_actual_latency;                  /**< Pointer to storage for the actual local connection latency (can be set to NULL to skip return value). */
+} ble_gap_opt_local_conn_latency_t;
+
+
+/**@brief Passkey Option.
+ *
+ *        Structure containing the passkey to be used during pairing. This can be used with @ref
+ *        sd_ble_opt_set to make the SoftDevice use a pre-programmed passkey for authentication
+ *        instead of generating a random one.
+ *
+ * @note  @ref sd_ble_opt_get is not supported for this option.
+ *
+ */
+typedef struct
+{
+  uint8_t * p_passkey;                          /**< Pointer to 6-digit ASCII string (digit 0..9 only, no NULL termination) passkey to be used during pairing. If this is NULL, the SoftDevice will generate a random passkey if required.*/
+} ble_gap_opt_passkey_t;
+
+
+/**@brief Custom Privacy Options.
+ *
+ * @note The specified address cycle interval is used when the address cycle mode is
+ * @ref BLE_GAP_ADDR_CYCLE_MODE_AUTO. If 0 is given, the address will not be refreshed at any
+ * interval, and not at start of advertising. A new address can be generated manually by calling
+ * @ref sd_ble_gap_address_set with the same type again. The default interval is
+ * @ref BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S.
+ *
+ * @note If cycle mode is @ref BLE_GAP_ADDR_CYCLE_MODE_AUTO, the address will immediately be
+ * refreshed when this option is set.
+ */
+typedef struct
+{
+  ble_gap_irk_t * p_irk;        /**< When input: Pointer to custom IRK, or NULL to use/reset to the device's default IRK. When output: Pointer to where the current IRK is to be stored, or NULL to not read out the IRK. */
+  uint16_t        interval_s;   /**< When input: Custom private address cycle interval in seconds. When output: The current private address cycle interval. */
+} ble_gap_opt_privacy_t;
+
+
+/**@brief Option structure for GAP options. */
+typedef union
+{
+  ble_gap_opt_local_conn_latency_t local_conn_latency;  /**< Local connection latency. */
+  ble_gap_opt_passkey_t            passkey;             /**< Passkey to be used for pairing.*/
+  ble_gap_opt_privacy_t            privacy;             /**< Custom privacy options. */
+} ble_gap_opt_t;
+/**@} */
+
+
+/**@addtogroup BLE_GAP_FUNCTIONS Functions
+ * @{ */
+
+/**@brief Set local Bluetooth address.
+ *
+ * If the address cycle mode is @ref BLE_GAP_ADDR_CYCLE_MODE_AUTO, the address type is required to
+ * be @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE or
+ * @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE. The given address is ignored and the
+ * SoftDevice will generate a new private address automatically every time advertising is
+ * (re)started, and every @ref BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S seconds. If this API
+ * call is used again with the same parameters while advertising, the SoftDevice will immediately
+ * generate a new private address to replace the current address.
+ *
+ * If the application wishes to use a @ref BLE_GAP_ADDR_TYPE_PUBLIC or
+ * @ref BLE_GAP_ADDR_TYPE_RANDOM_STATIC address, the cycle mode must be
+ * @ref BLE_GAP_ADDR_CYCLE_MODE_NONE.
+ *
+ * If this API function is called while advertising, the softdevice will immediately update the
+ * advertising address without the need to stop advertising in the following cases:
+ *   - If the previously set address is of type @ref BLE_GAP_ADDR_TYPE_PUBLIC and the new address
+ *   is also of type @ref BLE_GAP_ADDR_TYPE_PUBLIC
+ *   - If the previously set address is not @ref BLE_GAP_ADDR_TYPE_PUBLIC and the new address is
+ *   also not @ref BLE_GAP_ADDR_TYPE_PUBLIC.
+ *
+ * If the address is changed from a @ref BLE_GAP_ADDR_TYPE_PUBLIC address to another type or from
+ * another type to a @ref BLE_GAP_ADDR_TYPE_PUBLIC address, the change will take effect the next
+ * time advertising is started.
+ *
+ * @note If the address cycle mode is @ref BLE_GAP_ADDR_CYCLE_MODE_NONE and the application is
+ *       using privacy, the application must take care to generate and set new private addresses
+ *       periodically to comply with the Privacy specification in Bluetooth Core Spec.
+ *
+ * @param[in] addr_cycle_mode Address cycle mode, see @ref BLE_GAP_ADDR_CYCLE_MODES.
+ * @param[in] p_addr          Pointer to address structure.
+ *
+ * @return @ref NRF_SUCCESS Address successfully set.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameters.
+ * @return @ref BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address.
+ * @return @ref NRF_ERROR_BUSY The stack is busy, process pending events and retry.
+ */
+SVCALL(SD_BLE_GAP_ADDRESS_SET, uint32_t, sd_ble_gap_address_set(uint8_t addr_cycle_mode, ble_gap_addr_t const * const p_addr));
+
+
+/**@brief Get local Bluetooth address.
+ *
+ * @param[out] p_addr Pointer to address structure.
+ *
+ * @return @ref NRF_SUCCESS Address successfully retrieved.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ */
+SVCALL(SD_BLE_GAP_ADDRESS_GET, uint32_t, sd_ble_gap_address_get(ble_gap_addr_t * const p_addr));
+
+
+/**@brief Set, clear or update advertisement and scan response data.
+ *
+ * @note The format of the advertisement data will be checked by this call to ensure interoperability.
+ *       Limitations imposed by this API call to the data provided include having a flags data type in the scan response data and
+ *       duplicating the local name in the advertisement data and scan response data.
+ *
+ * @note: To clear the advertisement data and set it to a 0-length packet, simply provide a valid pointer (p_data/p_sr_data) with its corresponding
+ *        length (dlen/srdlen) set to 0.
+ *
+ * @note: The call will fail if p_data and p_sr_data are both NULL since this would have no effect.
+ *
+ * @param[in] p_data    Raw data to be placed in advertisement packet. If NULL, no changes are made to the current advertisement packet data.
+ * @param[in] dlen      Data length for p_data. Max size: @ref BLE_GAP_ADV_MAX_SIZE octets. Should be 0 if p_data is NULL, can be 0 if p_data is not NULL.
+ * @param[in] p_sr_data Raw data to be placed in scan response packet. If NULL, no changes are made to the current scan response packet data.
+ * @param[in] srdlen    Data length for p_sr_data. Max size: @ref BLE_GAP_ADV_MAX_SIZE octets. Should be 0 if p_sr_data is NULL, can be 0 if p_data is not NULL.
+ *
+ * @return @ref NRF_SUCCESS Advertisement data successfully updated or cleared.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_INVALID_FLAGS Invalid combination of advertising flags supplied.
+ * @return @ref NRF_ERROR_INVALID_DATA Invalid data type(s) supplied, check the advertising data format specification.
+ * @return @ref NRF_ERROR_INVALID_LENGTH Invalid data length(s) supplied.
+ * @return @ref BLE_ERROR_GAP_UUID_LIST_MISMATCH Invalid UUID list supplied.
+ * @return @ref NRF_ERROR_BUSY The stack is busy, process pending events and retry.
+ */
+SVCALL(SD_BLE_GAP_ADV_DATA_SET, uint32_t, sd_ble_gap_adv_data_set(uint8_t const * const p_data, uint8_t dlen, uint8_t const * const p_sr_data, uint8_t srdlen));
+
+
+/**@brief Start advertising (GAP Discoverable, Connectable modes, Broadcast Procedure).
+ *
+ * @param[in] p_adv_params Pointer to advertising parameters structure.
+ *
+ * @return @ref NRF_SUCCESS The BLE stack has started advertising.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check the accepted ranges and limits.
+ * @return @ref BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid Bluetooth address supplied.
+ * @return @ref BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST Discoverable mode and whitelist incompatible.
+ */
+SVCALL(SD_BLE_GAP_ADV_START, uint32_t, sd_ble_gap_adv_start(ble_gap_adv_params_t const * const p_adv_params));
+
+
+/**@brief Stop advertising (GAP Discoverable, Connectable modes, Broadcast Procedure).
+ *
+ * @return @ref NRF_SUCCESS The BLE stack has stopped advertising.
+ * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation (most probably not in advertising state).
+ */
+SVCALL(SD_BLE_GAP_ADV_STOP, uint32_t, sd_ble_gap_adv_stop(void));
+
+
+/**@brief Update connection parameters.
+ *
+ * @details In the central role this will initiate a Link Layer connection parameter update procedure,
+ *          otherwise in the peripheral role, this will send the corresponding L2CAP request and wait for
+ *          the central to perform the procedure. In both cases, and regardless of success or failure, the application
+ *          will be informed of the result with a @ref BLE_GAP_EVT_CONN_PARAM_UPDATE event.
+ *
+ * @note If both a connection supervision timeout and a maximum connection interval are specified, then the following constraint
+ *       applies: (conn_sup_timeout * 8) >= (max_conn_interval * (slave_latency + 1))
+ *
+ * @param[in] conn_handle Connection handle.
+ * @param[in] p_conn_params  Pointer to desired connection parameters. If NULL is provided on a peripheral role,
+ *                           the parameters in the PPCP characteristic of the GAP service will be used instead.
+ *
+ * @return @ref NRF_SUCCESS The Connection Update procedure has been started successfully.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints.
+ * @return @ref NRF_ERROR_BUSY Procedure already in progress or not allowed at this time, process pending events and retry.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied.
+ * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation.
+ */
+SVCALL(SD_BLE_GAP_CONN_PARAM_UPDATE, uint32_t, sd_ble_gap_conn_param_update(uint16_t conn_handle, ble_gap_conn_params_t const * const p_conn_params));
+
+
+/**@brief Disconnect (GAP Link Termination).
+ *
+ * @details This call initiates the disconnection procedure, and its completion will be communicated to the application
+ *          with a BLE_GAP_EVT_DISCONNECTED event.
+ *
+ * @param[in] conn_handle Connection handle.
+ * @param[in] hci_status_code HCI status code, see @ref BLE_HCI_STATUS_CODES (accepted values are BTLE_REMOTE_USER_TERMINATED_CONNECTION and BTLE_CONN_INTERVAL_UNACCEPTABLE).
+ *
+ * @return @ref NRF_SUCCESS The disconnection procedure has been started successfully.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied.
+ * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation (disconnection is already in progress or not connected at all).
+ */
+SVCALL(SD_BLE_GAP_DISCONNECT, uint32_t, sd_ble_gap_disconnect(uint16_t conn_handle, uint8_t hci_status_code));
+
+
+/**@brief Set the radio's transmit power.
+ *
+ * @param[in] tx_power Radio transmit power in dBm (accepted values are -40, -30, -20, -16, -12, -8, -4, 0, and 4 dBm).
+ *
+ * @note -40 dBm will not actually give -40 dBm, but will instead be remapped to -30 dBm.
+ *
+ * @return @ref NRF_SUCCESS Successfully changed the transmit power.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
+ * @return @ref NRF_ERROR_BUSY The stack is busy, process pending events and retry.
+ */
+SVCALL(SD_BLE_GAP_TX_POWER_SET, uint32_t, sd_ble_gap_tx_power_set(int8_t tx_power));
+
+
+/**@brief Set GAP Appearance value.
+ *
+ * @param[in] appearance Appearance (16-bit), see @ref BLE_APPEARANCES.
+ *
+ * @return @ref NRF_SUCCESS  Appearance value set successfully.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
+ */
+SVCALL(SD_BLE_GAP_APPEARANCE_SET, uint32_t, sd_ble_gap_appearance_set(uint16_t appearance));
+
+
+/**@brief Get GAP Appearance value.
+ *
+ * @param[out] p_appearance Appearance (16-bit), see @ref BLE_APPEARANCES.
+ *
+ * @return @ref NRF_SUCCESS Appearance value retrieved successfully.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ */
+SVCALL(SD_BLE_GAP_APPEARANCE_GET, uint32_t, sd_ble_gap_appearance_get(uint16_t * const p_appearance));
+
+
+/**@brief Set GAP Peripheral Preferred Connection Parameters.
+ *
+ * @param[in] p_conn_params Pointer to a @ref ble_gap_conn_params_t structure with the desired parameters.
+ *
+ * @return @ref NRF_SUCCESS Peripheral Preferred Connection Parameters set successfully.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
+ */
+SVCALL(SD_BLE_GAP_PPCP_SET, uint32_t, sd_ble_gap_ppcp_set(ble_gap_conn_params_t const * const p_conn_params));
+
+
+/**@brief Get GAP Peripheral Preferred Connection Parameters.
+ *
+ * @param[out] p_conn_params Pointer to a @ref ble_gap_conn_params_t structure where the parameters will be stored.
+ *
+ * @return @ref NRF_SUCCESS Peripheral Preferred Connection Parameters retrieved successfully.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ */
+SVCALL(SD_BLE_GAP_PPCP_GET, uint32_t, sd_ble_gap_ppcp_get(ble_gap_conn_params_t * const p_conn_params));
+
+
+/**@brief Set GAP device name.
+ *
+ * @param[in] p_write_perm Write permissions for the Device Name characteristic see @ref ble_gap_conn_sec_mode_t.
+ * @param[in] p_dev_name Pointer to a UTF-8 encoded, <b>non NULL-terminated</b> string.
+ * @param[in] len   Length of the UTF-8, <b>non NULL-terminated</b> string pointed to by p_dev_name in octets (must be smaller or equal than @ref BLE_GAP_DEVNAME_MAX_LEN).
+ *
+ * @return @ref NRF_SUCCESS GAP device name and permissions set successfully.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
+ * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied.
+ */
+SVCALL(SD_BLE_GAP_DEVICE_NAME_SET, uint32_t, sd_ble_gap_device_name_set(ble_gap_conn_sec_mode_t const * const p_write_perm, uint8_t const * const p_dev_name, uint16_t len));
+
+
+/**@brief Get GAP device name.
+ *
+ * @param[in]     p_dev_name Pointer to an empty buffer where the UTF-8 <b>non NULL-terminated</b> string will be placed. Set to NULL to obtain the complete device name length.
+ * @param[in,out] p_len      Length of the buffer pointed by p_dev_name, complete device name length on output.
+ *
+ * @note          If the device name is longer than the size of the supplied buffer,
+ *                p_len will return the complete device name length,
+ *                and not the number of bytes actually returned in p_dev_name.
+ *                The application may use this information to allocate a suitable buffer size.
+ *
+ * @return @ref NRF_SUCCESS GAP device name retrieved successfully.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied.
+ */
+SVCALL(SD_BLE_GAP_DEVICE_NAME_GET, uint32_t, sd_ble_gap_device_name_get(uint8_t * const p_dev_name, uint16_t * const p_len));
+
+
+/**@brief Initiate GAP Authentication procedure.
+ *
+ * @param[in] conn_handle Connection handle.
+ * @param[in] p_sec_params Pointer to the @ref ble_gap_sec_params_t structure with the security parameters to be used during the pairing procedure.
+ *
+ * @details In the central role, this function will send an SMP Pairing Request, otherwise in the peripheral role, an SMP Security Request will be sent.
+ *          In the peripheral role, only the timeout, bond and mitm fields of @ref ble_gap_sec_params_t are used.
+ *
+ * @note    The GAP Authentication procedure may be triggered by the central without calling this function when accessing a secure service.
+ * @note    Calling this function may result in the following events depending on the outcome and parameters: @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST,
+ *          @ref BLE_GAP_EVT_SEC_INFO_REQUEST, @ref BLE_GAP_EVT_AUTH_KEY_REQUEST, @ref BLE_GAP_EVT_AUTH_STATUS.
+ * @note    The timeout parameter in @ref ble_gap_sec_params_t is interpreted here as the Security Request timeout
+ *
+ *
+ * @return @ref NRF_SUCCESS Successfully initiated authentication procedure.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
+ * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied.
+ * @return @ref NRF_ERROR_TIMEOUT A SMP timeout has occured, and further SMP operations on this link is prohibited.
+ */
+SVCALL(SD_BLE_GAP_AUTHENTICATE, uint32_t, sd_ble_gap_authenticate(uint16_t conn_handle, ble_gap_sec_params_t const * const p_sec_params));
+
+
+/**@brief Reply with GAP security parameters.
+ *
+ * @param[in] conn_handle Connection handle.
+ * @param[in] sec_status Security status, see @ref BLE_GAP_SEC_STATUS.
+ * @param[in] p_sec_params Pointer to a @ref ble_gap_sec_params_t security parameters structure.
+ *
+ * @details This function is only used to reply to a @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST, calling it at other times will result in an NRF_ERROR_INVALID_STATE.
+ * @note    If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters.
+ * @note    The timeout parameter in @ref ble_gap_sec_params_t is interpreted here as the SMP procedure timeout, and must be 30 seconds. The function will fail
+ *          if the application supplies a different value.
+ *
+ * @return @ref NRF_SUCCESS Successfully accepted security parameter from the application.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
+ * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied.
+ */
+SVCALL(SD_BLE_GAP_SEC_PARAMS_REPLY, uint32_t, sd_ble_gap_sec_params_reply(uint16_t conn_handle, uint8_t sec_status, ble_gap_sec_params_t const * const p_sec_params));
+
+
+/**@brief Reply with an authentication key.
+ *
+ * @param[in] conn_handle Connection handle.
+ * @param[in] key_type See @ref BLE_GAP_AUTH_KEY_TYPES.
+ * @param[in] key If key type is BLE_GAP_AUTH_KEY_TYPE_NONE, then NULL.
+ *                If key type is BLE_GAP_AUTH_KEY_TYPE_PASSKEY, then a 6-byte ASCII string (digit 0..9 only, no NULL termination).
+ *                If key type is BLE_GAP_AUTH_KEY_TYPE_OOB, then a 16-byte OOB key value in Little Endian format.
+ *
+ * @details This function is only used to reply to a @ref BLE_GAP_EVT_AUTH_KEY_REQUEST, calling it at other times will result in an NRF_ERROR_INVALID_STATE.
+ * @note    If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters.
+ *
+ * @return @ref NRF_SUCCESS Authentication key successfully set.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
+ * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied.
+ */
+SVCALL(SD_BLE_GAP_AUTH_KEY_REPLY, uint32_t, sd_ble_gap_auth_key_reply(uint16_t conn_handle, uint8_t key_type, uint8_t const * const key));
+
+
+/**@brief Reply with GAP security information.
+ *
+ * @param[in] conn_handle Connection handle.
+ * @param[in] p_enc_info Pointer to a @ref ble_gap_enc_info_t encryption information structure. May be NULL to signal none is available.
+ * @param[in] p_sign_info Pointer to a @ref ble_gap_sign_info_t signing information structure. May be NULL to signal none is available.
+ *
+ * @details This function is only used to reply to a @ref BLE_GAP_EVT_SEC_INFO_REQUEST, calling it at other times will result in NRF_ERROR_INVALID_STATE.
+ * @note    If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters.
+ * @note    Data signing is not implemented yet. p_sign_info must therefore be NULL.
+ *
+ * @return @ref NRF_SUCCESS Successfully accepted security information.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
+ * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied.
+ * @return @ref NRF_ERROR_BUSY The stack is busy, process pending events and retry.
+ */
+SVCALL(SD_BLE_GAP_SEC_INFO_REPLY, uint32_t, sd_ble_gap_sec_info_reply(uint16_t conn_handle, ble_gap_enc_info_t const * const p_enc_info, ble_gap_sign_info_t const * const p_sign_info));
+
+
+/**@brief Get the current connection security.
+ *
+ * @param[in]  conn_handle Connection handle.
+ * @param[out] p_conn_sec  Pointer to a @ref ble_gap_conn_sec_t structure to be filled in.
+ *
+ * @return @ref NRF_SUCCESS Current connection security successfully retrieved.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied.
+ */
+SVCALL(SD_BLE_GAP_CONN_SEC_GET, uint32_t, sd_ble_gap_conn_sec_get(uint16_t conn_handle, ble_gap_conn_sec_t * const p_conn_sec));
+
+
+/**@brief Start reporting the received signal strength to the application.
+ *
+ * A new event is reported whenever the RSSI value changes, until @ref sd_ble_gap_rssi_stop is called.
+ *
+ * @param[in] conn_handle Connection handle.
+ *
+ * @return @ref NRF_SUCCESS Successfully activated RSSI reporting.
+ * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied.
+ */
+SVCALL(SD_BLE_GAP_RSSI_START, uint32_t, sd_ble_gap_rssi_start(uint16_t conn_handle));
+
+
+/**@brief Stop reporting the received singnal strength.
+ *
+ * An RSSI change detected before the call but not yet received by the application
+ * may be reported after @ref sd_ble_gap_rssi_stop has been called.
+ *
+ * @param[in] conn_handle Connection handle.
+ *
+ * @return @ref NRF_SUCCESS Successfully deactivated RSSI reporting.
+ * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied.
+ */
+SVCALL(SD_BLE_GAP_RSSI_STOP, uint32_t, sd_ble_gap_rssi_stop(uint16_t conn_handle));
+/**@} */
+
+#endif // BLE_GAP_H__
+
+/**
+  @}
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/ble_gatt.h	Fri Oct 17 14:15:08 2014 +0100
@@ -0,0 +1,171 @@
+/* Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved.
+ *
+ * The information contained herein is confidential property of Nordic Semiconductor. The use,
+ * copying, transfer or disclosure of such information is prohibited except by express written
+ * agreement with Nordic Semiconductor.
+ *
+ */
+ /**
+  @addtogroup BLE_GATT Generic Attribute Profile (GATT) Common
+  @{
+  @brief  Common definitions and prototypes for the GATT interfaces.
+ */
+
+#ifndef BLE_GATT_H__
+#define BLE_GATT_H__
+
+#include "ble_types.h"
+#include "ble_ranges.h"
+
+
+/** @addtogroup BLE_GATT_DEFINES Defines
+ * @{ */
+
+/** @brief Default MTU size. */
+#define GATT_MTU_SIZE_DEFAULT 23
+
+/** @brief Only the default MTU size of 23 is currently supported. */
+#define GATT_RX_MTU 23
+
+
+/**@brief Invalid Attribute Handle. */
+#define BLE_GATT_HANDLE_INVALID            0x0000
+
+/** @defgroup BLE_GATT_TIMEOUT_SOURCES GATT Timeout sources
+ * @{ */
+#define BLE_GATT_TIMEOUT_SRC_PROTOCOL                  0x00 /**< ATT Protocol timeout. */
+/** @} */
+
+/** @defgroup BLE_GATT_WRITE_OPS GATT Write operations
+ * @{ */
+#define BLE_GATT_OP_INVALID                0x00  /**< Invalid Operation. */
+#define BLE_GATT_OP_WRITE_REQ              0x01  /**< Write Request. */
+#define BLE_GATT_OP_WRITE_CMD              0x02  /**< Write Command. */
+#define BLE_GATT_OP_SIGN_WRITE_CMD         0x03  /**< Signed Write Command. */
+#define BLE_GATT_OP_PREP_WRITE_REQ         0x04  /**< Prepare Write Request. */
+#define BLE_GATT_OP_EXEC_WRITE_REQ         0x05  /**< Execute Write Request. */
+/** @} */
+
+/** @defgroup BLE_GATT_EXEC_WRITE_FLAGS GATT Execute Write flags
+ * @{ */
+#define BLE_GATT_EXEC_WRITE_FLAG_PREPARED_CANCEL 0x00
+#define BLE_GATT_EXEC_WRITE_FLAG_PREPARED_WRITE  0x01
+/** @} */
+
+/** @defgroup BLE_GATT_HVX_TYPES GATT Handle Value operations
+ * @{ */
+#define BLE_GATT_HVX_INVALID               0x00  /**< Invalid Operation. */
+#define BLE_GATT_HVX_NOTIFICATION          0x01  /**< Handle Value Notification. */
+#define BLE_GATT_HVX_INDICATION            0x02  /**< Handle Value Indication. */
+/** @} */
+
+/** @defgroup BLE_GATT_STATUS_CODES GATT Status Codes
+ * @{ */
+#define BLE_GATT_STATUS_SUCCESS                           0x0000  /**< Success. */
+#define BLE_GATT_STATUS_UNKNOWN                           0x0001  /**< Unknown or not applicable status. */
+#define BLE_GATT_STATUS_ATTERR_INVALID                    0x0100  /**< ATT Error: Invalid Error Code. */
+#define BLE_GATT_STATUS_ATTERR_INVALID_HANDLE             0x0101  /**< ATT Error: Invalid Attribute Handle. */
+#define BLE_GATT_STATUS_ATTERR_READ_NOT_PERMITTED         0x0102  /**< ATT Error: Read not permitted. */
+#define BLE_GATT_STATUS_ATTERR_WRITE_NOT_PERMITTED        0x0103  /**< ATT Error: Write not permitted. */
+#define BLE_GATT_STATUS_ATTERR_INVALID_PDU                0x0104  /**< ATT Error: Used in ATT as Invalid PDU. */
+#define BLE_GATT_STATUS_ATTERR_INSUF_AUTHENTICATION       0x0105  /**< ATT Error: Authenticated link required. */
+#define BLE_GATT_STATUS_ATTERR_REQUEST_NOT_SUPPORTED      0x0106  /**< ATT Error: Used in ATT as Request Not Supported. */
+#define BLE_GATT_STATUS_ATTERR_INVALID_OFFSET             0x0107  /**< ATT Error: Offset specified was past the end of the attribute. */
+#define BLE_GATT_STATUS_ATTERR_INSUF_AUTHORIZATION        0x0108  /**< ATT Error: Used in ATT as Insufficient Authorisation. */
+#define BLE_GATT_STATUS_ATTERR_PREPARE_QUEUE_FULL         0x0109  /**< ATT Error: Used in ATT as Prepare Queue Full. */
+#define BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_FOUND        0x010A  /**< ATT Error: Used in ATT as Attribute not found. */
+#define BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_LONG         0x010B  /**< ATT Error: Attribute cannot be read or written using read/write blob requests. */
+#define BLE_GATT_STATUS_ATTERR_INSUF_ENC_KEY_SIZE         0x010C  /**< ATT Error: Encryption key size used is insufficient. */
+#define BLE_GATT_STATUS_ATTERR_INVALID_ATT_VAL_LENGTH     0x010D  /**< ATT Error: Invalid value size. */
+#define BLE_GATT_STATUS_ATTERR_UNLIKELY_ERROR             0x010E  /**< ATT Error: Very unlikely error. */
+#define BLE_GATT_STATUS_ATTERR_INSUF_ENCRYPTION           0x010F  /**< ATT Error: Encrypted link required. */
+#define BLE_GATT_STATUS_ATTERR_UNSUPPORTED_GROUP_TYPE     0x0110  /**< ATT Error: Attribute type is not a supported grouping attribute. */
+#define BLE_GATT_STATUS_ATTERR_INSUF_RESOURCES            0x0111  /**< ATT Error: Encrypted link required. */
+#define BLE_GATT_STATUS_ATTERR_RFU_RANGE1_BEGIN           0x0112  /**< ATT Error: Reserved for Future Use range #1 begin. */
+#define BLE_GATT_STATUS_ATTERR_RFU_RANGE1_END             0x017F  /**< ATT Error: Reserved for Future Use range #1 end. */
+#define BLE_GATT_STATUS_ATTERR_APP_BEGIN                  0x0180  /**< ATT Error: Application range begin. */
+#define BLE_GATT_STATUS_ATTERR_APP_END                    0x019F  /**< ATT Error: Application range end. */
+#define BLE_GATT_STATUS_ATTERR_RFU_RANGE2_BEGIN           0x01A0  /**< ATT Error: Reserved for Future Use range #2 begin. */
+#define BLE_GATT_STATUS_ATTERR_RFU_RANGE2_END             0x01DF  /**< ATT Error: Reserved for Future Use range #2 end. */
+#define BLE_GATT_STATUS_ATTERR_RFU_RANGE3_BEGIN           0x01E0  /**< ATT Error: Reserved for Future Use range #3 begin. */
+#define BLE_GATT_STATUS_ATTERR_RFU_RANGE3_END             0x01FC  /**< ATT Error: Reserved for Future Use range #3 end. */
+#define BLE_GATT_STATUS_ATTERR_CPS_CCCD_CONFIG_ERROR      0x01FD  /**< ATT Common Profile and Service Error: Client Characteristic Configuration Descriptor improperly configured. */
+#define BLE_GATT_STATUS_ATTERR_CPS_PROC_ALR_IN_PROG       0x01FE  /**< ATT Common Profile and Service Error: Procedure Already in Progress. */
+#define BLE_GATT_STATUS_ATTERR_CPS_OUT_OF_RANGE           0x01FF  /**< ATT Common Profile and Service Error: Out Of Range. */
+/** @} */
+
+
+/** @defgroup BLE_GATT_CPF_FORMATS Characteristic Presentation Formats
+ *  @note Found at http://developer.bluetooth.org/gatt/descriptors/Pages/DescriptorViewer.aspx?u=org.bluetooth.descriptor.gatt.characteristic_presentation_format.xml
+ * @{ */
+#define BLE_GATT_CPF_FORMAT_RFU                 0x00 /**< Reserved For Future Use. */
+#define BLE_GATT_CPF_FORMAT_BOOLEAN             0x01 /**< Boolean. */
+#define BLE_GATT_CPF_FORMAT_2BIT                0x02 /**< Unsigned 2-bit integer. */
+#define BLE_GATT_CPF_FORMAT_NIBBLE              0x03 /**< Unsigned 4-bit integer. */
+#define BLE_GATT_CPF_FORMAT_UINT8               0x04 /**< Unsigned 8-bit integer. */
+#define BLE_GATT_CPF_FORMAT_UINT12              0x05 /**< Unsigned 12-bit integer. */
+#define BLE_GATT_CPF_FORMAT_UINT16              0x06 /**< Unsigned 16-bit integer. */
+#define BLE_GATT_CPF_FORMAT_UINT24              0x07 /**< Unsigned 24-bit integer. */
+#define BLE_GATT_CPF_FORMAT_UINT32              0x08 /**< Unsigned 32-bit integer. */
+#define BLE_GATT_CPF_FORMAT_UINT48              0x09 /**< Unsigned 48-bit integer. */
+#define BLE_GATT_CPF_FORMAT_UINT64              0x0A /**< Unsigned 64-bit integer. */
+#define BLE_GATT_CPF_FORMAT_UINT128             0x0B /**< Unsigned 128-bit integer. */
+#define BLE_GATT_CPF_FORMAT_SINT8               0x0C /**< Signed 2-bit integer. */
+#define BLE_GATT_CPF_FORMAT_SINT12              0x0D /**< Signed 12-bit integer. */
+#define BLE_GATT_CPF_FORMAT_SINT16              0x0E /**< Signed 16-bit integer. */
+#define BLE_GATT_CPF_FORMAT_SINT24              0x0F /**< Signed 24-bit integer. */
+#define BLE_GATT_CPF_FORMAT_SINT32              0x10 /**< Signed 32-bit integer. */
+#define BLE_GATT_CPF_FORMAT_SINT48              0x11 /**< Signed 48-bit integer. */
+#define BLE_GATT_CPF_FORMAT_SINT64              0x12 /**< Signed 64-bit integer. */
+#define BLE_GATT_CPF_FORMAT_SINT128             0x13 /**< Signed 128-bit integer. */
+#define BLE_GATT_CPF_FORMAT_FLOAT32             0x14 /**< IEEE-754 32-bit floating point. */
+#define BLE_GATT_CPF_FORMAT_FLOAT64             0x15 /**< IEEE-754 64-bit floating point. */
+#define BLE_GATT_CPF_FORMAT_SFLOAT              0x16 /**< IEEE-11073 16-bit SFLOAT. */
+#define BLE_GATT_CPF_FORMAT_FLOAT               0x17 /**< IEEE-11073 32-bit FLOAT. */
+#define BLE_GATT_CPF_FORMAT_DUINT16             0x18 /**< IEEE-20601 format. */
+#define BLE_GATT_CPF_FORMAT_UTF8S               0x19 /**< UTF-8 string. */
+#define BLE_GATT_CPF_FORMAT_UTF16S              0x1A /**< UTF-16 string. */
+#define BLE_GATT_CPF_FORMAT_STRUCT              0x1B /**< Opaque Structure. */
+/** @} */
+
+/** @defgroup BLE_GATT_CPF_NAMESPACES GATT Bluetooth Namespaces
+ * @{
+ */
+#define BLE_GATT_CPF_NAMESPACE_BTSIG            0x01
+#define BLE_GATT_CPF_NAMESPACE_DESCRIPTION_UNKNOWN 0x0000
+/** @} */
+
+/** @} */
+
+/** @addtogroup BLE_GATT_STRUCTURES Structures
+ * @{ */
+
+/**@brief GATT Characteristic Properties. */
+typedef struct
+{
+  /* Standard properties */
+  uint8_t broadcast       :1; /**< Broadcasting of value permitted. */
+  uint8_t read            :1; /**< Reading value permitted. */
+  uint8_t write_wo_resp   :1; /**< Writing value with Write Command permitted. */
+  uint8_t write           :1; /**< Writing value with Write Request permitted. */
+  uint8_t notify          :1; /**< Notications of value permitted. */
+  uint8_t indicate        :1; /**< Indications of value permitted. */
+  uint8_t auth_signed_wr  :1; /**< Writing value with Signed Write Command permitted. */
+} ble_gatt_char_props_t;
+
+/**@brief GATT Characteristic Extended Properties. */
+typedef struct
+{
+  /* Extended properties */
+  uint8_t reliable_wr     :1; /**< Writing value with Queued Write Request permitted. */
+  uint8_t wr_aux          :1; /**< Writing the Characteristic User Description permitted. */
+} ble_gatt_char_ext_props_t;
+
+#endif // BLE_GATT_H__
+
+/** @} */
+
+/**
+  @}
+  @}
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/ble_gattc.h	Fri Oct 17 14:15:08 2014 +0100
@@ -0,0 +1,406 @@
+/* Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved.
+ *
+ * The information contained herein is confidential property of Nordic Semiconductor. The use,
+ * copying, transfer or disclosure of such information is prohibited except by express written
+ * agreement with Nordic Semiconductor.
+ *
+ */
+/**
+  @addtogroup BLE_GATTC Generic Attribute Profile (GATT) Client
+  @{
+  @brief  Definitions and prototypes for the GATT Client interface.
+ */
+
+#ifndef BLE_GATTC_H__
+#define BLE_GATTC_H__
+
+#include "ble_gatt.h"
+#include "ble_types.h"
+#include "ble_ranges.h"
+#include "nrf_svc.h"
+
+/** @addtogroup BLE_GATTC_ENUMERATIONS Enumerations
+ * @{ */
+
+/**@brief GATTC API SVC numbers. */
+enum BLE_GATTC_SVCS
+{
+  SD_BLE_GATTC_PRIMARY_SERVICES_DISCOVER = BLE_GATTC_SVC_BASE, /**< Primary Service Discovery. */
+  SD_BLE_GATTC_RELATIONSHIPS_DISCOVER,                         /**< Relationship Discovery. */
+  SD_BLE_GATTC_CHARACTERISTICS_DISCOVER,                       /**< Characteristic Discovery. */
+  SD_BLE_GATTC_DESCRIPTORS_DISCOVER,                           /**< Characteristic Descriptor Discovery. */
+  SD_BLE_GATTC_CHAR_VALUE_BY_UUID_READ,                        /**< Read Characteristic Value by UUID. */
+  SD_BLE_GATTC_READ,                                           /**< Generic read. */
+  SD_BLE_GATTC_CHAR_VALUES_READ,                               /**< Read multiple Characteristic Values. */
+  SD_BLE_GATTC_WRITE,                                          /**< Generic write. */
+  SD_BLE_GATTC_HV_CONFIRM                                      /**< Handle Value Confirmation. */
+};
+
+/** @} */
+
+/** @addtogroup BLE_GATTC_DEFINES Defines
+ * @{ */
+
+/** @defgroup BLE_ERRORS_GATTC SVC return values specific to GATTC
+ * @{ */
+#define BLE_ERROR_GATTC_PROC_NOT_PERMITTED    (NRF_GATTC_ERR_BASE + 0x000)
+/** @} */
+
+/**@brief Last Attribute Handle. */
+#define BLE_GATTC_HANDLE_END                0xFFFF
+
+/** @} */
+
+/** @addtogroup BLE_GATTC_STRUCTURES Structures
+ * @{ */
+
+/**@brief Operation Handle Range. */
+typedef struct
+{
+  uint16_t          start_handle; /**< Start Handle. */
+  uint16_t          end_handle;   /**< End Handle. */
+} ble_gattc_handle_range_t;
+
+
+/**@brief GATT service. */
+typedef struct
+{
+  ble_uuid_t               uuid;          /**< Service UUID. */
+  ble_gattc_handle_range_t handle_range;  /**< Service Handle Range. */
+} ble_gattc_service_t;
+
+
+/**@brief  GATT include. */
+typedef struct
+{
+  uint16_t            handle;           /**< Include Handle. */
+  ble_gattc_service_t included_srvc;    /**< Handle of the included service. */
+} ble_gattc_include_t;
+
+
+/**@brief GATT characteristic. */
+typedef struct
+{
+  ble_uuid_t              uuid;                 /**< Characteristic UUID. */
+  ble_gatt_char_props_t   char_props;           /**< Characteristic Properties. */
+  uint8_t                 char_ext_props : 1;   /**< Extended properties present. */
+  uint16_t                handle_decl;          /**< Handle of the Characteristic Declaration. */
+  uint16_t                handle_value;         /**< Handle of the Characteristic Value. */
+} ble_gattc_char_t;
+
+
+/**@brief GATT descriptor. */
+typedef struct
+{
+  uint16_t          handle;         /**< Descriptor Handle. */
+  ble_uuid_t        uuid;           /**< Descriptor UUID. */
+} ble_gattc_desc_t;
+
+
+/**@brief Write Parameters. */
+typedef struct
+{
+  uint8_t    write_op;                 /**< Write Operation to be performed, see @ref BLE_GATT_WRITE_OPS. */
+  uint16_t   handle;                   /**< Handle to the attribute to be written. */
+  uint16_t   offset;                   /**< Offset in bytes. @note For WRITE_CMD and WRITE_REQ, offset must be 0. */
+  uint16_t   len;                      /**< Length of data in bytes. */
+  uint8_t*   p_value;                  /**< Pointer to the value data. */
+  uint8_t    flags;                    /**< Flags, see @ref BLE_GATT_EXEC_WRITE_FLAGS. */
+} ble_gattc_write_params_t;
+
+
+/**
+ * @brief GATT Client Event IDs.
+ */
+enum BLE_GATTC_EVTS
+{
+  BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP = BLE_GATTC_EVT_BASE,  /**< Primary Service Discovery Response event.  */
+  BLE_GATTC_EVT_REL_DISC_RSP,                             /**< Relationship Discovery Response event. */
+  BLE_GATTC_EVT_CHAR_DISC_RSP,                            /**< Characteristic Discovery Response event. */
+  BLE_GATTC_EVT_DESC_DISC_RSP,                            /**< Descriptor Discovery Response event. */
+  BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP,                /**< Read By UUID Response event. */
+  BLE_GATTC_EVT_READ_RSP,                                 /**< Read Response event. */
+  BLE_GATTC_EVT_CHAR_VALS_READ_RSP,                       /**< Read multiple Response event. */
+  BLE_GATTC_EVT_WRITE_RSP,                                /**< Write Response event. */
+  BLE_GATTC_EVT_HVX,                                      /**< Handle Value Notification or Indication event. */
+  BLE_GATTC_EVT_TIMEOUT                                   /**< Timeout event. */
+};
+
+/**@brief Event structure for BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP. */
+typedef struct
+{
+  uint16_t             count;           /**< Service count. */
+  ble_gattc_service_t services[1];      /**< Service data, variable length. */
+} ble_gattc_evt_prim_srvc_disc_rsp_t;
+
+/**@brief Event structure for BLE_GATTC_EVT_REL_DISC_RSP. */
+typedef struct
+{
+  uint16_t             count;           /**< Include count. */
+  ble_gattc_include_t includes[1];      /**< Include data, variable length. */
+} ble_gattc_evt_rel_disc_rsp_t;
+
+/**@brief Event structure for BLE_GATTC_EVT_CHAR_DISC_RSP. */
+typedef struct
+{
+  uint16_t            count;          /**< Characteristic count. */
+  ble_gattc_char_t    chars[1];       /**< Characteristic data, variable length. */
+} ble_gattc_evt_char_disc_rsp_t;
+
+/**@brief Event structure for BLE_GATTC_EVT_DESC_DISC_RSP. */
+typedef struct
+{
+  uint16_t            count;          /**< Descriptor count. */
+  ble_gattc_desc_t    descs[1];       /**< Descriptor data, variable length. */
+} ble_gattc_evt_desc_disc_rsp_t;
+
+/**@brief GATT read by UUID handle value pair. */
+typedef struct 
+{
+  uint16_t            handle;          /**< Attribute Handle. */
+  uint8_t             *p_value;        /**< Pointer to value, variable length (length available as value_len in ble_gattc_evt_read_by_uuid_rsp_t). 
+                                            Please note that this pointer is absolute to the memory provided by the user when retrieving the event,
+                                            so it will effectively point to a location inside the handle_value array. */
+} ble_gattc_handle_value_t;
+
+/**@brief Event structure for BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP. */
+typedef struct
+{
+  uint16_t                  count;            /**< Handle-Value Pair Count. */
+  uint16_t                  value_len;        /**< Length of the value in Handle-Value(s) list. */
+  ble_gattc_handle_value_t  handle_value[1];  /**< Handle-Value(s) list, variable length. */
+} ble_gattc_evt_char_val_by_uuid_read_rsp_t;
+
+/**@brief Event structure for BLE_GATTC_EVT_READ_RSP. */
+typedef struct
+{
+  uint16_t            handle;         /**< Attribute Handle. */
+  uint16_t            offset;         /**< Offset of the attribute data. */
+  uint16_t            len;            /**< Attribute data length. */
+  uint8_t             data[1];        /**< Attribute data, variable length. */
+} ble_gattc_evt_read_rsp_t;
+
+/**@brief Event structure for BLE_GATTC_EVT_CHAR_VALS_READ_RSP. */
+typedef struct
+{
+  uint16_t            len;            /**< Concatenated Attribute values length. */
+  uint8_t             values[1];      /**< Attribute values, variable length. */
+} ble_gattc_evt_char_vals_read_rsp_t;
+
+/**@brief Event structure for BLE_GATTC_EVT_WRITE_RSP. */
+typedef struct
+{
+  uint16_t            handle;           /**< Attribute Handle. */
+  uint8_t             write_op;         /**< Type of write operation, see @ref BLE_GATT_WRITE_OPS. */
+  uint16_t            offset;           /**< Data Offset. */
+  uint16_t            len;              /**< Data length. */
+  uint8_t             data[1];          /**< Data, variable length. */
+} ble_gattc_evt_write_rsp_t;
+
+/**@brief Event structure for BLE_GATTC_EVT_HVX. */
+typedef struct
+{
+  uint16_t            handle;         /**< Handle to which the HVx operation applies. */
+  uint8_t             type;           /**< Indication or Notification, see @ref BLE_GATT_HVX_TYPES. */
+  uint16_t            len;            /**< Attribute data length. */
+  uint8_t             data[1];        /**< Attribute data, variable length. */
+} ble_gattc_evt_hvx_t;
+
+/**@brief Event structure for BLE_GATTC_EVT_TIMEOUT. */
+typedef struct
+{
+  uint8_t          src;                       /**< Timeout source, see @ref BLE_GATT_TIMEOUT_SOURCES. */
+} ble_gattc_evt_timeout_t;
+
+/**@brief GATTC event type. */
+typedef struct
+{
+  uint16_t            conn_handle;                /**< Connection Handle on which event occured. */
+  uint16_t            gatt_status;                /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */
+  uint16_t            error_handle;               /**< In case of error: The handle causing the error. In all other cases BLE_GATT_HANDLE_INVALID. */
+  union
+  {
+    ble_gattc_evt_prim_srvc_disc_rsp_t          prim_srvc_disc_rsp;         /**< Primary Service Discovery Response Event Parameters. */
+    ble_gattc_evt_rel_disc_rsp_t                rel_disc_rsp;               /**< Relationship Discovery Response Event Parameters. */
+    ble_gattc_evt_char_disc_rsp_t               char_disc_rsp;              /**< Characteristic Discovery Response Event Parameters. */
+    ble_gattc_evt_desc_disc_rsp_t               desc_disc_rsp;              /**< Descriptor Discovery Response Event Parameters. */
+    ble_gattc_evt_char_val_by_uuid_read_rsp_t   char_val_by_uuid_read_rsp;  /**< Characteristic Value Read by UUID Response Event Parameters. */
+    ble_gattc_evt_read_rsp_t                    read_rsp;                   /**< Read Response Event Parameters. */
+    ble_gattc_evt_char_vals_read_rsp_t          char_vals_read_rsp;         /**< Characteristic Values Read Response Event Parameters. */
+    ble_gattc_evt_write_rsp_t                   write_rsp;                  /**< Write Response Event Parameters. */
+    ble_gattc_evt_hvx_t                         hvx;                        /**< Handle Value Notification/Indication Event Parameters. */
+    ble_gattc_evt_timeout_t                     timeout;                    /**< Timeout Event Parameters. */
+  } params;                                                                 /**< Event Parameters. @note Only valid if @ref gatt_status == BLE_GATT_STATUS_SUCCESS. */
+} ble_gattc_evt_t;
+/** @} */
+
+/** @addtogroup BLE_GATTC_FUNCTIONS Functions
+ * @{ */
+
+/**@brief Initiate or continue a GATT Primary Service Discovery procedure.
+ *
+ * @details This function initiates a Primary Service discovery, starting from the supplied handle. 
+ *          If the last service has not been reached, this must be called again with an updated start handle value to continue the search.
+ *
+ * @note If any of the discovered services have 128-bit UUIDs which are not present in the table provided to ble_vs_uuids_assign, a UUID structure with
+ *       type BLE_UUID_TYPE_UNKNOWN will be received in the corresponding event.
+ *
+ * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on.
+ * @param[in] start_handle Handle to start searching from.
+ * @param[in] p_srvc_uuid Pointer to the service UUID to be found. If it is NULL, all primary services will be returned.
+ *
+ * @return @ref NRF_SUCCESS Successfully started or resumed the Primary Service Discovery procedure.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
+ * @return @ref NRF_ERROR_BUSY Client procedure already in progress.
+ */
+SVCALL(SD_BLE_GATTC_PRIMARY_SERVICES_DISCOVER, uint32_t, sd_ble_gattc_primary_services_discover(uint16_t conn_handle, uint16_t start_handle, ble_uuid_t const * const p_srvc_uuid));
+
+
+/**@brief Initiate or continue a GATT Relationship Discovery procedure.
+ *
+ * @details This function initiates the Find Included Services sub-procedure. If the last included service has not been reached,
+ *          this must be called again with an updated handle range to continue the search.
+ *
+ * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on.
+ * @param[in] p_handle_range A pointer to the range of handles of the Service to perform this procedure on.
+ *
+ * @return @ref NRF_SUCCESS Successfully started or resumed the Relationship Discovery procedure.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
+ * @return @ref NRF_ERROR_BUSY Client procedure already in progress.
+ */
+SVCALL(SD_BLE_GATTC_RELATIONSHIPS_DISCOVER, uint32_t, sd_ble_gattc_relationships_discover(uint16_t conn_handle, ble_gattc_handle_range_t const * const p_handle_range));
+
+
+/**@brief Initiate or continue a GATT Characteristic Discovery procedure.
+ *
+ * @details This function initiates a Characteristic discovery procedure. If the last Characteristic has not been reached,
+ *          this must be called again with an updated handle range to continue the discovery.
+ *
+ * @note If any of the discovered characteristics have 128-bit UUIDs which are not present in the table provided to ble_vs_uuids_assign, a UUID structure with
+ *       type BLE_UUID_TYPE_UNKNOWN will be received in the corresponding event.
+ *
+ * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on.
+ * @param[in] p_handle_range A pointer to the range of handles of the Service to perform this procedure on.
+ *
+ * @return @ref NRF_SUCCESS Successfully started or resumed the Characteristic Discovery procedure.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_BUSY Client procedure already in progress.
+ */
+SVCALL(SD_BLE_GATTC_CHARACTERISTICS_DISCOVER, uint32_t, sd_ble_gattc_characteristics_discover(uint16_t conn_handle, ble_gattc_handle_range_t const * const p_handle_range));
+
+
+/**@brief Initiate or continue a GATT Characteristic Descriptor Discovery procedure.
+ *
+ * @details This function initiates the Characteristic Descriptor discovery procedure. If the last Descriptor has not been reached,
+ *          this must be called again with an updated handle range to continue the discovery.
+ *
+ * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on.
+ * @param[in] p_handle_range A pointer to the range of handles of the Characteristic to perform this procedure on.
+ *
+ * @return @ref NRF_SUCCESS Successfully started or resumed the Descriptor Discovery procedure.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_BUSY Client procedure already in progress.
+ */
+SVCALL(SD_BLE_GATTC_DESCRIPTORS_DISCOVER, uint32_t, sd_ble_gattc_descriptors_discover(uint16_t conn_handle, ble_gattc_handle_range_t const * const p_handle_range));
+
+
+/**@brief Initiate or continue a GATT Read using Characteristic UUID procedure.
+ *
+ * @details This function initiates the Read using Characteristic UUID procedure. If the last Characteristic has not been reached,
+ *          this must be called again with an updated handle range to continue the discovery.
+ *
+ * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on.
+ * @param[in] p_uuid Pointer to a Characteristic value UUID to read.
+ * @param[in] p_handle_range A pointer to the range of handles to perform this procedure on.
+ *
+ * @return @ref NRF_SUCCESS Successfully started or resumed the Read using Characteristic UUID procedure.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_BUSY Client procedure already in progress.
+ */
+SVCALL(SD_BLE_GATTC_CHAR_VALUE_BY_UUID_READ, uint32_t, sd_ble_gattc_char_value_by_uuid_read(uint16_t conn_handle, ble_uuid_t const * const p_uuid, ble_gattc_handle_range_t const * const p_handle_range));
+
+
+/**@brief Initiate or continue a GATT Read (Long) Characteristic or Descriptor procedure.
+ *
+ * @details This function initiates a GATT Read (Long) Characteristic or Descriptor procedure. If the Characteristic or Descriptor
+ *          to be read is longer than GATT_MTU - 1, this function must be called multiple times with appropriate offset to read the 
+ *          complete value.
+ *
+ * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on.
+ * @param[in] handle The handle of the attribute to be read.
+ * @param[in] offset Offset into the attribute value to be read.
+ *
+ * @return @ref NRF_SUCCESS Successfully started or resumed the Read (Long) procedure.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_BUSY Client procedure already in progress.
+ */
+SVCALL(SD_BLE_GATTC_READ, uint32_t, sd_ble_gattc_read(uint16_t conn_handle, uint16_t handle, uint16_t offset));
+
+
+/**@brief Initiate a GATT Read Multiple Characteristic Values procedure.
+ *
+ * @details This function initiates a GATT Read Multiple Characteristic Values procedure. 
+ *
+ * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on.
+ * @param[in] p_handles A pointer to the handle(s) of the attribute(s) to be read.
+ * @param[in] handle_count The number of handles in p_handles.
+ *
+ * @return @ref NRF_SUCCESS Successfully started the Read Multiple Characteristic Values procedure.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_BUSY Client procedure already in progress.
+ */
+SVCALL(SD_BLE_GATTC_CHAR_VALUES_READ, uint32_t, sd_ble_gattc_char_values_read(uint16_t conn_handle, uint16_t const * const p_handles, uint16_t handle_count));
+
+
+/**@brief Perform a Write (Characteristic Value or Descriptor, with or without response, signed or not, long or reliable) procedure.
+ *
+ * @details This function can perform all write procedures described in GATT. 
+ *
+ * @note    It is important to note that a write without response will <b>consume an application buffer</b>, and will therefore 
+ *          generate a @ref BLE_EVT_TX_COMPLETE event when the packet has been transmitted. A write on the other hand will use the 
+ *          standard client internal buffer and thus will only generate a @ref BLE_GATTC_EVT_WRITE_RSP event as soon as the write response 
+ *          has been received from the peer. Please see the documentation of @ref sd_ble_tx_buffer_count_get for more details.
+ *
+ * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on.
+ * @param[in] p_write_params A pointer to a write parameters structure.
+ *
+ * @return @ref NRF_SUCCESS Successfully started the Write procedure.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
+ * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied.
+ * @return @ref NRF_ERROR_BUSY Procedure already in progress.
+ * @return @ref BLE_ERROR_NO_TX_BUFFERS There are no available buffers left.
+ */
+SVCALL(SD_BLE_GATTC_WRITE, uint32_t, sd_ble_gattc_write(uint16_t conn_handle, ble_gattc_write_params_t const * const p_write_params));
+
+
+/**@brief Send a Handle Value Confirmation to the GATT Server.
+ *
+ * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on.
+ * @param[in] handle The handle of the attribute in the indication.
+ *
+ * @return @ref NRF_SUCCESS Successfully queued the Handle Value Confirmation for transmission.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
+ * @return @ref NRF_ERROR_INVALID_STATE No Indication pending to be confirmed.
+ * @return @ref BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle.
+ * @return @ref BLE_ERROR_NO_TX_BUFFERS There are no available buffers left.
+ */
+SVCALL(SD_BLE_GATTC_HV_CONFIRM, uint32_t, sd_ble_gattc_hv_confirm(uint16_t conn_handle, uint16_t handle));
+
+/** @} */
+
+#endif /* BLE_GATTC_H__ */
+
+/**
+  @}
+  @}
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/ble_gatts.h	Fri Oct 17 14:15:08 2014 +0100
@@ -0,0 +1,566 @@
+/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved.
+ *
+ * The information contained herein is confidential property of Nordic Semiconductor. The use,
+ * copying, transfer or disclosure of such information is prohibited except by express written
+ * agreement with Nordic Semiconductor.
+ *
+ */
+/**
+  @addtogroup BLE_GATTS Generic Attribute Profile (GATT) Server
+  @{
+  @brief  Definitions and prototypes for the GATTS interface.
+ */
+
+#ifndef BLE_GATTS_H__
+#define BLE_GATTS_H__
+
+#include "ble_types.h"
+#include "ble_ranges.h"
+#include "ble_l2cap.h"
+#include "ble_gap.h"
+#include "ble_gatt.h"
+#include "nrf_svc.h"
+
+/** @addtogroup BLE_GATTS_ENUMERATIONS Enumerations
+ * @{ */
+
+/**
+ * @brief GATTS API SVC numbers.
+ */
+enum BLE_GATTS_SVCS
+{
+  SD_BLE_GATTS_SERVICE_ADD = BLE_GATTS_SVC_BASE, /**< Add a service. */
+  SD_BLE_GATTS_INCLUDE_ADD,                      /**< Add an included service. */
+  SD_BLE_GATTS_CHARACTERISTIC_ADD,               /**< Add a characteristic. */
+  SD_BLE_GATTS_DESCRIPTOR_ADD,                   /**< Add a generic attribute. */
+  SD_BLE_GATTS_VALUE_SET,                        /**< Set an attribute value. */
+  SD_BLE_GATTS_VALUE_GET,                        /**< Get an attribute value. */
+  SD_BLE_GATTS_HVX,                              /**< Handle Value Notification or Indication. */
+  SD_BLE_GATTS_SERVICE_CHANGED,                  /**< Perform a Service Changed Indication to one or more peers. */
+  SD_BLE_GATTS_RW_AUTHORIZE_REPLY,               /**< Reply to an authorization request for a read or write operation on one or more attributes. */ 
+  SD_BLE_GATTS_SYS_ATTR_SET,                     /**< Set the persistent system attributes for a connection. */  
+  SD_BLE_GATTS_SYS_ATTR_GET,                     /**< Get updated persistent system attributes after terminating a connection. */
+};
+
+/** @} */
+
+/** @addtogroup BLE_GATTS_DEFINES Defines
+ * @{ */
+
+/** @brief Only the default MTU size of 23 is currently supported. */
+#define GATT_RX_MTU 23
+
+/** @defgroup BLE_ERRORS_GATTS SVC return values specific to GATTS
+ * @{ */
+#define BLE_ERROR_GATTS_INVALID_ATTR_TYPE   (NRF_GATTS_ERR_BASE + 0x000) /**< Invalid attribute type. */
+#define BLE_ERROR_GATTS_SYS_ATTR_MISSING    (NRF_GATTS_ERR_BASE + 0x001) /**< System Attributes missing. */
+/** @} */
+
+/** @defgroup BLE_GATTS_ATTR_LENS_MAX Maximum attribute lengths
+ * @{ */
+#define BLE_GATTS_FIX_ATTR_LEN_MAX (510)  /**< Maximum length for fixed length Attribute Values. */
+#define BLE_GATTS_VAR_ATTR_LEN_MAX (512)  /**< Maximum length for variable length Attribute Values. */ 
+/** @} */
+
+/** @defgroup BLE_GATTS_SRVC_TYPES GATT Server Service Types
+ * @{ */
+#define BLE_GATTS_SRVC_TYPE_INVALID          0x00  /**< Invalid Service Type. */
+#define BLE_GATTS_SRVC_TYPE_PRIMARY          0x01  /**< Primary Service. */
+#define BLE_GATTS_SRVC_TYPE_SECONDARY        0x02  /**< Secondary Type. */
+/** @} */
+
+
+/** @defgroup BLE_GATTS_ATTR_TYPES GATT Server Attribute Types
+ * @{ */
+#define BLE_GATTS_ATTR_TYPE_INVALID         0x00  /**< Invalid Attribute Type. */
+#define BLE_GATTS_ATTR_TYPE_PRIM_SRVC_DECL  0x01  /**< Primary Service Declaration. */
+#define BLE_GATTS_ATTR_TYPE_SEC_SRVC_DECL   0x02  /**< Secondary Service Declaration. */
+#define BLE_GATTS_ATTR_TYPE_INC_DECL        0x03  /**< Include Declaration. */
+#define BLE_GATTS_ATTR_TYPE_CHAR_DECL       0x04  /**< Characteristic Declaration. */
+#define BLE_GATTS_ATTR_TYPE_CHAR_VAL        0x05  /**< Characteristic Value. */
+#define BLE_GATTS_ATTR_TYPE_DESC            0x06  /**< Descriptor. */
+#define BLE_GATTS_ATTR_TYPE_OTHER           0x07  /**< Other, non-GATT specific type. */
+/** @} */
+
+
+/** @defgroup BLE_GATTS_OPS GATT Server Operations
+ * @{ */
+#define BLE_GATTS_OP_INVALID                0x00  /**< Invalid Operation. */
+#define BLE_GATTS_OP_WRITE_REQ              0x01  /**< Write Request. */
+#define BLE_GATTS_OP_WRITE_CMD              0x02  /**< Write Command. */
+#define BLE_GATTS_OP_SIGN_WRITE_CMD         0x03  /**< Signed Write Command. */
+#define BLE_GATTS_OP_PREP_WRITE_REQ         0x04  /**< Prepare Write Request. */
+#define BLE_GATTS_OP_EXEC_WRITE_REQ_CANCEL  0x05  /**< Execute Write Request: Cancel all prepared writes. */
+#define BLE_GATTS_OP_EXEC_WRITE_REQ_NOW     0x06  /**< Execute Write Request: Immediately execute all prepared writes. */
+/** @} */
+
+/** @defgroup BLE_GATTS_VLOCS GATT Value Locations
+ * @{ */
+#define BLE_GATTS_VLOC_INVALID       0x00  /**< Invalid Location. */
+#define BLE_GATTS_VLOC_STACK         0x01  /**< Attribute Value is located in stack memory, no user memory is required. */
+#define BLE_GATTS_VLOC_USER          0x02  /**< Attribute Value is located in user memory. This requires the user to maintain a valid buffer through the lifetime of the attribute, since the stack
+                                                will read and write directly to the memory using the pointer provided in the APIs. There are no alignment requirements for the buffer. */
+/** @} */
+
+/** @defgroup BLE_GATTS_AUTHORIZE_TYPES GATT Server Authorization Types
+ * @{ */
+#define BLE_GATTS_AUTHORIZE_TYPE_INVALID    0x00  /**< Invalid Type. */
+#define BLE_GATTS_AUTHORIZE_TYPE_READ       0x01  /**< Authorize a Read Operation. */
+#define BLE_GATTS_AUTHORIZE_TYPE_WRITE      0x02  /**< Authorize a Write Request Operation. */
+/** @} */
+
+
+/** @} */
+
+/** @addtogroup BLE_GATTS_STRUCTURES Structures
+ * @{ */
+
+/**
+ * @brief BLE GATTS init options
+ */
+typedef struct
+{
+  uint8_t   service_changed:1;             /**< Include the Service Changed characteristic in the local attributes. */
+} ble_gatts_enable_params_t;
+
+/**@brief Attribute metadata. */
+typedef struct
+{
+  ble_gap_conn_sec_mode_t read_perm;       /**< Read permissions. */
+  ble_gap_conn_sec_mode_t write_perm;      /**< Write permissions. */
+  uint8_t                 vlen       :1;   /**< Variable length attribute. */
+  uint8_t                 vloc       :2;   /**< Value location, see @ref BLE_GATTS_VLOCS.*/
+  uint8_t                 rd_auth    :1;   /**< Read Authorization and value will be requested from the application on every read operation. */ 
+  uint8_t                 wr_auth    :1;   /**< Write Authorization will be requested from the application on every Write Request operation (but not Write Command). */
+} ble_gatts_attr_md_t;
+
+
+/**@brief GATT Attribute. */
+typedef struct
+{
+  ble_uuid_t*          p_uuid;          /**< Pointer to the attribute UUID. */
+  ble_gatts_attr_md_t* p_attr_md;       /**< Pointer to the attribute metadata structure. */
+  uint16_t             init_len;        /**< Initial attribute value length in bytes. */
+  uint16_t             init_offs;       /**< Initial attribute value offset in bytes. If different from zero, the first init_offs bytes of the attribute value will be left uninitialized. */
+  uint16_t             max_len;         /**< Maximum attribute value length in bytes, see @ref BLE_GATTS_ATTR_LENS_MAX for maximum values. */
+  uint8_t*             p_value;         /**< Pointer to the attribute data. Please note that if the @ref BLE_GATTS_VLOC_USER value location is selected in the attribute metadata, this will have to point to a buffer
+                                             that remains valid through the lifetime of the attribute. This excludes usage of automatic variables that may go out of scope or any other temporary location. 
+                                             The stack may access that memory directly without the application's knowledge. */
+} ble_gatts_attr_t;
+
+
+/**@brief GATT Attribute Context. */
+typedef struct
+{
+  ble_uuid_t           srvc_uuid;       /**< Service UUID. */
+  ble_uuid_t           char_uuid;       /**< Characteristic UUID if applicable (BLE_UUID_TYPE_UNKNOWN if N/A). */
+  ble_uuid_t           desc_uuid;       /**< Descriptor UUID if applicable (BLE_UUID_TYPE_UNKNOWN if N/A). */
+  uint16_t             srvc_handle;     /**< Service Handle. */
+  uint16_t             value_handle;    /**< Characteristic Handle if applicable (BLE_GATT_HANDLE_INVALID if N/A). */
+  uint8_t              type;            /**< Attribute Type, see @ref BLE_GATTS_ATTR_TYPES. */
+} ble_gatts_attr_context_t;
+
+
+/**@brief GATT Characteristic Presentation Format. */
+typedef struct
+{
+  uint8_t          format;      /**< Format of the value, see @ref BLE_GATT_CPF_FORMATS. */
+  int8_t           exponent;    /**< Exponent for integer data types. */
+  uint16_t         unit;        /**< UUID from Bluetooth Assigned Numbers. */
+  uint8_t          name_space;  /**< Namespace from Bluetooth Assigned Numbers, see @ref BLE_GATT_CPF_NAMESPACES. */
+  uint16_t         desc;        /**< Namespace description from Bluetooth Assigned Numbers, see @ref BLE_GATT_CPF_NAMESPACES. */
+} ble_gatts_char_pf_t;
+
+
+/**@brief GATT Characteristic metadata. */
+typedef struct
+{
+  ble_gatt_char_props_t       char_props;               /**< Characteristic Properties. */
+  ble_gatt_char_ext_props_t   char_ext_props;           /**< Characteristic Extended Properties. */
+  uint8_t*                    p_char_user_desc;         /**< Pointer to a UTF-8, NULL if the descriptor is not required. */
+  uint16_t                    char_user_desc_max_size;  /**< The maximum size in bytes of the user description descriptor. */
+  uint16_t                    char_user_desc_size;      /**< The size of the user description, must be smaller or equal to char_user_desc_max_size. */ 
+  ble_gatts_char_pf_t*        p_char_pf;                /**< Pointer to a presentation format structure or NULL if the descriptor is not required. */
+  ble_gatts_attr_md_t*        p_user_desc_md;           /**< Attribute metadata for the User Description descriptor, or NULL for default values. */
+  ble_gatts_attr_md_t*        p_cccd_md;                /**< Attribute metadata for the Client Characteristic Configuration Descriptor, or NULL for default values. */
+  ble_gatts_attr_md_t*        p_sccd_md;                /**< Attribute metadata for the Server Characteristic Configuration Descriptor, or NULL for default values. */
+} ble_gatts_char_md_t;
+
+
+/**@brief GATT Characteristic Definition Handles. */
+typedef struct
+{
+  uint16_t          value_handle;       /**< Handle to the characteristic value. */
+  uint16_t          user_desc_handle;   /**< Handle to the User Description descriptor, or BLE_GATT_HANDLE_INVALID if not present. */
+  uint16_t          cccd_handle;        /**< Handle to the Client Characteristic Configuration Descriptor, or BLE_GATT_HANDLE_INVALID if not present. */
+  uint16_t          sccd_handle;        /**< Handle to the Server Characteristic Configuration Descriptor, or BLE_GATT_HANDLE_INVALID if not present. */
+} ble_gatts_char_handles_t;
+
+
+/**@brief GATT HVx parameters. */
+typedef struct
+{
+  uint16_t          handle;             /**< Characteristic Value Handle. */
+  uint8_t           type;               /**< Indication or Notification, see @ref BLE_GATT_HVX_TYPES. */
+  uint16_t          offset;             /**< Offset within the attribute value. */
+  uint16_t*         p_len;              /**< Length in bytes to be written, length in bytes written after successful return. */
+  uint8_t*          p_data;             /**< Actual data content, use NULL to use the current attribute value. */
+} ble_gatts_hvx_params_t;
+
+/**@brief GATT Read Authorization parameters. */
+typedef struct
+{
+  uint16_t          gatt_status;        /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */
+  uint8_t           update : 1;         /**< If set, data supplied in p_data will be used in the ATT response. */
+  uint16_t          offset;             /**< Offset of the attribute value being updated. */
+  uint16_t          len;                /**< Length in bytes of the value in p_data pointer, see @ref BLE_GATTS_ATTR_LENS_MAX. */
+  uint8_t*          p_data;             /**< Pointer to new value used to update the attribute value. */
+} ble_gatts_read_authorize_params_t;
+
+/**@brief GATT Write Authorisation parameters. */
+typedef struct
+{
+  uint16_t          gatt_status;        /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */
+} ble_gatts_write_authorize_params_t;
+
+/**@brief GATT Read or Write Authorize Reply parameters. */
+typedef struct
+{
+  uint8_t                               type;   /**< Type of authorize operation, see @ref BLE_GATTS_AUTHORIZE_TYPES. */
+  union {
+    ble_gatts_read_authorize_params_t   read;   /**< Read authorization parameters. */
+    ble_gatts_write_authorize_params_t  write;  /**< Write authorization parameters. */
+  } params;
+} ble_gatts_rw_authorize_reply_params_t;
+
+
+/**
+ * @brief GATT Server Event IDs.
+ */
+enum BLE_GATTS_EVTS
+{
+  BLE_GATTS_EVT_WRITE = BLE_GATTS_EVT_BASE,       /**< Write operation performed. */
+  BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST,             /**< Read/Write Authorization request. */
+  BLE_GATTS_EVT_SYS_ATTR_MISSING,                 /**< A persistent system attribute access is pending, awaiting a sd_ble_gatts_sys_attr_set(). */
+  BLE_GATTS_EVT_HVC,                              /**< Handle Value Confirmation. */
+  BLE_GATTS_EVT_SC_CONFIRM,                       /**< Service Changed Confirmation. */
+  BLE_GATTS_EVT_TIMEOUT                           /**< Timeout. */
+};
+
+
+/**@brief Event structure for BLE_GATTS_EVT_WRITE. */
+typedef struct
+{
+  uint16_t                    handle;             /**< Attribute Handle. */
+  uint8_t                     op;                 /**< Type of write operation, see @ref BLE_GATTS_OPS. */
+  ble_gatts_attr_context_t    context;            /**< Attribute Context. */
+  uint16_t                    offset;             /**< Offset for the write operation. */
+  uint16_t                    len;                /**< Length of the incoming data. */
+  uint8_t                     data[1];            /**< Incoming data, variable length. */
+} ble_gatts_evt_write_t;
+
+/**@brief Event structure for authorize read request. */
+typedef struct
+{
+  uint16_t                    handle;             /**< Attribute Handle. */
+  ble_gatts_attr_context_t    context;            /**< Attribute Context. */
+  uint16_t                    offset;             /**< Offset for the read operation. */
+} ble_gatts_evt_read_t;
+
+/**@brief Event structure for BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST. */
+typedef struct
+{
+  uint8_t                     type;             /**< Type of authorize operation, see @ref BLE_GATTS_AUTHORIZE_TYPES. */
+  union {
+    ble_gatts_evt_read_t      read;             /**< Attribute Read Parameters. */
+    ble_gatts_evt_write_t     write;            /**< Attribute Write Parameters. */
+  } request;
+} ble_gatts_evt_rw_authorize_request_t;
+
+/**@brief Event structure for BLE_GATTS_EVT_SYS_ATTR_MISSING. */
+typedef struct
+{
+  uint8_t hint;
+} ble_gatts_evt_sys_attr_missing_t;
+
+
+/**@brief Event structure for BLE_GATTS_EVT_HVC. */
+typedef struct
+{
+  uint16_t          handle;                       /**< Attribute Handle. */
+} ble_gatts_evt_hvc_t;
+
+/**@brief Event structure for BLE_GATTS_EVT_TIMEOUT. */
+typedef struct
+{
+  uint8_t          src;                       /**< Timeout source, see @ref BLE_GATT_TIMEOUT_SOURCES. */
+} ble_gatts_evt_timeout_t;
+
+
+/**@brief GATT Server event callback event structure. */
+typedef struct
+{
+  uint16_t conn_handle;                                       /**< Connection Handle on which event occurred. */
+  union
+  {
+    ble_gatts_evt_write_t                 write;              /**< Write Event Parameters. */
+    ble_gatts_evt_rw_authorize_request_t  authorize_request;  /**< Read or Write Authorize Request Parameters. */
+    ble_gatts_evt_sys_attr_missing_t      sys_attr_missing;   /**< System attributes missing. */
+    ble_gatts_evt_hvc_t                   hvc;                /**< Handle Value Confirmation Event Parameters. */
+    ble_gatts_evt_timeout_t               timeout;            /**< Timeout Event. */
+  } params;
+} ble_gatts_evt_t;
+
+/** @} */
+
+/** @addtogroup BLE_GATTS_FUNCTIONS Functions
+ * @{ */
+
+/**@brief Add a service declaration to the local server ATT table.
+ *
+ * @param[in] type      Toggles between primary and secondary services, see @ref BLE_GATTS_SRVC_TYPES.
+ * @param[in] p_uuid    Pointer to service UUID.
+ * @param[out] p_handle Pointer to a 16-bit word where the assigned handle will be stored.
+ *
+ * @note Secondary Services are only relevant in the context of the entity that references them, it is therefore forbidden to
+ *       add a secondary service declaration that is not referenced by another service later in the ATT table.
+ *
+ * @return @ref NRF_SUCCESS Successfully added a service declaration.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, Vendor Specific UUIDs need to be present in the table.
+ * @return @ref NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack.
+ * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation.
+ */
+SVCALL(SD_BLE_GATTS_SERVICE_ADD, uint32_t, sd_ble_gatts_service_add(uint8_t type, ble_uuid_t const*const p_uuid, uint16_t *const p_handle));
+
+
+/**@brief Add an include declaration to the local server ATT table.
+ *
+ * @note It is currently only possible to add an include declaration to the last added service (i.e. only sequential addition is supported at this time). 
+ *
+ * @note The included service must already be present in the ATT table prior to this call.
+ *
+ * @param[in] service_handle    Handle of the service where the included service is to be placed, if BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially.
+ * @param[in] inc_srvc_handle   Handle of the included service.
+ * @param[out] p_include_handle Pointer to a 16-bit word where the assigned handle will be stored.
+ *
+ * @return @ref NRF_SUCCESS Successfully added an include declaration.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, handle values need to match previously added services.
+ * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation.
+ * @return @ref NRF_ERROR_FORBIDDEN Forbidden value supplied, self inclusions are not allowed.
+ * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation.
+ * @return @ref NRF_ERROR_NOT_FOUND Attribute not found.
+ */
+SVCALL(SD_BLE_GATTS_INCLUDE_ADD, uint32_t, sd_ble_gatts_include_add(uint16_t service_handle, uint16_t inc_srvc_handle, uint16_t *const p_include_handle));
+
+
+/**@brief Add a characteristic declaration, a characteristic value declaration and optional characteristic descriptor declarations to the local server ATT table.
+ *
+ * @note It is currently only possible to add a characteristic to the last added service (i.e. only sequential addition is supported at this time). 
+ *
+ * @note Several restrictions apply to the parameters, such as matching permissions between the user description descriptor and the writeable auxiliaries bits,
+ *       readable (no security) and writeable (selectable) CCCDs and SCCDs and valid presentation format values.
+ *
+ * @note If no metadata is provided for the optional descriptors, their permissions will be derived from the characteristic permissions.
+ *
+ * @param[in] service_handle    Handle of the service where the characteristic is to be placed, if BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially.
+ * @param[in] p_char_md         Characteristic metadata.
+ * @param[in] p_attr_char_value Pointer to the attribute structure corresponding to the characteristic value.
+ * @param[out] p_handles        Pointer to the structure where the assigned handles will be stored.
+ *
+ * @return @ref NRF_SUCCESS Successfully added a characteristic.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, service handle, Vendor Specific UUIDs, lengths, and permissions need to adhere to the constraints.
+ * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation, a service context is required.
+ * @return @ref NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack.
+ * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation.
+ * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX.
+ */
+SVCALL(SD_BLE_GATTS_CHARACTERISTIC_ADD, uint32_t, sd_ble_gatts_characteristic_add(uint16_t service_handle, ble_gatts_char_md_t const*const p_char_md, ble_gatts_attr_t const*const p_attr_char_value, ble_gatts_char_handles_t *const p_handles));
+
+
+/**@brief Add a descriptor to the local server ATT table.
+ *
+ * @note It is currently only possible to add a descriptor to the last added characteristic (i.e. only sequential addition is supported at this time). 
+ *
+ * @param[in] char_handle   Handle of the characteristic where the descriptor is to be placed, if BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially.
+ * @param[in] p_attr        Pointer to the attribute structure.
+ * @param[out] p_handle     Pointer to a 16-bit word where the assigned handle will be stored.
+ *
+ * @return @ref NRF_SUCCESS Successfully added a descriptor.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, characteristic handle, Vendor Specific UUIDs, lengths, and permissions need to adhere to the constraints.
+ * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation, a characteristic context is required.
+ * @return @ref NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack.
+ * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation.
+ * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX.
+ */
+SVCALL(SD_BLE_GATTS_DESCRIPTOR_ADD, uint32_t, sd_ble_gatts_descriptor_add(uint16_t char_handle, ble_gatts_attr_t const * const p_attr, uint16_t* const p_handle));
+
+/**@brief Set the value of a given attribute.
+ *
+ * @param[in] handle    Attribute handle.
+ * @param[in] offset    Offset in bytes to write from.
+ * @param[in,out] p_len Length in bytes to be written, length in bytes written after successful return.
+ * @param[in] p_value   Pointer to a buffer (at least len bytes long) containing the desired attribute value. If value is stored in user memory, only the attribute length is updated when p_value == NULL.
+ *
+ * @return @ref NRF_SUCCESS Successfully set the value of the attribute.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
+ * @return @ref NRF_ERROR_NOT_FOUND Attribute not found.
+ * @return @ref NRF_ERROR_FORBIDDEN Forbidden handle supplied, certain attributes are not modifiable by the application.
+ * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX.
+ */
+SVCALL(SD_BLE_GATTS_VALUE_SET, uint32_t, sd_ble_gatts_value_set(uint16_t handle, uint16_t offset, uint16_t* const p_len, uint8_t const * const p_value));
+
+/**@brief Get the value of a given attribute.
+ *
+ * @param[in] handle     Attribute handle.
+ * @param[in] offset     Offset in bytes to read from.
+ * @param[in,out] p_len  Length in bytes to be read, total length of attribute value (in bytes, starting from offset) after successful return.
+ * @param[in,out] p_data Pointer to a buffer (at least len bytes long) where to store the attribute value. Set to NULL to obtain the complete length of attribute value.
+ *
+ * @note                 If the attribute value is longer than the size of the supplied buffer,
+ *                       p_len will return the total attribute value length (excluding offset),
+ *                       and not the number of bytes actually returned in p_data.
+ *                       The application may use this information to allocate a suitable buffer size.
+ * 
+ * @return @ref NRF_SUCCESS Successfully retrieved the value of the attribute.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_NOT_FOUND Attribute not found.
+ */
+SVCALL(SD_BLE_GATTS_VALUE_GET, uint32_t, sd_ble_gatts_value_get(uint16_t handle, uint16_t offset, uint16_t *const p_len, uint8_t* const p_data));
+
+/**@brief Notify or Indicate an attribute value.
+ *
+ * @details This function checks for the relevant Client Characteristic Configuration descriptor value to verify that the relevant operation
+ *          (notification or indication) has been enabled by the client. It is also able to update the attribute value before issuing the PDU, so that
+ *          the application can atomically perform a value update and a server initiated transaction with a single API call.
+ *          If the application chooses to indicate an attribute value, a @ref BLE_GATTS_EVT_HVC will be sent up as soon as the confirmation arrives from
+ *          the peer.
+ *
+ * @note    The local attribute value may be updated even if an outgoing packet is not sent to the peer due to an error during execution. 
+ *          When receiveing the error codes @ref NRF_ERROR_INVALID_STATE, @ref NRF_ERROR_BUSY, @ref BLE_ERROR_GATTS_SYS_ATTR_MISSING and 
+ *          @ref BLE_ERROR_NO_TX_BUFFERS the ATT table has been updated.
+ *          The caller can check whether the value has been updated by looking at the contents of *(p_hvx_params->p_len).
+ *
+ * @note    It is important to note that a notification will <b>consume an application buffer</b>, and will therefore 
+ *          generate a @ref BLE_EVT_TX_COMPLETE event when the packet has been transmitted. An indication on the other hand will use the 
+ *          standard server internal buffer and thus will only generate a @ref BLE_GATTS_EVT_HVC event as soon as the confirmation 
+ *          has been received from the peer. Please see the documentation of @ref sd_ble_tx_buffer_count_get for more details.
+ *
+ * @param[in] conn_handle  Connection handle.
+ * @param[in] p_hvx_params Pointer to an HVx parameters structure. If the p_data member contains a non-NULL pointer the attribute value will be updated with
+ *                         the contents pointed by it before sending the notification or indication.
+ *
+ * @return @ref NRF_SUCCESS Successfully queued a notification or indication for transmission, and optionally updated the attribute value.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
+ * @return @ref BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle(s) supplied. Only attributes added directly by the application are available to notify and indicate.
+ * @return @ref BLE_ERROR_GATTS_INVALID_ATTR_TYPE Invalid attribute type(s) supplied, only characteristic values may be notified and indicated.
+ * @return @ref NRF_ERROR_NOT_FOUND Attribute not found.
+ * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied.
+ * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation, notifications or indications must be enabled in the CCCD.
+ * @return @ref NRF_ERROR_BUSY Procedure already in progress.
+ * @return @ref BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value.
+ * @return @ref BLE_ERROR_NO_TX_BUFFERS There are no available buffers to send the data, applies only to notifications.
+ */
+SVCALL(SD_BLE_GATTS_HVX, uint32_t, sd_ble_gatts_hvx(uint16_t conn_handle, ble_gatts_hvx_params_t const*const p_hvx_params));
+
+/**@brief Indicate the Service Changed attribute value.
+ *
+ * @details This call will send a Handle Value Indication to one or more peers connected to inform them that the attribute
+ *          table layout has changed. As soon as the peer has confirmed the indication, a @ref BLE_GATTS_EVT_SC_CONFIRM event will
+ *          be issued.
+ *
+ * @note    Some of the restrictions and limitations that apply to @ref sd_ble_gatts_hvx also apply here.
+ *
+ * @param[in] conn_handle  Connection handle.
+ * @param[in] start_handle Start of affected attribute handle range.
+ * @param[in] end_handle   End of affected attribute handle range.
+ *
+ * @return @ref NRF_SUCCESS Successfully queued the Service Changed indication for transmission.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
+ * @return @ref BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle(s) supplied, handles must be in the range populated by the application.
+ * @return @ref NRF_ERROR_INVALID_STATE Invalid state to perform operation, notifications or indications must be enabled in the CCCD.
+ * @return @ref NRF_ERROR_BUSY Procedure already in progress.
+ * @return @ref BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value.
+ */
+SVCALL(SD_BLE_GATTS_SERVICE_CHANGED, uint32_t, sd_ble_gatts_service_changed(uint16_t conn_handle, uint16_t start_handle, uint16_t end_handle));
+
+/**@brief Respond to a Read/Write authorization request.
+ *
+ * @note This call should only be used as a response to a @ref BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST event issued to the application.
+ *
+ * @param[in] conn_handle                 Connection handle.
+ * @param[in] p_rw_authorize_reply_params Pointer to a structure with the attribute provided by the application.
+ *
+ * @return @ref NRF_SUCCESS               Successfully queued a response to the peer, and in the case of a write operation, ATT table updated.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
+ * @return @ref NRF_ERROR_INVALID_STATE   No authorization request pending.
+ * @return @ref NRF_ERROR_INVALID_PARAM   Authorization op invalid,
+ *                                         or for Read Authorization reply: requested handles not replied with,
+ *                                         or for Write Authorization reply: handle supplied does not match requested handle.
+ */
+SVCALL(SD_BLE_GATTS_RW_AUTHORIZE_REPLY, uint32_t, sd_ble_gatts_rw_authorize_reply(uint16_t conn_handle, ble_gatts_rw_authorize_reply_params_t const*const p_rw_authorize_reply_params));
+
+
+/**@brief Update persistent system attribute information.
+ *
+ * @details Supply to the stack information about persistent system attributes.
+ *          This call is legal in the connected state only, and is usually 
+ *          made immediately after a connection is established and the bond identified.
+ *          usually as a response to a BLE_GATTS_EVT_SYS_ATTR_MISSING.
+ *
+ *          p_sysattrs may point directly to the application's stored copy of the struct.
+ *          If the pointer is NULL, the system attribute info is initialized, assuming that
+ *          the application does not have any previously saved data for this bond.
+ *
+ * @note The state of persistent system attributes is reset upon connection and then remembered for its duration. 
+ *
+ * @note If this call returns with an error code different from @ref NRF_SUCCESS, the storage of persistent system attributes may have been completed only partially.
+ *       This means that the state of the attribute table is undefined, and the application should either provide a new set of attributes using this same call or
+ *       reset the SoftDevice to return to a known state.
+ *
+ * @param[in]  conn_handle        Connection handle.
+ * @param[in]  p_sys_attr_data    Pointer to a saved copy of system attributes supplied to the stack, or NULL.
+ * @param[in]  len                Size of data pointed by p_sys_attr_data, in octets. 
+ *
+ * @return @ref NRF_SUCCESS Successfully set the system attribute information.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
+ * @return @ref NRF_ERROR_INVALID_DATA Invalid data supplied, the data should be exactly the same as retrieved with @ref sd_ble_gatts_sys_attr_get.
+ * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation.
+ */ 
+SVCALL(SD_BLE_GATTS_SYS_ATTR_SET, uint32_t, sd_ble_gatts_sys_attr_set(uint16_t conn_handle, uint8_t const*const p_sys_attr_data, uint16_t len)); 
+
+ 
+/**@brief Retrieve persistent system attribute information from the stack.
+ *
+ * @details This call is used to retrieve information about values to be stored perisistently by the application
+ *          after a connection has been terminated. When a new connection is made to the same bond, the values
+ *          should be restored using @ref sd_ble_gatts_sys_attr_set.
+ *          The data should be read before any new advertising is started, or any new connection established. The connection handle for
+ *          the previous now defunct connection will remain valid until a new one is created to allow this API call to refer to it.
+ *
+ * @param[in]     conn_handle       Connection handle of the recently terminated connection.
+ * @param[in]     p_sys_attr_data   Pointer to a buffer where updated information about system attributes will be filled in. NULL can be provided to 
+ *                                  obtain the length of the data
+ * @param[in,out] p_len             Size of application buffer if p_sys_attr_data is not NULL. Unconditially updated to actual length of system attribute data.
+ *
+ * @return @ref NRF_SUCCESS Successfully retrieved the system attribute information.
+ * @return @ref BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_DATA_SIZE The system attribute information did not fit into the provided buffer.
+ */ 
+SVCALL(SD_BLE_GATTS_SYS_ATTR_GET, uint32_t, sd_ble_gatts_sys_attr_get(uint16_t conn_handle, uint8_t * const p_sys_attr_data, uint16_t* const p_len)); 
+
+/** @} */
+
+#endif // BLE_GATTS_H__
+
+/**
+  @}
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/ble_hci.h	Fri Oct 17 14:15:08 2014 +0100
@@ -0,0 +1,96 @@
+/*
+  Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved.
+
+  The information contained herein is confidential property of Nordic Semiconductor. The use,
+  copying, transfer or disclosure of such information is prohibited except by express written
+  agreement with Nordic Semiconductor.
+ */
+/**
+  @addtogroup BLE_COMMON
+  @{
+*/
+
+
+#ifndef BLE_HCI_H__
+#define BLE_HCI_H__
+
+/** @defgroup BLE_HCI_STATUS_CODES Bluetooth status codes
+ * @{ */
+
+#define BLE_HCI_STATUS_CODE_SUCCESS                        0x00
+#define BLE_HCI_STATUS_CODE_UNKNOWN_BTLE_COMMAND           0x01
+#define BLE_HCI_STATUS_CODE_UNKNOWN_CONNECTION_IDENTIFIER  0x02
+/*0x03 Hardware Failure
+0x04 Page Timeout
+*/
+#define BLE_HCI_AUTHENTICATION_FAILURE                     0x05
+#define BLE_HCI_STATUS_CODE_PIN_OR_KEY_MISSING             0x06
+#define BLE_HCI_MEMORY_CAPACITY_EXCEEDED                   0x07
+#define BLE_HCI_CONNECTION_TIMEOUT                         0x08
+/*0x09 Connection Limit Exceeded
+0x0A Synchronous Connection Limit To A Device Exceeded
+0x0B ACL Connection Already Exists*/
+#define BLE_HCI_STATUS_CODE_COMMAND_DISALLOWED             0x0C
+/*0x0D Connection Rejected due to Limited Resources
+0x0E Connection Rejected Due To Security Reasons
+0x0F Connection Rejected due to Unacceptable BD_ADDR
+0x10 Connection Accept Timeout Exceeded
+0x11 Unsupported Feature or Parameter Value*/
+#define BLE_HCI_STATUS_CODE_INVALID_BTLE_COMMAND_PARAMETERS 0x12
+#define BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION           0x13
+#define BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_LOW_RESOURCES 0x14
+#define BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_POWER_OFF     0x15
+#define BLE_HCI_LOCAL_HOST_TERMINATED_CONNECTION            0x16
+/*
+0x17 Repeated Attempts
+0x18 Pairing Not Allowed
+0x19 Unknown LMP PDU
+*/
+#define BLE_HCI_UNSUPPORTED_REMOTE_FEATURE 0x1A
+/*
+0x1B SCO Offset Rejected
+0x1C SCO Interval Rejected
+0x1D SCO Air Mode Rejected*/
+#define BLE_HCI_STATUS_CODE_INVALID_LMP_PARAMETERS     0x1E
+#define BLE_HCI_STATUS_CODE_UNSPECIFIED_ERROR          0x1F
+/*0x20 Unsupported LMP Parameter Value
+0x21 Role Change Not Allowed
+*/
+#define BLE_HCI_STATUS_CODE_LMP_RESPONSE_TIMEOUT       0x22
+/*0x23 LMP Error Transaction Collision*/
+#define BLE_HCI_STATUS_CODE_LMP_PDU_NOT_ALLOWED        0x24
+/*0x25 Encryption Mode Not Acceptable
+0x26 Link Key Can Not be Changed
+0x27 Requested QoS Not Supported
+*/
+#define BLE_HCI_INSTANT_PASSED                         0x28
+#define BLE_HCI_PAIRING_WITH_UNIT_KEY_UNSUPPORTED      0x29
+#define BLE_HCI_DIFFERENT_TRANSACTION_COLLISION        0x2A
+/*
+0x2B Reserved
+0x2C QoS Unacceptable Parameter
+0x2D QoS Rejected
+0x2E Channel Classification Not Supported
+0x2F Insufficient Security
+0x30 Parameter Out Of Mandatory Range
+0x31 Reserved
+0x32 Role Switch Pending
+0x33 Reserved
+0x34 Reserved Slot Violation
+0x35 Role Switch Failed
+0x36 Extended Inquiry Response Too Large
+0x37 Secure Simple Pairing Not Supported By Host.
+0x38 Host Busy - Pairing
+0x39 Connection Rejected due to No Suitable Channel Found*/
+#define BLE_HCI_CONTROLLER_BUSY                        0x3A
+#define BLE_HCI_CONN_INTERVAL_UNACCEPTABLE             0x3B
+#define BLE_HCI_DIRECTED_ADVERTISER_TIMEOUT            0x3C
+#define BLE_HCI_CONN_TERMINATED_DUE_TO_MIC_FAILURE     0x3D
+#define BLE_HCI_CONN_FAILED_TO_BE_ESTABLISHED          0x3E
+
+/** @} */
+
+
+#endif // BLE_HCI_H__
+
+/** @} */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/ble_l2cap.h	Fri Oct 17 14:15:08 2014 +0100
@@ -0,0 +1,144 @@
+/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved.
+ *
+ * The information contained herein is confidential property of Nordic Semiconductor. The use,
+ * copying, transfer or disclosure of such information is prohibited except by express written
+ * agreement with Nordic Semiconductor.
+ *
+ */
+/**
+  @addtogroup BLE_L2CAP Logical Link Control and Adaptation Protocol (L2CAP)
+  @{
+  @brief Definitions and prototypes for the L2CAP interface.
+ */
+
+#ifndef BLE_L2CAP_H__
+#define BLE_L2CAP_H__ 
+
+#include "ble_types.h"
+#include "ble_ranges.h"
+#include "ble_err.h"
+#include "nrf_svc.h"
+
+/**@addtogroup BLE_L2CAP_ENUMERATIONS Enumerations
+ * @{ */
+
+/**@brief L2CAP API SVC numbers. */
+enum BLE_L2CAP_SVCS 
+{
+  SD_BLE_L2CAP_CID_REGISTER = BLE_L2CAP_SVC_BASE,  /**< Register a CID. */
+  SD_BLE_L2CAP_CID_UNREGISTER,                     /**< Unregister a CID. */
+  SD_BLE_L2CAP_TX                                  /**< Transmit a packet. */
+};
+
+/** @} */
+
+/**@addtogroup BLE_L2CAP_DEFINES Defines
+ * @{ */
+
+/**@defgroup BLE_ERRORS_L2CAP SVC return values specific to L2CAP
+ * @{ */
+#define BLE_ERROR_L2CAP_CID_IN_USE            (NRF_L2CAP_ERR_BASE + 0x000)  /**< CID already in use. */
+/** @} */
+
+/**@brief Default L2CAP MTU. */
+#define BLE_L2CAP_MTU_DEF           (23)    
+
+/**@brief Invalid Channel Identifier. */
+#define BLE_L2CAP_CID_INVALID       (0x0000) 
+
+/**@brief Dynamic Channel Identifier base. */
+#define BLE_L2CAP_CID_DYN_BASE      (0x0040) 
+
+/**@brief Maximum amount of dynamic CIDs. */
+#define BLE_L2CAP_CID_DYN_MAX       (8) 
+
+/** @} */
+
+/**@addtogroup BLE_L2CAP_STRUCTURES Structures
+ * @{ */
+
+/**@brief Packet header format for L2CAP transmission. */
+typedef struct
+{
+  uint16_t   len;                                 /**< Length of valid info in data member. */
+  uint16_t   cid;                                 /**< Channel ID on which packet is transmitted. */
+} ble_l2cap_header_t;
+
+/**@brief L2CAP Event IDs. */
+enum BLE_L2CAP_EVTS 
+{
+  BLE_L2CAP_EVT_RX  = BLE_L2CAP_EVT_BASE          /**< L2CAP packet received. */
+};
+
+
+/**@brief L2CAP Received packet event report. */
+typedef struct
+{
+  ble_l2cap_header_t header;                      /** L2CAP packet header. */
+  uint8_t    data[1];                             /**< Packet data, variable length. */
+} ble_l2cap_evt_rx_t;
+
+
+/**@brief L2CAP event callback event structure. */
+typedef struct
+{
+  uint16_t conn_handle;                           /**< Connection Handle on which event occured. */
+  union
+  {
+    ble_l2cap_evt_rx_t rx;                        /**< RX Event parameters. */
+  } params;
+} ble_l2cap_evt_t;
+
+
+/**@brief Register a CID with L2CAP.
+ *
+ * @details This registers a higher protocol layer with the L2CAP multiplexer, and is requried prior to all operations on the CID.
+ *          
+ * @param[in] cid L2CAP CID.
+ *
+ * @return @ref NRF_SUCCESS Successfully registered a CID with the L2CAP layer.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, CID must be above @ref BLE_L2CAP_CID_DYN_BASE.
+ * @return @ref BLE_ERROR_L2CAP_CID_IN_USE L2CAP CID already in use.
+ * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation.
+ */
+SVCALL(SD_BLE_L2CAP_CID_REGISTER, uint32_t, sd_ble_l2cap_cid_register(uint16_t cid));
+
+/**@brief Unregister a CID with L2CAP.
+ *
+ * @details This unregisters a previously registerd higher protocol layer with the L2CAP multiplexer.
+ *          
+ * @param[in] cid L2CAP CID.
+ *
+ * @return @ref NRF_SUCCESS Successfully unregistered the CID.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied.
+ * @return @ref NRF_ERROR_NOT_FOUND CID not previously registered.
+ */
+SVCALL(SD_BLE_L2CAP_CID_UNREGISTER, uint32_t, sd_ble_l2cap_cid_unregister(uint16_t cid));
+
+/**@brief Transmit an L2CAP packet.
+ *
+ * @note    It is important to note that a call to this function will <b>consume an application buffer</b>, and will therefore 
+ *          generate a @ref BLE_EVT_TX_COMPLETE event when the packet has been transmitted. 
+ *          Please see the documentation of @ref sd_ble_tx_buffer_count_get for more details.
+ *
+ * @param[in] conn_handle Connection Handle.
+ * @param[in] p_header    Pointer to a packet header containing length and CID.
+ * @param[in] p_data      Pointer to the data to be transmitted.
+ *
+ * @return @ref NRF_SUCCESS Successfully queued an L2CAP packet for transmission.
+ * @return @ref NRF_ERROR_INVALID_ADDR Invalid pointer supplied.
+ * @return @ref NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, CIDs must be registered beforehand with @ref sd_ble_l2cap_cid_register.
+ * @return @ref NRF_ERROR_NOT_FOUND CID not found.
+ * @return @ref NRF_ERROR_NO_MEM Not enough memory to complete operation.
+ * @return @ref BLE_ERROR_NO_TX_BUFFERS Not enough application buffers available.
+ * @return @ref NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, see @ref BLE_L2CAP_MTU_DEF.
+ */
+SVCALL(SD_BLE_L2CAP_TX, uint32_t, sd_ble_l2cap_tx(uint16_t conn_handle, ble_l2cap_header_t const * const p_header, uint8_t const * const p_data));
+
+/** @} */
+
+#endif // BLE_L2CAP_H__
+
+/**
+  @}
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/ble_ranges.h	Fri Oct 17 14:15:08 2014 +0100
@@ -0,0 +1,89 @@
+/*
+  Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved.
+
+  The information contained herein is confidential property of Nordic Semiconductor. The use,
+  copying, transfer or disclosure of such information is prohibited except by express written
+  agreement with Nordic Semiconductor.
+ */
+/**
+  @addtogroup BLE_COMMON
+  @{
+  @defgroup ble_ranges Module specific SVC and event number subranges
+  @{
+
+  @brief Definition of SVC and event number subranges for each API module.
+
+  @note
+  SVCs and event numbers are split into subranges for each API module.
+  Each module receives its entire allocated range of SVC calls, whether implemented or not,
+  but return BLE_ERROR_NOT_SUPPORTED for unimplemented or undefined calls in its range.
+
+  Note that the symbols BLE_<module>_SVC_LAST is the end of the allocated SVC range,
+  rather than the last SVC function call actually defined and implemented.
+
+  Specific SVC and event values are defined in each module's ble_<module>.h file,
+  which defines names of each individual SVC code based on the range start value.
+*/
+
+#ifndef BLE_RANGES_H__
+#define BLE_RANGES_H__
+
+#define BLE_SVC_BASE           0x60
+#define BLE_SVC_LAST           0x6B       /* Total: 12. */
+
+#define BLE_RESERVED_SVC_BASE  0x6C
+#define BLE_RESERVED_SVC_LAST  0x6F       /* Total: 4. */
+
+#define BLE_GAP_SVC_BASE       0x70
+#define BLE_GAP_SVC_LAST       0x8F       /* Total: 32. */
+
+#define BLE_GATTC_SVC_BASE     0x90
+#define BLE_GATTC_SVC_LAST     0x9F       /* Total: 16. */
+
+#define BLE_GATTS_SVC_BASE     0xA0
+#define BLE_GATTS_SVC_LAST     0xAF       /* Total: 16. */
+
+#define BLE_L2CAP_SVC_BASE     0xB0
+#define BLE_L2CAP_SVC_LAST     0xBF       /* Total: 16. */
+
+
+#define BLE_EVT_INVALID        0x00
+
+#define BLE_EVT_BASE           0x01
+#define BLE_EVT_LAST           0x0F       /* Total: 15. */
+
+#define BLE_GAP_EVT_BASE       0x10
+#define BLE_GAP_EVT_LAST       0x2F       /* Total: 32. */
+
+#define BLE_GATTC_EVT_BASE     0x30
+#define BLE_GATTC_EVT_LAST     0x4F       /* Total: 32. */
+
+#define BLE_GATTS_EVT_BASE     0x50
+#define BLE_GATTS_EVT_LAST     0x6F       /* Total: 32. */
+
+#define BLE_L2CAP_EVT_BASE     0x70
+#define BLE_L2CAP_EVT_LAST     0x8F       /* Total: 32.  */
+
+#define BLE_OPT_INVALID        0x00       /**< Invalid BLE Option. */
+
+#define BLE_OPT_BASE           0x01       /**< Common BLE Option base. */
+#define BLE_OPT_LAST           0x1F       /**< Total: 31. */
+
+#define BLE_GAP_OPT_BASE       0x20       /**< GAP BLE Option base. */
+#define BLE_GAP_OPT_LAST       0x3F       /**< Total: 32. */
+
+#define BLE_GATTC_OPT_BASE     0x40       /**< GATTC BLE Option base. */
+#define BLE_GATTC_OPT_LAST     0x5F       /**< Total: 32. */
+
+#define BLE_GATTS_OPT_BASE     0x60       /**< GATTS BLE Option base. */
+#define BLE_GATTS_OPT_LAST     0x7F       /**< Total: 32. */
+
+#define BLE_L2CAP_OPT_BASE     0x80       /**< L2CAP BLE Option base. */
+#define BLE_L2CAP_OPT_LAST     0x9F       /**< Total: 32.  */
+
+#endif /* BLE_RANGES_H__ */
+
+/**
+  @}
+  @}
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/ble_types.h	Fri Oct 17 14:15:08 2014 +0100
@@ -0,0 +1,169 @@
+/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved.
+ *
+ * The information contained herein is confidential property of Nordic Semiconductor. The use,
+ * copying, transfer or disclosure of such information is prohibited except by express written
+ * agreement with Nordic Semiconductor.
+ *
+ */
+/**
+  @addtogroup BLE_COMMON
+  @{
+  @defgroup ble_types Common types and macro definitions
+  @{
+
+  @brief Common types and macro definitions for the S110 SoftDevice.
+ */
+
+#ifndef BLE_TYPES_H__
+#define BLE_TYPES_H__
+
+#include <stdint.h>
+
+/** @addtogroup BLE_COMMON_DEFINES Defines
+ * @{ */
+
+/** @defgroup BLE_CONN_HANDLES BLE Connection Handles
+ * @{ */
+#define BLE_CONN_HANDLE_INVALID 0xFFFF  /**< Invalid Connection Handle. */
+#define BLE_CONN_HANDLE_ALL     0xFFFE  /**< Applies to all Connection Handles. */
+/** @} */
+
+
+/** @defgroup BLE_UUID_VALUES Assigned Values for BLE UUIDs
+ * @{ */
+/* Generic UUIDs, applicable to all services */
+#define BLE_UUID_UNKNOWN                              0x0000 /**< Reserved UUID. */
+#define BLE_UUID_SERVICE_PRIMARY                      0x2800 /**< Primary Service. */
+#define BLE_UUID_SERVICE_SECONDARY                    0x2801 /**< Secondary Service. */
+#define BLE_UUID_SERVICE_INCLUDE                      0x2802 /**< Include. */
+#define BLE_UUID_CHARACTERISTIC                       0x2803 /**< Characteristic. */
+#define BLE_UUID_DESCRIPTOR_CHAR_EXT_PROP             0x2900 /**< Characteristic Extended Properties Descriptor. */
+#define BLE_UUID_DESCRIPTOR_CHAR_USER_DESC            0x2901 /**< Characteristic User Description Descriptor. */
+#define BLE_UUID_DESCRIPTOR_CLIENT_CHAR_CONFIG        0x2902 /**< Client Characteristic Configuration Descriptor. */
+#define BLE_UUID_DESCRIPTOR_SERVER_CHAR_CONFIG        0x2903 /**< Server Characteristic Configuration Descriptor. */
+#define BLE_UUID_DESCRIPTOR_CHAR_PRESENTATION_FORMAT  0x2904 /**< Characteristic Presentation Format Descriptor. */
+#define BLE_UUID_DESCRIPTOR_CHAR_AGGREGATE_FORMAT     0x2905 /**< Characteristic Aggregate Format Descriptor. */
+/* GATT specific UUIDs */
+#define BLE_UUID_GATT                                 0x1801 /**< Generic Attribute Profile. */
+#define BLE_UUID_GATT_CHARACTERISTIC_SERVICE_CHANGED  0x2A05 /**< Service Changed Characteristic. */
+/* GAP specific UUIDs */
+#define BLE_UUID_GAP                                  0x1800 /**< Generic Access Profile. */
+#define BLE_UUID_GAP_CHARACTERISTIC_DEVICE_NAME       0x2A00 /**< Device Name Characteristic. */
+#define BLE_UUID_GAP_CHARACTERISTIC_APPEARANCE        0x2A01 /**< Appearance Characteristic. */
+#define BLE_UUID_GAP_CHARACTERISTIC_PPF               0x2A02 /**< Peripheral Privacy Flag Characteristic. */
+#define BLE_UUID_GAP_CHARACTERISTIC_RECONN_ADDR       0x2A03 /**< Reconnection Address Characteristic. */
+#define BLE_UUID_GAP_CHARACTERISTIC_PPCP              0x2A04 /**< Peripheral Preferred Connection Parameters Characteristic. */
+/** @} */
+
+
+/** @defgroup BLE_UUID_TYPES Types of UUID
+ * @{ */
+#define BLE_UUID_TYPE_UNKNOWN       0x00 /**< Invalid UUID type. */
+#define BLE_UUID_TYPE_BLE           0x01 /**< Bluetooth SIG UUID (16-bit). */
+#define BLE_UUID_TYPE_VENDOR_BEGIN  0x02 /**< Vendor UUID types start at this index (128-bit). */
+/** @} */
+
+
+/** @defgroup BLE_APPEARANCES Bluetooth Appearance values
+ *  @note Retrieved from http://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.gap.appearance.xml
+ * @{ */
+#define BLE_APPEARANCE_UNKNOWN                                0 /**< Unknown. */
+#define BLE_APPEARANCE_GENERIC_PHONE                         64 /**< Generic Phone. */
+#define BLE_APPEARANCE_GENERIC_COMPUTER                     128 /**< Generic Computer. */
+#define BLE_APPEARANCE_GENERIC_WATCH                        192 /**< Generic Watch. */
+#define BLE_APPEARANCE_WATCH_SPORTS_WATCH                   193 /**< Watch: Sports Watch. */
+#define BLE_APPEARANCE_GENERIC_CLOCK                        256 /**< Generic Clock. */
+#define BLE_APPEARANCE_GENERIC_DISPLAY                      320 /**< Generic Display. */
+#define BLE_APPEARANCE_GENERIC_REMOTE_CONTROL               384 /**< Generic Remote Control. */
+#define BLE_APPEARANCE_GENERIC_EYE_GLASSES                  448 /**< Generic Eye-glasses. */
+#define BLE_APPEARANCE_GENERIC_TAG                          512 /**< Generic Tag. */
+#define BLE_APPEARANCE_GENERIC_KEYRING                      576 /**< Generic Keyring. */
+#define BLE_APPEARANCE_GENERIC_MEDIA_PLAYER                 640 /**< Generic Media Player. */
+#define BLE_APPEARANCE_GENERIC_BARCODE_SCANNER              704 /**< Generic Barcode Scanner. */
+#define BLE_APPEARANCE_GENERIC_THERMOMETER                  768 /**< Generic Thermometer. */
+#define BLE_APPEARANCE_THERMOMETER_EAR                      769 /**< Thermometer: Ear. */
+#define BLE_APPEARANCE_GENERIC_HEART_RATE_SENSOR            832 /**< Generic Heart rate Sensor. */
+#define BLE_APPEARANCE_HEART_RATE_SENSOR_HEART_RATE_BELT    833 /**< Heart Rate Sensor: Heart Rate Belt. */
+#define BLE_APPEARANCE_GENERIC_BLOOD_PRESSURE               896 /**< Generic Blood Pressure. */
+#define BLE_APPEARANCE_BLOOD_PRESSURE_ARM                   897 /**< Blood Pressure: Arm. */
+#define BLE_APPEARANCE_BLOOD_PRESSURE_WRIST                 898 /**< Blood Pressure: Wrist. */
+#define BLE_APPEARANCE_GENERIC_HID                          960 /**< Human Interface Device (HID). */
+#define BLE_APPEARANCE_HID_KEYBOARD                         961 /**< Keyboard (HID Subtype). */
+#define BLE_APPEARANCE_HID_MOUSE                            962 /**< Mouse (HID Subtype). */
+#define BLE_APPEARANCE_HID_JOYSTICK                         963 /**< Joystiq (HID Subtype). */
+#define BLE_APPEARANCE_HID_GAMEPAD                          964 /**< Gamepad (HID Subtype). */
+#define BLE_APPEARANCE_HID_DIGITIZERSUBTYPE                 965 /**< Digitizer Tablet (HID Subtype). */
+#define BLE_APPEARANCE_HID_CARD_READER                      966 /**< Card Reader (HID Subtype). */
+#define BLE_APPEARANCE_HID_DIGITAL_PEN                      967 /**< Digital Pen (HID Subtype). */
+#define BLE_APPEARANCE_HID_BARCODE                          968 /**< Barcode Scanner (HID Subtype). */
+#define BLE_APPEARANCE_GENERIC_GLUCOSE_METER               1024 /**< Generic Glucose Meter. */
+#define BLE_APPEARANCE_GENERIC_RUNNING_WALKING_SENSOR      1088 /**< Generic Running Walking Sensor. */
+#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_IN_SHOE      1089 /**< Running Walking Sensor: In-Shoe. */
+#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_ON_SHOE      1090 /**< Running Walking Sensor: On-Shoe. */
+#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_ON_HIP       1091 /**< Running Walking Sensor: On-Hip. */
+#define BLE_APPEARANCE_GENERIC_CYCLING                     1152 /**< Generic Cycling. */
+#define BLE_APPEARANCE_CYCLING_CYCLING_COMPUTER            1153 /**< Cycling: Cycling Computer. */
+#define BLE_APPEARANCE_CYCLING_SPEED_SENSOR                1154 /**< Cycling: Speed Sensor. */
+#define BLE_APPEARANCE_CYCLING_CADENCE_SENSOR              1155 /**< Cycling: Cadence Sensor. */
+#define BLE_APPEARANCE_CYCLING_POWER_SENSOR                1156 /**< Cycling: Power Sensor. */
+#define BLE_APPEARANCE_CYCLING_SPEED_CADENCE_SENSOR        1157 /**< Cycling: Speed and Cadence Sensor. */
+#define BLE_APPEARANCE_GENERIC_PULSE_OXIMETER              3136 /**< Generic Pulse Oximeter. */
+#define BLE_APPEARANCE_PULSE_OXIMETER_FINGERTIP            3137 /**< Fingertip (Pulse Oximeter subtype). */
+#define BLE_APPEARANCE_PULSE_OXIMETER_WRIST_WORN           3138 /**< Wrist Worn(Pulse Oximeter subtype). */
+#define BLE_APPEARANCE_GENERIC_WEIGHT_SCALE                3200 /**< Generic Weight Scale. */
+#define BLE_APPEARANCE_GENERIC_OUTDOOR_SPORTS_ACT          5184 /**< Generic Outdoor Sports Activity. */
+#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_DISP         5185 /**< Location Display Device (Outdoor Sports Activity subtype). */
+#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_AND_NAV_DISP 5186 /**< Location and Navigation Display Device (Outdoor Sports Activity subtype). */
+#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_POD          5187 /**< Location Pod (Outdoor Sports Activity subtype). */
+#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_AND_NAV_POD  5188 /**< Location and Navigation Pod (Outdoor Sports Activity subtype). */
+/** @} */
+
+/** @brief Set .type and .uuid fields of ble_uuid_struct to specified uuid value. */
+#define BLE_UUID_BLE_ASSIGN(instance, value) do {\
+            instance.type = BLE_UUID_TYPE_BLE; \
+            instance.uuid = value;} while(0)
+
+/** @brief Copy type and uuid members from src to dst ble_uuid_t pointer. Both pointers must be valid/non-null. */
+#define BLE_UUID_COPY_PTR(dst, src) do {\
+            (dst)->type = (src)->type; \
+            (dst)->uuid = (src)->uuid;} while(0)
+
+/** @brief Copy type and uuid members from src to dst ble_uuid_t struct. */
+#define BLE_UUID_COPY_INST(dst, src) do {\
+            (dst).type = (src).type; \
+            (dst).uuid = (src).uuid;} while(0)
+
+/** @brief Compare for equality both type and uuid members of two (valid, non-null) ble_uuid_t pointers. */
+#define BLE_UUID_EQ(p_uuid1, p_uuid2) \
+            (((p_uuid1)->type == (p_uuid2)->type) && ((p_uuid1)->uuid == (p_uuid2)->uuid))
+
+/** @brief Compare for difference both type and uuid members of two (valid, non-null) ble_uuid_t pointers. */
+#define BLE_UUID_NEQ(p_uuid1, p_uuid2) \
+            (((p_uuid1)->type != (p_uuid2)->type) || ((p_uuid1)->uuid != (p_uuid2)->uuid))
+
+/** @} */
+
+/** @addtogroup BLE_TYPES_STRUCTURES Structures
+ * @{ */
+
+/** @brief 128 bit UUID values. */
+typedef struct
+{ 
+    unsigned char uuid128[16];
+} ble_uuid128_t;
+
+/** @brief  Bluetooth Low Energy UUID type, encapsulates both 16-bit and 128-bit UUIDs. */
+typedef struct
+{
+    uint16_t    uuid; /**< 16-bit UUID value or octets 12-13 of 128-bit UUID. */
+    uint8_t     type; /**< UUID type, see @ref BLE_UUID_TYPES. If type is BLE_UUID_TYPE_UNKNOWN, the value of uuid is undefined. */
+} ble_uuid_t;
+
+/** @} */
+
+#endif /* BLE_TYPES_H__ */
+
+/**
+  @}
+  @}
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/nrf_error.h	Fri Oct 17 14:15:08 2014 +0100
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved.
+ *
+ * The information contained herein is confidential property of Nordic Semiconductor. The use,
+ * copying, transfer or disclosure of such information is prohibited except by express written
+ * agreement with Nordic Semiconductor.
+ *
+ */
+ /**
+  @defgroup nrf_error SoftDevice Global Error Codes
+  @{
+   
+  @brief Global Error definitions
+*/
+
+/* Header guard */
+#ifndef NRF_ERROR_H__
+#define NRF_ERROR_H__
+
+/** @defgroup NRF_ERRORS_BASE Error Codes Base number definitions
+ * @{ */
+#define NRF_ERROR_BASE_NUM      (0x0)       ///< Global error base
+#define NRF_ERROR_SDM_BASE_NUM  (0x1000)    ///< SDM error base
+#define NRF_ERROR_SOC_BASE_NUM  (0x2000)    ///< SoC error base
+#define NRF_ERROR_STK_BASE_NUM  (0x3000)    ///< STK error base
+/** @} */
+
+#define NRF_SUCCESS                           (NRF_ERROR_BASE_NUM + 0)  ///< Successful command
+#define NRF_ERROR_SVC_HANDLER_MISSING         (NRF_ERROR_BASE_NUM + 1)  ///< SVC handler is missing
+#define NRF_ERROR_SOFTDEVICE_NOT_ENABLED      (NRF_ERROR_BASE_NUM + 2)  ///< SoftDevice has not been enabled
+#define NRF_ERROR_INTERNAL                    (NRF_ERROR_BASE_NUM + 3)  ///< Internal Error
+#define NRF_ERROR_NO_MEM                      (NRF_ERROR_BASE_NUM + 4)  ///< No Memory for operation
+#define NRF_ERROR_NOT_FOUND                   (NRF_ERROR_BASE_NUM + 5)  ///< Not found
+#define NRF_ERROR_NOT_SUPPORTED               (NRF_ERROR_BASE_NUM + 6)  ///< Not supported
+#define NRF_ERROR_INVALID_PARAM               (NRF_ERROR_BASE_NUM + 7)  ///< Invalid Parameter
+#define NRF_ERROR_INVALID_STATE               (NRF_ERROR_BASE_NUM + 8)  ///< Invalid state, operation disallowed in this state
+#define NRF_ERROR_INVALID_LENGTH              (NRF_ERROR_BASE_NUM + 9)  ///< Invalid Length
+#define NRF_ERROR_INVALID_FLAGS               (NRF_ERROR_BASE_NUM + 10) ///< Invalid Flags
+#define NRF_ERROR_INVALID_DATA                (NRF_ERROR_BASE_NUM + 11) ///< Invalid Data
+#define NRF_ERROR_DATA_SIZE                   (NRF_ERROR_BASE_NUM + 12) ///< Data size exceeds limit
+#define NRF_ERROR_TIMEOUT                     (NRF_ERROR_BASE_NUM + 13) ///< Operation timed out
+#define NRF_ERROR_NULL                        (NRF_ERROR_BASE_NUM + 14) ///< Null Pointer
+#define NRF_ERROR_FORBIDDEN                   (NRF_ERROR_BASE_NUM + 15) ///< Forbidden Operation
+#define NRF_ERROR_INVALID_ADDR                (NRF_ERROR_BASE_NUM + 16) ///< Bad Memory Address
+#define NRF_ERROR_BUSY                        (NRF_ERROR_BASE_NUM + 17) ///< Busy
+
+#endif // NRF_ERROR_H__
+
+/**
+  @}
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/nrf_error_sdm.h	Fri Oct 17 14:15:08 2014 +0100
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved.
+ *
+ * The information contained herein is confidential property of Nordic Semiconductor. The use,
+ * copying, transfer or disclosure of such information is prohibited except by express written
+ * agreement with Nordic Semiconductor.
+ *
+ */
+ /**
+  @addtogroup nrf_sdm_api
+  @{
+  @defgroup nrf_sdm_error SoftDevice Manager Error Codes
+  @{
+     
+  @brief Error definitions for the SDM API
+*/
+
+/* Header guard */
+#ifndef NRF_ERROR_SDM_H__
+#define NRF_ERROR_SDM_H__
+
+#include "nrf_error.h"
+
+#define NRF_ERROR_SDM_LFCLK_SOURCE_UNKNOWN              (NRF_ERROR_SDM_BASE_NUM + 0)  ///< Unknown lfclk source
+#define NRF_ERROR_SDM_INCORRECT_INTERRUPT_CONFIGURATION (NRF_ERROR_SDM_BASE_NUM + 1)  ///< Incorrect interrupt configuration (can be caused by using illegal priority levels, or having enabled SoftDevice interrupts)
+#define NRF_ERROR_SDM_INCORRECT_CLENR0                  (NRF_ERROR_SDM_BASE_NUM + 2)  ///< Incorrect CLENR0 (can be caused by erronous SoftDevice flashing)
+
+#endif // NRF_ERROR_SDM_H__
+
+/**
+  @}
+  @}
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/nrf_error_soc.h	Fri Oct 17 14:15:08 2014 +0100
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved.
+ *
+ * The information contained herein is confidential property of Nordic Semiconductor. The use,
+ * copying, transfer or disclosure of such information is prohibited except by express written
+ * agreement with Nordic Semiconductor.
+ *
+ */
+ /**
+  @addtogroup nrf_soc_api
+  @{
+  @defgroup nrf_soc_error SoC Library Error Codes
+  @{
+     
+  @brief Error definitions for the SoC library
+
+*/
+
+/* Header guard */
+#ifndef NRF_ERROR_SOC_H__
+#define NRF_ERROR_SOC_H__
+
+#include "nrf_error.h"
+
+/* Mutex Errors */
+#define NRF_ERROR_SOC_MUTEX_ALREADY_TAKEN                 (NRF_ERROR_SOC_BASE_NUM + 0)  ///< Mutex already taken
+
+/* NVIC errors */
+#define NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE        (NRF_ERROR_SOC_BASE_NUM + 1)  ///< NVIC interrupt not available
+#define NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED (NRF_ERROR_SOC_BASE_NUM + 2)  ///< NVIC interrupt priority not allowed
+#define NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN              (NRF_ERROR_SOC_BASE_NUM + 3)  ///< NVIC should not return
+
+/* Power errors */
+#define NRF_ERROR_SOC_POWER_MODE_UNKNOWN                  (NRF_ERROR_SOC_BASE_NUM + 4)  ///< Power mode unknown
+#define NRF_ERROR_SOC_POWER_POF_THRESHOLD_UNKNOWN         (NRF_ERROR_SOC_BASE_NUM + 5)  ///< Power POF threshold unknown
+#define NRF_ERROR_SOC_POWER_OFF_SHOULD_NOT_RETURN         (NRF_ERROR_SOC_BASE_NUM + 6)  ///< Power off should not return
+
+/* Rand errors */
+#define NRF_ERROR_SOC_RAND_NOT_ENOUGH_VALUES              (NRF_ERROR_SOC_BASE_NUM + 7)  ///< RAND not enough values
+
+/* PPI errors */
+#define NRF_ERROR_SOC_PPI_INVALID_CHANNEL                 (NRF_ERROR_SOC_BASE_NUM + 8)  ///< Invalid PPI Channel
+#define NRF_ERROR_SOC_PPI_INVALID_GROUP                   (NRF_ERROR_SOC_BASE_NUM + 9)  ///< Invalid PPI Group
+
+#endif // NRF_ERROR_SOC_H__
+/**
+  @}
+  @}
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/nrf_mbr.h	Fri Oct 17 14:15:08 2014 +0100
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 2014 Nordic Semiconductor. All Rights Reserved.
+ *
+ * The information contained herein is confidential property of Nordic Semiconductor. The use,
+ * copying, transfer or disclosure of such information is prohibited except by express written
+ * agreement with Nordic Semiconductor.
+ *
+ */
+/**
+  @defgroup nrf_mbr_api Master Boot Record API
+  @{
+     
+  @brief APIs for updating SoftDevice and BootLoader
+ 
+*/
+
+/* Header guard */
+#ifndef NRF_MBR_H__
+#define NRF_MBR_H__
+
+#include "nrf_svc.h"
+#include <stdint.h>
+
+
+/** @addtogroup NRF_MBR_DEFINES Defines
+ * @{ */
+
+/**@brief MBR SVC Base number. */
+#define MBR_SVC_BASE 0x18   
+/** @} */
+
+/** @addtogroup NRF_MBR_ENUMS Enumerations
+ * @{ */
+
+/**@brief nRF Master Boot Record API SVC numbers. */
+enum NRF_MBR_SVCS
+{
+  SD_MBR_COMMAND = MBR_SVC_BASE, /**< ::sd_mbr_command */
+};
+
+/**@brief Possible values for ::sd_mbr_command_t.command */
+enum NRF_MBR_COMMANDS
+{
+  SD_MBR_COMMAND_COPY_BL,               /**< Copy a new a new BootLoader. @see sd_mbr_command_copy_bl_t */
+  SD_MBR_COMMAND_COPY_SD,               /**< Copy a new SoftDevice. @see ::sd_mbr_command_copy_sd_t*/
+  SD_MBR_COMMAND_INIT_SD,               /**< Init forwarding interrupts to SD, and run reset function in SD*/
+  SD_MBR_COMMAND_COMPARE,               /**< This command works like memcmp. @see ::sd_mbr_command_compare_t*/
+  SD_MBR_COMMAND_VECTOR_TABLE_BASE_SET, /**< Start forwarding all exception to this address @see ::sd_mbr_command_vector_table_base_set_t*/
+};
+
+/** @} */
+
+/** @addtogroup NRF_MBR_TYPES Types
+ * @{ */
+
+/**@brief This command copies part of a new SoftDevice
+ * The destination area is erased before copying. 
+ * If dst is in the middle of a flash page, that whole flash page will be erased.
+ * If (dst+len) is in the middle of a flash page, that whole flash page will be erased.
+ * 
+ * The user of this function is responsible for setting the PROTENSET registers.
+ * 
+ * @retval ::NRF_SUCCESS indicates that the contents of the memory blocks where copied correctly.
+ * @retval ::NRF_ERROR_INTERNAL indicates that the contents of the memory blocks where not verified correctly after copying.
+ */
+typedef struct
+{
+  uint32_t *src;  /**< Pointer to the source of data to be copied.*/
+  uint32_t *dst;  /**< Pointer to the destination where the content is to be copied.*/
+  uint32_t len;   /**< Number of 32 bit words to copy. Must be a multiple of 256 words*/
+}sd_mbr_command_copy_sd_t;
+
+
+/**@brief This command works like memcmp, but takes the length in words.
+ *
+ * @retval ::NRF_SUCCESS indicates that the contents of both memory blocks are equal.
+ * @retval ::NRF_ERROR_NULL indicates that the contents of the memory blocks are not equal.
+ */
+typedef struct
+{
+  uint32_t *ptr1; /**< Pointer to block of memory */
+  uint32_t *ptr2; /**< Pointer to block of memory */
+  uint32_t len;   /**< Number of 32 bit words to compare*/
+}sd_mbr_command_compare_t;
+
+
+/**@brief This command copies a new BootLoader.
+ *  With this command, destination of BootLoader is always the address written in NRF_UICR->BOOTADDR.
+ *
+ *  Destination is erased by this function.
+ *  If (destination+bl_len) is in the middle of a flash page, that whole flash page will be erased.
+ *
+ *  This function will use PROTENSET to protect the flash that is not intended to be written.
+ * 
+ *  On Success, this function will not return. It will start the new BootLoader from reset-vector as normal.
+ *
+ * @retval ::NRF_ERROR_INVALID_STATE indicates that something was wrong.
+ * @retval ::NRF_ERROR_INTERNAL indicates an internal error that should not happen.
+ * @retval ::NRF_ERROR_FORBIDDEN if NRF_UICR->BOOTADDR is not set
+ * @retval ::NRF_ERROR_INVALID_LENGTH is invalid.
+ */
+typedef struct
+{
+  uint32_t *bl_src;  /**< Pointer to the source of the Bootloader to be be copied.*/
+  uint32_t bl_len;   /**< Number of 32 bit words to copy for BootLoader */
+}sd_mbr_command_copy_bl_t;
+
+/**@brief Sets the base address of the interrupt vector table for interrupts forwarded from the MBR
+ * 
+ * Once this function has been called, this address is where the MBR will start to forward interrupts to after a reset.
+ *
+ * To restore default forwarding thiss function should be called with @param address set to 0.
+ * The MBR will then start forwarding to interrupts to the adress in NFR_UICR->BOOTADDR or to the SoftDevice if the BOOTADDR is not set.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+typedef struct
+{ 
+  uint32_t address; /**< The base address of the interrupt vector table for forwarded interrupts.*/
+}sd_mbr_command_vector_table_base_set_t;
+
+typedef struct
+{
+  uint32_t command;  /**< type of command to be issued see @ref NRF_MBR_COMMANDS. */
+  union 
+  {
+    sd_mbr_command_copy_sd_t copy_sd;  /**< Parameters for copy*/
+    sd_mbr_command_copy_bl_t copy_bl;  /**< Parameters for copy SoftDevice and BootLoader*/
+    sd_mbr_command_compare_t compare;  /**< Parameters for verify*/
+    sd_mbr_command_vector_table_base_set_t base_set; /**< Parameters for vector table base set.*/
+  } params;
+}sd_mbr_command_t;
+
+/** @} */
+
+/** @addtogroup NRF_MBR_FUNCTIONS Functions
+ * @{ */
+
+/**@brief Issue Master Boot Record commands
+ *
+ * Commands used when updating a SoftDevice and bootloader
+ *
+ * @param[in]  param Pointer to a struct describing the command
+ *
+ *@note for retvals see ::sd_mbr_command_copy_sd_t ::sd_mbr_command_copy_bl_t ::sd_mbr_command_compare_t
+
+*/
+SVCALL(SD_MBR_COMMAND, uint32_t, sd_mbr_command(sd_mbr_command_t* param));
+
+/** @} */
+#endif // NRF_MBR_H__
+
+/**
+  @}
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/nrf_sdm.h	Fri Oct 17 14:15:08 2014 +0100
@@ -0,0 +1,167 @@
+/*
+ * Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved.
+ *
+ * The information contained herein is confidential property of Nordic Semiconductor. The use,
+ * copying, transfer or disclosure of such information is prohibited except by express written
+ * agreement with Nordic Semiconductor.
+ *
+ */
+/**
+  @defgroup nrf_sdm_api SoftDevice Manager API
+  @{
+     
+  @brief APIs for SoftDevice management.
+ 
+*/
+
+/* Header guard */
+#ifndef NRF_SDM_H__
+#define NRF_SDM_H__
+
+#include "nrf_svc.h"
+#include "nrf51.h"
+#include "nrf_soc.h"
+#include "nrf_error_sdm.h"
+
+/** @addtogroup NRF_SDM_DEFINES Defines
+ * @{ */
+
+/**@brief SoftDevice Manager SVC Base number. */
+#define SDM_SVC_BASE  (0x10)
+
+/** @} */
+
+/** @addtogroup NRF_SDM_ENUMS Enumerations
+ * @{ */
+
+/**@brief nRF SoftDevice Manager API SVC numbers. */
+enum NRF_SD_SVCS
+{
+  SD_SOFTDEVICE_ENABLE = SDM_SVC_BASE, /**< ::sd_softdevice_enable */
+  SD_SOFTDEVICE_DISABLE,               /**< ::sd_softdevice_disable */
+  SD_SOFTDEVICE_IS_ENABLED,            /**< ::sd_softdevice_is_enabled */
+  SD_SOFTDEVICE_VECTOR_TABLE_BASE_SET, /**< ::sd_softdevice_vector_table_base_set */
+  SVC_SDM_LAST                         /**< Placeholder for last SDM SVC */
+};
+
+/**@brief Possible lfclk oscillator sources. */
+enum NRF_CLOCK_LFCLKSRCS
+{
+  NRF_CLOCK_LFCLKSRC_SYNTH_250_PPM,                       /**< LFCLK Synthesized from HFCLK.                    */
+  NRF_CLOCK_LFCLKSRC_XTAL_500_PPM,                        /**< LFCLK crystal oscillator 500 PPM accuracy.       */
+  NRF_CLOCK_LFCLKSRC_XTAL_250_PPM,                        /**< LFCLK crystal oscillator 250 PPM accuracy.       */
+  NRF_CLOCK_LFCLKSRC_XTAL_150_PPM,                        /**< LFCLK crystal oscillator 150 PPM accuracy.       */
+  NRF_CLOCK_LFCLKSRC_XTAL_100_PPM,                        /**< LFCLK crystal oscillator 100 PPM accuracy.       */
+  NRF_CLOCK_LFCLKSRC_XTAL_75_PPM,                         /**< LFCLK crystal oscillator 75 PPM accuracy.        */
+  NRF_CLOCK_LFCLKSRC_XTAL_50_PPM,                         /**< LFCLK crystal oscillator 50 PPM accuracy.        */
+  NRF_CLOCK_LFCLKSRC_XTAL_30_PPM,                         /**< LFCLK crystal oscillator 30 PPM accuracy.        */
+  NRF_CLOCK_LFCLKSRC_XTAL_20_PPM,                         /**< LFCLK crystal oscillator 20 PPM accuracy.        */
+  NRF_CLOCK_LFCLKSRC_RC_250_PPM_250MS_CALIBRATION,        /**< LFCLK RC oscillator, 250ms  calibration interval.*/
+  NRF_CLOCK_LFCLKSRC_RC_250_PPM_500MS_CALIBRATION,        /**< LFCLK RC oscillator, 500ms  calibration interval.*/
+  NRF_CLOCK_LFCLKSRC_RC_250_PPM_1000MS_CALIBRATION,       /**< LFCLK RC oscillator, 1000ms calibration interval.*/
+  NRF_CLOCK_LFCLKSRC_RC_250_PPM_2000MS_CALIBRATION,       /**< LFCLK RC oscillator, 2000ms calibration interval.*/
+  NRF_CLOCK_LFCLKSRC_RC_250_PPM_4000MS_CALIBRATION,       /**< LFCLK RC oscillator, 4000ms calibration interval.*/
+  NRF_CLOCK_LFCLKSRC_RC_250_PPM_8000MS_CALIBRATION,       /**< LFCLK RC oscillator, 8000ms calibration interval.*/
+  NRF_CLOCK_LFCLKSRC_RC_250_PPM_TEMP_1000MS_CALIBRATION,  /**< LFCLK RC oscillator. Temperature checked every 1000ms, if changed above a threshold, a calibration is done.*/
+  NRF_CLOCK_LFCLKSRC_RC_250_PPM_TEMP_2000MS_CALIBRATION,  /**< LFCLK RC oscillator. Temperature checked every 2000ms, if changed above a threshold, a calibration is done.*/
+  NRF_CLOCK_LFCLKSRC_RC_250_PPM_TEMP_4000MS_CALIBRATION,  /**< LFCLK RC oscillator. Temperature checked every 4000ms, if changed above a threshold, a calibration is done.*/
+  NRF_CLOCK_LFCLKSRC_RC_250_PPM_TEMP_8000MS_CALIBRATION,  /**< LFCLK RC oscillator. Temperature checked every 8000ms, if changed above a threshold, a calibration is done.*/
+  NRF_CLOCK_LFCLKSRC_RC_250_PPM_TEMP_16000MS_CALIBRATION, /**< LFCLK RC oscillator. Temperature checked every 16000ms, if changed above a threshold, a calibration is done.*/
+};
+
+/** @} */
+
+/** @addtogroup NRF_SDM_TYPES Types
+ * @{ */
+
+/**@brief Type representing lfclk oscillator source. */
+typedef uint32_t nrf_clock_lfclksrc_t;
+
+
+/**@brief SoftDevice Assertion Handler type.
+ *
+ * When an unexpected error occurs within the SoftDevice it will call the SoftDevice assertion handler callback.
+ * The protocol stack will be in an undefined state when this happens and the only way to recover will be to
+ * perform a reset, using e.g. CMSIS NVIC_SystemReset().
+ *
+ * @note This callback is executed in HardFault context, thus SVC functions cannot be called from the SoftDevice assert callback.
+ *       
+ * @param[in] pc The program counter of the failed assert.
+ * @param[in] line_number Line number where the assert failed.
+ * @param[in] file_name File name where the assert failed.
+ */
+typedef void (*softdevice_assertion_handler_t)(uint32_t pc, uint16_t line_number, const uint8_t * p_file_name);
+
+/** @} */
+
+/** @addtogroup NRF_SDM_FUNCTIONS Functions
+ * @{ */
+
+/**@brief Enables the SoftDevice and by extension the protocol stack.
+ *
+ * Idempotent function to enable the SoftDevice.
+ *
+ * @note Some care must be taken if a low frequency clock source is already running when calling this function:
+ *       If the LF clock has a different source then the one currently running, it will be stopped. Then, the new
+ *       clock source will be started.
+ *
+ * @note This function has no effect when returning with an error.
+ *
+ * @post If return code is ::NRF_SUCCESS 
+ *       - SoC library and protocol stack APIs are made available
+ *       - A portion of RAM will be unavailable (see relevant SDS documentation)
+ *       - Some peripherals will be unavailable or available only through the SoC API (see relevant SDS documentation)
+ *       - Interrupts will not arrive from protected peripherals or interrupts
+ *       - nrf_nvic_ functions must be used instead of CMSIS NVIC_ functions for reliable usage of the softdevice.
+ *       - Interrupt latency may be affected by the SoftDevice  (see relevant SDS documentation)
+ *       - Chosen low frequency clock source will be running
+ *
+ * @param clock_source Low frequency clock source and accuracy. (Note: In the case of XTAL source, the PPM accuracy of the chosen clock source must be greater than or equal to the actual characteristics of your XTAL clock).
+ * @param assertion_handler Callback for SoftDevice assertions.
+ *
+ * @retval ::NRF_SUCCESS
+ * @retval ::NRF_ERROR_SDM_INCORRECT_INTERRUPT_CONFIGURATION SoftDeviceinterrupt is already enabled, or an enabled interrupt has an illegal priority level
+ * @retval ::NRF_ERROR_SDM_LFCLK_SOURCE_UNKNOWN Unknown low frequency clock source selected
+ */
+SVCALL(SD_SOFTDEVICE_ENABLE, uint32_t, sd_softdevice_enable(nrf_clock_lfclksrc_t clock_source, softdevice_assertion_handler_t assertion_handler));
+
+/**@brief Disables the SoftDevice and by extension the protocol stack.
+ * 
+ * Idempotent function to disable the SoftDevice.
+ *
+ * @post SoC library and protocol stack APIs are made unavailable.
+ * @post All interrupts that was protected by the SoftDevice will be disabled and initialized to priority 0 (highest).
+ * @post All peripherals used by the SoftDevice will be reset to default values.
+ * @post All of RAM become available.
+ * @post All interrupts are forwarded to the application.
+ * @post LFCLK source chosen in ::sd_softdevice_enable will be left running.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_SOFTDEVICE_DISABLE, uint32_t, sd_softdevice_disable(void));
+
+/**@brief Check if the SoftDevice is enabled.
+ *
+ * @param[out]  p_softdevice_enabled If the SoftDevice is enabled: 1 else 0.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_SOFTDEVICE_IS_ENABLED, uint32_t, sd_softdevice_is_enabled(uint8_t * p_softdevice_enabled));
+
+/**@brief Sets the base address of the interrupt vector table for interrupts forwarded from the SoftDevice
+ * 
+ * This function is only intended to be called when a bootloader is enabled.
+ *
+ * @param[in] address The base address of the interrupt vector table for forwarded interrupts.
+ 
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_SOFTDEVICE_VECTOR_TABLE_BASE_SET, uint32_t, sd_softdevice_vector_table_base_set(uint32_t address)); 
+
+/** @} */
+
+#endif // NRF_SDM_H__
+
+/**
+  @}
+*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/nrf_soc.h	Fri Oct 17 14:15:08 2014 +0100
@@ -0,0 +1,958 @@
+/* Copyright (c) 2011 Nordic Semiconductor. All Rights Reserved.
+ *
+ * The information contained herein is confidential property of Nordic Semiconductor. The use,
+ * copying, transfer or disclosure of such information is prohibited except by express written
+ * agreement with Nordic Semiconductor.
+ *
+ */
+ 
+/**
+ * @defgroup nrf_soc_api SoC Library API
+ * @{
+ * 
+ * @brief APIs for the SoC library.
+ * 
+*/
+
+#ifndef NRF_SOC_H__
+#define NRF_SOC_H__
+
+#include <stdint.h>
+#include <stdbool.h>
+#include "nrf_svc.h"
+#include "nrf51.h"
+#include "nrf51_bitfields.h"
+#include "nrf_error_soc.h"
+
+/** @addtogroup NRF_SOC_DEFINES Defines
+ * @{ */
+
+/**@brief The number of the lowest SVC number reserved for the SoC library. */
+#define SOC_SVC_BASE               (0x20)
+#define SOC_SVC_BASE_NOT_AVAILABLE (0x23)
+
+/**@brief Guranteed time for application to process radio inactive notification. */
+#define NRF_RADIO_NOTIFICATION_INACTIVE_GUARANTEED_TIME_US  (62)
+
+/**@brief The minimum allowed timeslot extension time. */
+#define NRF_RADIO_MINIMUM_TIMESLOT_LENGTH_EXTENSION_TIME_US (200)
+
+#define SOC_ECB_KEY_LENGTH            (16)                       /**< ECB key length. */
+#define SOC_ECB_CLEARTEXT_LENGTH      (16)                       /**< ECB cleartext length. */
+#define SOC_ECB_CIPHERTEXT_LENGTH     (SOC_ECB_CLEARTEXT_LENGTH) /**< ECB ciphertext length. */
+
+#define SD_EVT_IRQn                   (SWI2_IRQn)        /**< SoftDevice Event IRQ number. Used for both protocol events and SoC events. */
+#define SD_EVT_IRQHandler             (SWI2_IRQHandler)  /**< SoftDevice Event IRQ handler. Used for both protocol events and SoC events. */
+#define RADIO_NOTIFICATION_IRQn       (SWI1_IRQn)        /**< The radio notification IRQ number. */
+#define RADIO_NOTIFICATION_IRQHandler (SWI1_IRQHandler)  /**< The radio notification IRQ handler. */
+
+#define NRF_RADIO_LENGTH_MIN_US       (100)               /**< The shortest allowed radio timeslot, in microseconds. */
+#define NRF_RADIO_LENGTH_MAX_US       (100000)            /**< The longest allowed radio timeslot, in microseconds. */
+
+#define NRF_RADIO_DISTANCE_MAX_US         (128000000UL - 1UL) /**< The longest timeslot distance, in microseconds, allowed for the distance parameter (see @ref nrf_radio_request_normal_t) in the request. */
+
+#define NRF_RADIO_EARLIEST_TIMEOUT_MAX_US (128000000UL - 1UL) /**< The longest timeout, in microseconds, allowed when requesting the earliest possible timeslot. */
+
+#define NRF_RADIO_START_JITTER_US     (2)                 /**< The maximum jitter in NRF_RADIO_CALLBACK_SIGNAL_TYPE_START relative to the requested start time. */
+
+/** @} */
+
+/** @addtogroup NRF_SOC_TYPES Types
+ * @{ */
+
+/**@brief The SVC numbers used by the SVC functions in the SoC library. */
+enum NRF_SOC_SVCS
+{
+  SD_FLASH_PAGE_ERASE = SOC_SVC_BASE,
+  SD_FLASH_WRITE,
+  SD_FLASH_PROTECT,
+  SD_MUTEX_NEW = SOC_SVC_BASE_NOT_AVAILABLE,
+  SD_MUTEX_ACQUIRE,
+  SD_MUTEX_RELEASE,
+  SD_NVIC_ENABLEIRQ,
+  SD_NVIC_DISABLEIRQ,
+  SD_NVIC_GETPENDINGIRQ,
+  SD_NVIC_SETPENDINGIRQ,
+  SD_NVIC_CLEARPENDINGIRQ,
+  SD_NVIC_SETPRIORITY,
+  SD_NVIC_GETPRIORITY,
+  SD_NVIC_SYSTEMRESET,
+  SD_NVIC_CRITICAL_REGION_ENTER,
+  SD_NVIC_CRITICAL_REGION_EXIT,
+  SD_RAND_APPLICATION_POOL_CAPACITY,
+  SD_RAND_APPLICATION_BYTES_AVAILABLE,
+  SD_RAND_APPLICATION_GET_VECTOR,
+  SD_POWER_MODE_SET,
+  SD_POWER_SYSTEM_OFF,
+  SD_POWER_RESET_REASON_GET,
+  SD_POWER_RESET_REASON_CLR,
+  SD_POWER_POF_ENABLE,
+  SD_POWER_POF_THRESHOLD_SET,
+  SD_POWER_RAMON_SET,
+  SD_POWER_RAMON_CLR,
+  SD_POWER_RAMON_GET,
+  SD_POWER_GPREGRET_SET,
+  SD_POWER_GPREGRET_CLR,
+  SD_POWER_GPREGRET_GET,
+  SD_POWER_DCDC_MODE_SET,
+  SD_APP_EVT_WAIT,
+  SD_CLOCK_HFCLK_REQUEST,
+  SD_CLOCK_HFCLK_RELEASE,
+  SD_CLOCK_HFCLK_IS_RUNNING,
+  SD_PPI_CHANNEL_ENABLE_GET,
+  SD_PPI_CHANNEL_ENABLE_SET,
+  SD_PPI_CHANNEL_ENABLE_CLR,
+  SD_PPI_CHANNEL_ASSIGN,
+  SD_PPI_GROUP_TASK_ENABLE,
+  SD_PPI_GROUP_TASK_DISABLE,
+  SD_PPI_GROUP_ASSIGN,
+  SD_PPI_GROUP_GET,
+  SD_RADIO_NOTIFICATION_CFG_SET,
+  SD_ECB_BLOCK_ENCRYPT,
+  SD_RADIO_SESSION_OPEN,
+  SD_RADIO_SESSION_CLOSE,
+  SD_RADIO_REQUEST,
+  SD_EVT_GET,
+  SD_TEMP_GET,
+  SVC_SOC_LAST
+};
+
+/**@brief Possible values of a ::nrf_mutex_t. */
+enum NRF_MUTEX_VALUES
+{
+  NRF_MUTEX_FREE,
+  NRF_MUTEX_TAKEN
+};
+
+/**@brief Possible values of ::nrf_app_irq_priority_t. */
+enum NRF_APP_PRIORITIES
+{
+  NRF_APP_PRIORITY_HIGH = 1,
+  NRF_APP_PRIORITY_LOW = 3
+};
+
+/**@brief Possible values of ::nrf_power_mode_t. */
+enum NRF_POWER_MODES
+{
+  NRF_POWER_MODE_CONSTLAT,  /**< Constant latency mode. See power management in the reference manual. */
+  NRF_POWER_MODE_LOWPWR     /**< Low power mode. See power management in the reference manual. */
+};
+
+
+/**@brief Possible values of ::nrf_power_failure_threshold_t */
+enum NRF_POWER_THRESHOLDS
+{
+  NRF_POWER_THRESHOLD_V21,  /**< 2.1 Volts power failure threshold. */
+  NRF_POWER_THRESHOLD_V23,  /**< 2.3 Volts power failure threshold. */
+  NRF_POWER_THRESHOLD_V25,  /**< 2.5 Volts power failure threshold. */ 
+  NRF_POWER_THRESHOLD_V27   /**< 2.7 Volts power failure threshold. */
+};
+
+
+/**@brief Possible values of ::nrf_power_dcdc_mode_t. */
+enum NRF_POWER_DCDC_MODES
+{
+  NRF_POWER_DCDC_MODE_OFF,          /**< The DCDC is always off. */
+  NRF_POWER_DCDC_MODE_ON,           /**< The DCDC is always on. */
+  NRF_POWER_DCDC_MODE_AUTOMATIC     /**< The DCDC is automatically managed. */
+};
+
+/**@brief Possible values of ::nrf_radio_notification_distance_t. */
+enum NRF_RADIO_NOTIFICATION_DISTANCES
+{
+  NRF_RADIO_NOTIFICATION_DISTANCE_NONE = 0, /**< The event does not have a notification. */
+  NRF_RADIO_NOTIFICATION_DISTANCE_800US,    /**< The distance from the active notification to start of radio activity. */
+  NRF_RADIO_NOTIFICATION_DISTANCE_1740US,   /**< The distance from the active notification to start of radio activity. */
+  NRF_RADIO_NOTIFICATION_DISTANCE_2680US,   /**< The distance from the active notification to start of radio activity. */
+  NRF_RADIO_NOTIFICATION_DISTANCE_3620US,   /**< The distance from the active notification to start of radio activity. */
+  NRF_RADIO_NOTIFICATION_DISTANCE_4560US,   /**< The distance from the active notification to start of radio activity. */
+  NRF_RADIO_NOTIFICATION_DISTANCE_5500US    /**< The distance from the active notification to start of radio activity. */
+};
+
+
+/**@brief Possible values of ::nrf_radio_notification_type_t. */
+enum NRF_RADIO_NOTIFICATION_TYPES
+{
+  NRF_RADIO_NOTIFICATION_TYPE_NONE = 0,        /**< The event does not have a radio notification signal. */
+  NRF_RADIO_NOTIFICATION_TYPE_INT_ON_ACTIVE,   /**< Using interrupt for notification when the radio will be enabled. */
+  NRF_RADIO_NOTIFICATION_TYPE_INT_ON_INACTIVE, /**< Using interrupt for notification when the radio has been disabled. */
+  NRF_RADIO_NOTIFICATION_TYPE_INT_ON_BOTH,     /**< Using interrupt for notification both when the radio will be enabled and disabled. */
+};
+
+/**@brief SoC Events. */
+enum NRF_SOC_EVTS
+{
+  NRF_EVT_HFCLKSTARTED,                         /**< Event indicating that the HFCLK has started. */
+  NRF_EVT_POWER_FAILURE_WARNING,                /**< Event indicating that a power failure warning has occurred. */
+  NRF_EVT_FLASH_OPERATION_SUCCESS,              /**< Event indicating that the ongoing flash operation has completed successfully. */
+  NRF_EVT_FLASH_OPERATION_ERROR,                /**< Event indicating that the ongoing flash operation has timed out with an error. */
+  NRF_EVT_RADIO_BLOCKED,                        /**< Event indicating that a radio timeslot was blocked. */
+  NRF_EVT_RADIO_CANCELED,                       /**< Event indicating that a radio timeslot was canceled by SoftDevice. */
+  NRF_EVT_RADIO_SIGNAL_CALLBACK_INVALID_RETURN, /**< Event indicating that a radio signal callback handler return was invalid. */
+  NRF_EVT_RADIO_SESSION_IDLE,                   /**< Event indicating that a radio session is idle. */
+  NRF_EVT_RADIO_SESSION_CLOSED,                 /**< Event indicating that a radio session is closed. */
+  NRF_EVT_NUMBER_OF_EVTS
+};
+
+/** @} */
+
+/** @addtogroup NRF_SOC_TYPES Types
+ * @{ */
+
+/**@brief Represents a mutex for use with the nrf_mutex functions.
+ * @note Accessing the value directly is not safe, use the mutex functions!
+ */
+typedef volatile uint8_t nrf_mutex_t;
+
+/**@brief The interrupt priorities available to the application while the softdevice is active. */
+typedef uint8_t nrf_app_irq_priority_t;
+
+/**@brief Represents a power mode, used in power mode functions */
+typedef uint8_t nrf_power_mode_t;
+
+/**@brief Represents a power failure threshold value. */
+typedef uint8_t nrf_power_failure_threshold_t;
+
+/**@brief Represents a DCDC mode value. */
+typedef uint32_t nrf_power_dcdc_mode_t;
+
+/**@brief Radio notification distances. */
+typedef uint8_t nrf_radio_notification_distance_t;
+
+/**@brief Radio notification types. */
+typedef uint8_t nrf_radio_notification_type_t;
+
+/** @brief The Radio signal callback types. */
+enum NRF_RADIO_CALLBACK_SIGNAL_TYPE
+{
+  NRF_RADIO_CALLBACK_SIGNAL_TYPE_START,            /**< This signal indicates the start of the radio timeslot. */
+  NRF_RADIO_CALLBACK_SIGNAL_TYPE_TIMER0,            /**< This signal indicates the NRF_TIMER0 interrupt. */
+  NRF_RADIO_CALLBACK_SIGNAL_TYPE_RADIO,             /**< This signal indicates the NRF_RADIO interrupt. */
+  NRF_RADIO_CALLBACK_SIGNAL_TYPE_EXTEND_FAILED,     /**< This signal indicates extend action failed. */
+  NRF_RADIO_CALLBACK_SIGNAL_TYPE_EXTEND_SUCCEEDED   /**< This signal indicates extend action succeeded. */
+};
+
+/** @brief The actions requested by the signal callback.
+ *
+ *  This code gives the SOC instructions about what action to take when the signal callback has
+ *  returned.
+ */
+enum NRF_RADIO_SIGNAL_CALLBACK_ACTION
+{
+  NRF_RADIO_SIGNAL_CALLBACK_ACTION_NONE,            /**< Return without action. */
+  NRF_RADIO_SIGNAL_CALLBACK_ACTION_EXTEND,          /**< Request an extension of the current timeslot (maximum execution time for this action is when the extension succeeded). */
+  NRF_RADIO_SIGNAL_CALLBACK_ACTION_END,             /**< End the current radio timeslot. */
+  NRF_RADIO_SIGNAL_CALLBACK_ACTION_REQUEST_AND_END  /**< Request a new radio timeslot and end the current timeslot. */
+};
+
+/**@brief Radio timeslot high frequency clock source configuration. */
+enum NRF_RADIO_HFCLK_CFG
+{
+  NRF_RADIO_HFCLK_CFG_DEFAULT,                      /**< Use the currently selected oscillator as HF clock source during the timeslot (i.e. the source is not specified). */
+  NRF_RADIO_HFCLK_CFG_FORCE_XTAL,                   /**< Force external crystal to be used as HF clock source during whole the timeslot. */
+};
+
+/** @brief Radio timeslot priorities. */
+enum NRF_RADIO_PRIORITY
+{
+  NRF_RADIO_PRIORITY_HIGH,                          /**< High (equal priority as the normal connection priority of the SoftDevice stack(s)). */
+  NRF_RADIO_PRIORITY_NORMAL,                        /**< Normal (equal priority as the priority of secondary activites of the SoftDevice stack(s)). */
+};
+
+/** @brief Radio timeslot request type. */
+enum NRF_RADIO_REQUEST_TYPE
+{
+  NRF_RADIO_REQ_TYPE_EARLIEST,                      /**< Request timeslot as early as possible. This should always be used for the first request in a session. */
+  NRF_RADIO_REQ_TYPE_NORMAL                         /**< Normal timeslot request. */
+};
+
+/** @brief Parameters for a request for a timeslot as early as possible. */
+typedef struct
+{
+  uint8_t       hfclk;                              /**< High frequency clock source, see @ref NRF_RADIO_HFCLK_CFG. */
+  uint8_t       priority;                           /**< The radio timeslot priority, see @ref NRF_RADIO_PRIORITY. */
+  uint32_t      length_us;                          /**< The radio timeslot length (in the range 100 to 100,000] microseconds). */
+  uint32_t      timeout_us;                         /**< Longest acceptable delay until the start of the requested timeslot (up to @ref NRF_RADIO_EARLIEST_TIMEOUT_MAX_US microseconds). */
+} nrf_radio_request_earliest_t;
+
+/** @brief Parameters for a normal radio request. */
+typedef struct
+{
+  uint8_t       hfclk;                              /**< High frequency clock source, see @ref NRF_RADIO_HFCLK_CFG. */
+  uint8_t       priority;                           /**< The radio timeslot priority, see @ref NRF_RADIO_PRIORITY. */
+  uint32_t      distance_us;                        /**< Distance from the start of the previous radio timeslot (up to @ref NRF_RADIO_DISTANCE_MAX_US microseconds). */
+  uint32_t      length_us;                          /**< The radio timeslot length (in the range [100..100,000] microseconds). */
+} nrf_radio_request_normal_t;
+
+/** @brief Radio request parameters. */
+typedef struct
+{
+  uint8_t                         request_type;     /**< Type of request, see @ref NRF_RADIO_REQUEST_TYPE. */
+  union
+  {
+    nrf_radio_request_earliest_t  earliest;         /**< Parameters for a request for a timeslot as early as possible. */
+    nrf_radio_request_normal_t    normal;           /**< Parameters for a normal radio request. */
+  } params;
+} nrf_radio_request_t;
+
+/**@brief Return parameters of the radio timeslot signal callback. */
+typedef struct
+{
+  uint8_t               callback_action;            /**< The action requested by the application when returning from the signal callback, see @ref NRF_RADIO_SIGNAL_CALLBACK_ACTION. */
+  union
+  {
+    struct
+    {
+      nrf_radio_request_t * p_next;                 /**< The request parameters for the next radio timeslot. */
+    } request;                                      /**< Additional parameters for return_code @ref NRF_RADIO_SIGNAL_CALLBACK_ACTION_REQUEST_AND_END. */
+    struct
+    {
+      uint32_t              length_us;              /**< Requested extension of the timeslot duration (microseconds) (for minimum time see @ref NRF_RADIO_MINIMUM_TIMESLOT_LENGTH_EXTENSION_TIME_US). */
+    } extend;                                       /**< Additional parameters for return_code @ref NRF_RADIO_SIGNAL_CALLBACK_ACTION_EXTEND. */
+  } params;
+} nrf_radio_signal_callback_return_param_t;
+
+/**@brief The radio signal callback type.
+ *
+ * @note In case of invalid return parameters, the radio timeslot will automatically end
+ *       immediately after returning from the signal callback and the
+ *       @ref NRF_EVT_RADIO_SIGNAL_CALLBACK_INVALID_RETURN event will be sent.
+ * @note The returned struct pointer must remain valid after the signal callback
+ *       function returns. For instance, this means that it must not point to a stack variable.
+ *
+ * @param[in] signal_type Type of signal, see @ref NRF_RADIO_CALLBACK_SIGNAL_TYPE.
+ *
+ * @return Pointer to structure containing action requested by the application.
+ */
+typedef nrf_radio_signal_callback_return_param_t * (*nrf_radio_signal_callback_t) (uint8_t signal_type);
+
+/**@brief AES ECB data structure */
+typedef struct
+{
+  uint8_t key[SOC_ECB_KEY_LENGTH];                  /**< Encryption key. */
+  uint8_t cleartext[SOC_ECB_CLEARTEXT_LENGTH];      /**< Clear Text data. */
+  uint8_t ciphertext[SOC_ECB_CIPHERTEXT_LENGTH];    /**< Cipher Text data. */
+} nrf_ecb_hal_data_t;
+
+/** @} */
+
+/** @addtogroup NRF_SOC_FUNCTIONS Functions
+ * @{ */
+
+/**@brief Initialize a mutex.
+ *
+ * @param[in] p_mutex Pointer to the mutex to initialize.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_MUTEX_NEW, uint32_t, sd_mutex_new(nrf_mutex_t * p_mutex));
+
+/**@brief Attempt to acquire a mutex.
+ *
+ * @param[in] p_mutex Pointer to the mutex to acquire.
+ *
+ * @retval ::NRF_SUCCESS The mutex was successfully acquired.
+ * @retval ::NRF_ERROR_SOC_MUTEX_ALREADY_TAKEN The mutex could not be acquired.
+ */
+SVCALL(SD_MUTEX_ACQUIRE, uint32_t, sd_mutex_acquire(nrf_mutex_t * p_mutex));
+
+/**@brief Release a mutex.
+ *
+ * @param[in] p_mutex Pointer to the mutex to release.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_MUTEX_RELEASE, uint32_t, sd_mutex_release(nrf_mutex_t * p_mutex));
+
+/**@brief Enable External Interrupt.
+ * @note Corresponds to NVIC_EnableIRQ in CMSIS.
+ *
+ * @pre{IRQn is valid and not reserved by the stack}
+ *
+ * @param[in] IRQn See the NVIC_EnableIRQ documentation in CMSIS.
+ *
+ * @retval ::NRF_SUCCESS The interrupt was enabled.
+ * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE The interrupt is not available for the application.
+ * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED The interrupt has a priority not available for the application.
+ */
+SVCALL(SD_NVIC_ENABLEIRQ, uint32_t, sd_nvic_EnableIRQ(IRQn_Type IRQn));
+
+/**@brief  Disable External Interrupt.
+ * @note Corresponds to NVIC_DisableIRQ in CMSIS.
+ *
+ * @pre{IRQn is valid and not reserved by the stack}
+ *
+ * @param[in] IRQn See the NVIC_DisableIRQ documentation in CMSIS
+ *
+ * @retval ::NRF_SUCCESS The interrupt was disabled.
+ * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE The interrupt is not available for the application.
+ */
+SVCALL(SD_NVIC_DISABLEIRQ, uint32_t, sd_nvic_DisableIRQ(IRQn_Type IRQn));
+
+/**@brief  Get Pending Interrupt.
+ * @note Corresponds to NVIC_GetPendingIRQ in CMSIS.
+ *
+ * @pre{IRQn is valid and not reserved by the stack}
+ *
+ * @param[in]   IRQn          See the NVIC_GetPendingIRQ documentation in CMSIS.
+ * @param[out]  p_pending_irq Return value from NVIC_GetPendingIRQ.
+ *
+ * @retval ::NRF_SUCCESS The interrupt is available for the application.
+ * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application.
+ */
+SVCALL(SD_NVIC_GETPENDINGIRQ, uint32_t, sd_nvic_GetPendingIRQ(IRQn_Type IRQn, uint32_t * p_pending_irq));
+
+/**@brief  Set Pending Interrupt.
+ * @note Corresponds to NVIC_SetPendingIRQ in CMSIS.
+ *
+ * @pre{IRQn is valid and not reserved by the stack}
+ *
+ * @param[in] IRQn See the NVIC_SetPendingIRQ documentation in CMSIS.
+ *
+ * @retval ::NRF_SUCCESS The interrupt is set pending.
+ * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application.
+ */
+SVCALL(SD_NVIC_SETPENDINGIRQ, uint32_t, sd_nvic_SetPendingIRQ(IRQn_Type IRQn));
+
+/**@brief  Clear Pending Interrupt.
+ * @note Corresponds to NVIC_ClearPendingIRQ in CMSIS.
+ *
+ * @pre{IRQn is valid and not reserved by the stack}
+ *
+ * @param[in] IRQn See the NVIC_ClearPendingIRQ documentation in CMSIS.
+ *
+ * @retval ::NRF_SUCCESS The interrupt pending flag is cleared.
+ * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application.
+ */
+SVCALL(SD_NVIC_CLEARPENDINGIRQ, uint32_t, sd_nvic_ClearPendingIRQ(IRQn_Type IRQn));
+
+/**@brief Set Interrupt Priority.
+ * @note Corresponds to NVIC_SetPriority in CMSIS.
+ *
+ * @pre{IRQn is valid and not reserved by the stack}
+ * @pre{priority is valid and not reserved by the stack}
+ *
+ * @param[in] IRQn      See the NVIC_SetPriority documentation in CMSIS.
+ * @param[in] priority  A valid IRQ priority for use by the application.
+ *
+ * @retval ::NRF_SUCCESS The interrupt and priority level is available for the application.
+ * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application.
+ * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED The interrupt priority is not available for the application.
+ */
+SVCALL(SD_NVIC_SETPRIORITY, uint32_t, sd_nvic_SetPriority(IRQn_Type IRQn, nrf_app_irq_priority_t priority));
+
+/**@brief Get Interrupt Priority.
+ * @note Corresponds to NVIC_GetPriority in CMSIS.
+ *
+ * @pre{IRQn is valid and not reserved by the stack}
+ *
+ * @param[in]  IRQn         See the NVIC_GetPriority documentation in CMSIS.
+ * @param[out] p_priority   Return value from NVIC_GetPriority.
+ *
+ * @retval ::NRF_SUCCESS The interrupt priority is returned in p_priority.
+ * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE - IRQn is not available for the application.
+ */
+SVCALL(SD_NVIC_GETPRIORITY, uint32_t, sd_nvic_GetPriority(IRQn_Type IRQn, nrf_app_irq_priority_t * p_priority));
+
+/**@brief System Reset.
+ * @note Corresponds to NVIC_SystemReset in CMSIS.
+ *
+ * @retval ::NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN
+ */
+SVCALL(SD_NVIC_SYSTEMRESET, uint32_t, sd_nvic_SystemReset(void));
+
+/**@brief Enters critical region.
+ *
+ * @post Application interrupts will be disabled.
+ * @sa sd_nvic_critical_region_exit
+ *
+ * @param[out]  p_is_nested_critical_region  1: If in a nested critical region.
+ *                                           0: Otherwise.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_NVIC_CRITICAL_REGION_ENTER, uint32_t, sd_nvic_critical_region_enter(uint8_t * p_is_nested_critical_region));
+
+/**@brief Exit critical region.
+ *
+ * @pre Application has entered a critical region using ::sd_nvic_critical_region_enter.
+ * @post If not in a nested critical region, the application interrupts will restored to the state before ::sd_nvic_critical_region_enter was called. 
+ *
+ * @param[in] is_nested_critical_region If this is set to 1, the critical region won't be exited. @sa sd_nvic_critical_region_enter.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_NVIC_CRITICAL_REGION_EXIT, uint32_t, sd_nvic_critical_region_exit(uint8_t is_nested_critical_region));
+
+/**@brief Query the capacity of the application random pool.
+ *
+ * @param[out] p_pool_capacity The capacity of the pool.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_RAND_APPLICATION_POOL_CAPACITY, uint32_t, sd_rand_application_pool_capacity_get(uint8_t * p_pool_capacity));
+
+/**@brief Get number of random bytes available to the application.
+ *
+ * @param[out] p_bytes_available The number of bytes currently available in the pool.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_RAND_APPLICATION_BYTES_AVAILABLE, uint32_t, sd_rand_application_bytes_available_get(uint8_t * p_bytes_available));
+
+/**@brief Get random bytes from the application pool.
+ *
+ * @param[out]  p_buff  Pointer to unit8_t buffer for storing the bytes.
+ * @param[in]   length  Number of bytes to take from pool and place in p_buff.
+ *
+ * @retval ::NRF_SUCCESS The requested bytes were written to p_buff.
+ * @retval ::NRF_ERROR_SOC_RAND_NOT_ENOUGH_VALUES No bytes were written to the buffer, because there were not enough bytes available.
+*/
+SVCALL(SD_RAND_APPLICATION_GET_VECTOR, uint32_t, sd_rand_application_vector_get(uint8_t * p_buff, uint8_t length));
+
+/**@brief Gets the reset reason register. 
+ *
+ * @param[out]  p_reset_reason  Contents of the NRF_POWER->RESETREAS register.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_POWER_RESET_REASON_GET, uint32_t, sd_power_reset_reason_get(uint32_t * p_reset_reason));
+
+/**@brief Clears the bits of the reset reason register. 
+ *
+ * @param[in] reset_reason_clr_msk Contains the bits to clear from the reset reason register.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_POWER_RESET_REASON_CLR, uint32_t, sd_power_reset_reason_clr(uint32_t reset_reason_clr_msk));
+
+/**@brief Sets the power mode when in CPU sleep.
+ *
+ * @param[in] power_mode The power mode to use when in CPU sleep. @sa sd_app_evt_wait
+ *
+ * @retval ::NRF_SUCCESS The power mode was set.
+ * @retval ::NRF_ERROR_SOC_POWER_MODE_UNKNOWN The power mode was unknown.
+ */
+SVCALL(SD_POWER_MODE_SET, uint32_t, sd_power_mode_set(nrf_power_mode_t power_mode));
+
+/**@brief Puts the chip in System OFF mode. 
+ *
+ * @retval ::NRF_ERROR_SOC_POWER_OFF_SHOULD_NOT_RETURN
+ */
+SVCALL(SD_POWER_SYSTEM_OFF, uint32_t, sd_power_system_off(void));
+
+/**@brief Enables or disables the power-fail comparator.
+ *
+ * Enabling this will give a softdevice event (NRF_EVT_POWER_FAILURE_WARNING) when the power failure warning occurs.
+ * The event can be retrieved with sd_evt_get();
+ *
+ * @param[in] pof_enable    True if the power-fail comparator should be enabled, false if it should be disabled.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_POWER_POF_ENABLE, uint32_t, sd_power_pof_enable(uint8_t pof_enable));
+
+/**@brief Sets the power-fail threshold value.
+ *
+ * @param[in] threshold The power-fail threshold value to use.
+ *
+ * @retval ::NRF_SUCCESS The power failure threshold was set.
+ * @retval ::NRF_ERROR_SOC_POWER_POF_THRESHOLD_UNKNOWN The power failure threshold is unknown.
+ */
+SVCALL(SD_POWER_POF_THRESHOLD_SET, uint32_t, sd_power_pof_threshold_set(nrf_power_failure_threshold_t threshold));
+
+/**@brief Sets bits in the NRF_POWER->RAMON register.
+ *
+ * @param[in] ramon Contains the bits needed to be set in the NRF_POWER->RAMON register.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_POWER_RAMON_SET, uint32_t, sd_power_ramon_set(uint32_t ramon));
+
+/** @brief Clears bits in the NRF_POWER->RAMON register.
+ *
+ * @param ramon Contains the bits needed to be cleared in the NRF_POWER->RAMON register.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_POWER_RAMON_CLR, uint32_t, sd_power_ramon_clr(uint32_t ramon));
+
+/**@brief Get contents of NRF_POWER->RAMON register, indicates power status of ram blocks.
+ *
+ * @param[out] p_ramon Content of NRF_POWER->RAMON register.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_POWER_RAMON_GET, uint32_t, sd_power_ramon_get(uint32_t * p_ramon));
+
+/**@brief Set bits in the NRF_POWER->GPREGRET register.
+ *
+ * @param[in] gpregret_msk Bits to be set in the GPREGRET register.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_POWER_GPREGRET_SET, uint32_t, sd_power_gpregret_set(uint32_t gpregret_msk));
+
+/**@brief Clear bits in the NRF_POWER->GPREGRET register.
+ *
+ * @param[in] gpregret_msk Bits to be clear in the GPREGRET register.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_POWER_GPREGRET_CLR, uint32_t, sd_power_gpregret_clr(uint32_t gpregret_msk));
+
+/**@brief Get contents of the NRF_POWER->GPREGRET register.
+ *
+ * @param[out] p_gpregret Contents of the GPREGRET register.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_POWER_GPREGRET_GET, uint32_t, sd_power_gpregret_get(uint32_t *p_gpregret));
+
+/**@brief Sets the DCDC mode.
+ *
+ * Depending on the internal state of the SoftDevice, the mode change may not happen immediately.
+ * The DCDC mode switch will be blocked when occurring in close proximity to radio transmissions. When
+ * the radio transmission is done, the last mode will be used.
+ *
+ * @param[in] dcdc_mode The mode of the DCDC.
+ *
+ * @retval ::NRF_SUCCESS
+ * @retval ::NRF_ERROR_INVALID_PARAM The DCDC mode is invalid.
+ */
+SVCALL(SD_POWER_DCDC_MODE_SET, uint32_t, sd_power_dcdc_mode_set(nrf_power_dcdc_mode_t dcdc_mode));
+
+/**@brief Request the high frequency crystal oscillator.
+ *
+ * Will start the high frequency crystal oscillator, the startup time of the crystal varies
+ * and the ::sd_clock_hfclk_is_running function can be polled to check if it has started.
+ *
+ * @see sd_clock_hfclk_is_running
+ * @see sd_clock_hfclk_release
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_CLOCK_HFCLK_REQUEST, uint32_t, sd_clock_hfclk_request(void));
+
+/**@brief Releases the high frequency crystal oscillator.
+ *
+ * Will stop the high frequency crystal oscillator, this happens immediately.
+ *
+ * @see sd_clock_hfclk_is_running
+ * @see sd_clock_hfclk_request
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_CLOCK_HFCLK_RELEASE, uint32_t, sd_clock_hfclk_release(void));
+
+/**@brief Checks if the high frequency crystal oscillator is running.
+ *
+ * @see sd_clock_hfclk_request
+ * @see sd_clock_hfclk_release
+ *
+ * @param[out] p_is_running 1 if the external crystal oscillator is running, 0 if not.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_CLOCK_HFCLK_IS_RUNNING, uint32_t, sd_clock_hfclk_is_running(uint32_t * p_is_running));
+
+/**@brief Waits for an application event.
+ * 
+ * An application event is either an application interrupt or a pended interrupt when the
+ * interrupt is disabled. When the interrupt is enabled it will be taken immediately since
+ * this function will wait in thread mode, then the execution will return in the application's
+ * main thread. When an interrupt is disabled and gets pended it will return to the application's 
+ * thread main. The application must ensure that the pended flag is cleared using 
+ * ::sd_nvic_ClearPendingIRQ in order to sleep using this function. This is only necessary for
+ * disabled interrupts, as the interrupt handler will clear the pending flag automatically for
+ * enabled interrupts.
+ *
+ * In order to wake up from disabled interrupts, the SEVONPEND flag has to be set in the Cortex-M0
+ * System Control Register (SCR). @sa CMSIS_SCB
+ *
+ * @note If an application interrupt has happened since the last time sd_app_evt_wait was
+ *       called this function will return immediately and not go to sleep. This is to avoid race
+ *       conditions that can occur when a flag is updated in the interrupt handler and processed
+ *       in the main loop.
+ *
+ * @post An application interrupt has happened or a interrupt pending flag is set.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_APP_EVT_WAIT, uint32_t, sd_app_evt_wait(void));
+
+/**@brief Get PPI channel enable register contents.
+ *
+ * @param[out] p_channel_enable The contents of the PPI CHEN register.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_PPI_CHANNEL_ENABLE_GET, uint32_t, sd_ppi_channel_enable_get(uint32_t * p_channel_enable));
+
+/**@brief Set PPI channel enable register.
+ *
+ * @param[in] channel_enable_set_msk Mask containing the bits to set in the PPI CHEN register.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_PPI_CHANNEL_ENABLE_SET, uint32_t, sd_ppi_channel_enable_set(uint32_t channel_enable_set_msk));
+
+/**@brief Clear PPI channel enable register.
+ *
+ * @param[in] channel_enable_clr_msk Mask containing the bits to clear in the PPI CHEN register.
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_PPI_CHANNEL_ENABLE_CLR, uint32_t, sd_ppi_channel_enable_clr(uint32_t channel_enable_clr_msk));
+
+/**@brief Assign endpoints to a PPI channel.
+ *
+ * @param[in] channel_num Number of the PPI channel to assign.
+ * @param[in] evt_endpoint Event endpoint of the PPI channel.
+ * @param[in] task_endpoint Task endpoint of the PPI channel.
+ *
+ * @retval ::NRF_ERROR_SOC_PPI_INVALID_CHANNEL The channel number is invalid.
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_PPI_CHANNEL_ASSIGN, uint32_t, sd_ppi_channel_assign(uint8_t channel_num, const volatile void * evt_endpoint, const volatile void * task_endpoint));
+
+/**@brief Task to enable a channel group.
+ *
+ * @param[in] group_num Number of the channel group.
+ *
+ * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_PPI_GROUP_TASK_ENABLE, uint32_t, sd_ppi_group_task_enable(uint8_t group_num));
+
+/**@brief Task to disable a channel group.
+ *
+ * @param[in] group_num Number of the PPI group.
+ *
+ * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid.
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_PPI_GROUP_TASK_DISABLE, uint32_t, sd_ppi_group_task_disable(uint8_t group_num));
+
+/**@brief Assign PPI channels to a channel group.
+ *
+ * @param[in] group_num Number of the channel group.
+ * @param[in] channel_msk Mask of the channels to assign to the group.
+ *
+ * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid.
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_PPI_GROUP_ASSIGN, uint32_t, sd_ppi_group_assign(uint8_t group_num, uint32_t channel_msk));
+
+/**@brief Gets the PPI channels of a channel group.
+ *
+ * @param[in]   group_num Number of the channel group.
+ * @param[out]  p_channel_msk Mask of the channels assigned to the group.
+ *
+ * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid.
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_PPI_GROUP_GET, uint32_t, sd_ppi_group_get(uint8_t group_num, uint32_t * p_channel_msk));
+
+/**@brief Configures the Radio Notification signal.
+ *
+ * @note
+ *      - The notification signal latency depends on the interrupt priority settings of SWI used
+ *        for notification signal.
+ *      - In the period between the ACTIVE signal and the start of the Radio Event, the SoftDevice
+ *        will interrupt the application to do Radio Event preparation.
+ *      - Using the Radio Notification feature may limit the bandwidth, as the SoftDevice may have
+ *        to shorten the connection events to have time for the Radio Notification signals.
+ *
+ * @param[in]  type      Type of notification signal.
+ *                       @ref NRF_RADIO_NOTIFICATION_TYPE_NONE shall be used to turn off radio
+ *                       notification. Using @ref NRF_RADIO_NOTIFICATION_DISTANCE_NONE is
+ *                       recommended (but not required) to be used with
+ *                       @ref NRF_RADIO_NOTIFICATION_TYPE_NONE.
+ *
+ * @param[in]  distance  Distance between the notification signal and start of radio activity.
+ *                       This parameter is ignored when @ref NRF_RADIO_NOTIFICATION_TYPE_NONE or 
+ *                       @ref NRF_RADIO_NOTIFICATION_TYPE_INT_ON_INACTIVE is used.
+ *
+ * @retval ::NRF_ERROR_INVALID_PARAM The group number is invalid.
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_RADIO_NOTIFICATION_CFG_SET, uint32_t, sd_radio_notification_cfg_set(nrf_radio_notification_type_t type, nrf_radio_notification_distance_t distance));
+
+/**@brief Encrypts a block according to the specified parameters.
+ *
+ * 128-bit AES encryption.
+ *
+ * @param[in, out] p_ecb_data Pointer to the ECB parameters' struct (two input
+ *                            parameters and one output parameter).
+ *
+ * @retval ::NRF_SUCCESS
+ */
+SVCALL(SD_ECB_BLOCK_ENCRYPT, uint32_t, sd_ecb_block_encrypt(nrf_ecb_hal_data_t * p_ecb_data));
+
+/**@brief Gets any pending events generated by the SoC API.
+ *
+ * The application should keep calling this function to get events, until ::NRF_ERROR_NOT_FOUND is returned.
+ *
+ * @param[out] p_evt_id Set to one of the values in @ref NRF_SOC_EVTS, if any events are pending.
+ *
+ * @retval ::NRF_SUCCESS An event was pending. The event id is written in the p_evt_id parameter.
+ * @retval ::NRF_ERROR_NOT_FOUND No pending events. 
+ */
+SVCALL(SD_EVT_GET, uint32_t, sd_evt_get(uint32_t * p_evt_id));
+
+/**@brief Get the temperature measured on the chip
+ * 
+ * This function will block until the temperature measurement is done.
+ * It takes around 50us from call to return.
+ *
+ * @note Pan #28 in PAN-028 v 1.6 "Negative measured values are not represented correctly" is corrected by this function.
+ *
+ * @param[out] p_temp Result of temperature measurement. Die temperature in 0.25 degrees celsius.
+ *
+ * @retval ::NRF_SUCCESS A temperature measurement was done, and the temperature was written to temp
+ */
+SVCALL(SD_TEMP_GET, uint32_t, sd_temp_get(int32_t * p_temp));
+
+/**@brief Flash Write
+ *
+ * Commands to write a buffer to flash
+ *
+ * This call initiates the flash access command, and its completion will be communicated to the
+ * application with exactly one of the following events:
+ *      - NRF_EVT_FLASH_OPERATION_SUCCESS - The command was successfully completed.
+ *      - NRF_EVT_FLASH_OPERATION_ERROR   - The command could not be started.
+ *
+ * @note
+ *      - This call takes control over the radio and the CPU during flash erase and write to make sure that
+ *        they will not interfere with the flash access. This means that all interrupts will be blocked
+ *        for a predictable time (depending on the NVMC specification in nRF51 Series Reference Manual
+ *        and the command parameters).
+ *
+ *
+ * @param[in]  p_dst Pointer to start of flash location to be written.
+ * @param[in]  p_src Pointer to buffer with data to be written
+ * @param[in]  size  Number of 32-bit words to write. Maximum size is 256 32bit words.
+ *
+ * @retval ::NRF_ERROR_INVALID_ADDR   Tried to write to a non existing flash address, or p_dst or p_src was unaligned.
+ * @retval ::NRF_ERROR_BUSY           The previous command has not yet completed.
+ * @retval ::NRF_ERROR_INVALID_LENGTH Size was 0, or more than 256 words.
+ * @retval ::NRF_ERROR_FORBIDDEN      Tried to write to or read from protected location.
+ * @retval ::NRF_SUCCESS              The command was accepted.
+ */
+SVCALL(SD_FLASH_WRITE, uint32_t, sd_flash_write(uint32_t * const p_dst, uint32_t const * const p_src, uint32_t size));
+
+
+/**@brief Flash Erase page
+ *
+ * Commands to erase a flash page
+ *
+ * This call initiates the flash access command, and its completion will be communicated to the
+ * application with exactly one of the following events:
+ *      - NRF_EVT_FLASH_OPERATION_SUCCESS - The command was successfully completed.
+ *      - NRF_EVT_FLASH_OPERATION_ERROR   - The command could not be started.
+ *
+ * @note
+ *      - This call takes control over the radio and the CPU during flash erase and write to make sure that
+ *        they will not interfere with the flash access. This means that all interrupts will be blocked
+ *        for a predictable time (depending on the NVMC specification in nRF51 Series Reference Manual
+ *        and the command parameters).
+ *
+ *
+ * @param[in]  page_number Pagenumber of the page to erase
+ * @retval ::NRF_ERROR_INTERNAL      If a new session could not be opened due to an internal error.
+ * @retval ::NRF_ERROR_INVALID_ADDR  Tried to erase to a non existing flash page.
+ * @retval ::NRF_ERROR_BUSY          The previous command has not yet completed.
+ * @retval ::NRF_ERROR_FORBIDDEN     Tried to erase a protected page.
+ * @retval ::NRF_SUCCESS             The command was accepted.
+ */
+SVCALL(SD_FLASH_PAGE_ERASE, uint32_t, sd_flash_page_erase(uint32_t page_number));
+
+
+/**@brief Flash Protection set
+ *
+ * Commands to set the flash protection registers PROTENSETx
+ *
+ * @note To read the values in PROTENSETx you can read them directly. They are only write-protected.
+ *
+ * @param[in]  protenset0 Value to be written to PROTENSET0
+ * @param[in]  protenset1 Value to be written to PROTENSET1
+ *
+ * @retval ::NRF_ERROR_FORBIDDEN Tried to protect the SoftDevice
+ * @retval ::NRF_SUCCESS Values successfully written to PROTENSETx
+ */
+SVCALL(SD_FLASH_PROTECT, uint32_t, sd_flash_protect(uint32_t protenset0, uint32_t protenset1));
+
+/**@brief Opens a session for radio requests.
+ *
+ * @note Only one session can be open at a time.
+ * @note p_radio_signal_callback(NRF_RADIO_CALLBACK_SIGNAL_TYPE_START) will be called when the radio timeslot
+ *       starts. From this point the NRF_RADIO and NRF_TIMER0 peripherals can be freely accessed
+ *       by the application.
+ * @note p_radio_signal_callback(NRF_RADIO_CALLBACK_SIGNAL_TYPE_TIMER0) is called whenever the NRF_TIMER0
+ *       interrupt occurs.
+ * @note p_radio_signal_callback(NRF_RADIO_CALLBACK_SIGNAL_TYPE_RADIO) is called whenever the NRF_RADIO
+ *       interrupt occurs.
+ * @note p_radio_signal_callback() will be called at ARM interrupt priority level 0. This
+ *       implies that none of the sd_* API calls can be used from p_radio_signal_callback().
+ *
+ * @param[in] p_radio_signal_callback The signal callback.
+ *
+ * @retval ::NRF_ERROR_INVALID_ADDR p_radio_signal_callback is an invalid function pointer.
+ * @retval ::NRF_ERROR_BUSY If session cannot be opened.
+ * @retval ::NRF_ERROR_INTERNAL If a new session could not be opened due to an internal error.
+ * @retval ::NRF_SUCCESS Otherwise.
+ */
+ SVCALL(SD_RADIO_SESSION_OPEN, uint32_t, sd_radio_session_open(nrf_radio_signal_callback_t p_radio_signal_callback));
+
+/**@brief Closes a session for radio requests.
+ *
+ * @note Any current radio timeslot will be finished before the session is closed.
+ * @note If a radio timeslot is scheduled when the session is closed, it will be canceled.
+ * @note The application cannot consider the session closed until the NRF_EVT_RADIO_SESSION_CLOSED
+ *       event is received.
+ *
+ * @retval ::NRF_ERROR_FORBIDDEN If session not opened.
+ * @retval ::NRF_ERROR_BUSY If session is currently being closed.
+ * @retval ::NRF_SUCCESS Otherwise.
+ */
+ SVCALL(SD_RADIO_SESSION_CLOSE, uint32_t, sd_radio_session_close(void));
+
+ /**@brief Requests a radio timeslot.
+ *
+ * @note The timing of the radio timeslot is specified by p_request->distance_us. For the first
+ *       request in a session, p_request->distance_us is required to be 0 by convention, and
+ *       the timeslot is scheduled at the first possible opportunity. All following radio timeslots are
+ *       requested with a distance of p_request->distance_us measured from the start of the
+ *       previous radio timeslot.
+ * @note A too small p_request->distance_us will lead to a NRF_EVT_RADIO_BLOCKED event.
+ * @note Timeslots scheduled too close will lead to a NRF_EVT_RADIO_BLOCKED event.
+ * @note See the SoftDevice Specification for more on radio timeslot scheduling, distances and lengths.
+ * @note If an opportunity for the first radio timeslot is not found before 100ms after the call to this
+ *       function, it is not scheduled, and instead a NRF_EVT_RADIO_BLOCKED event is sent.
+ *       The application may then try to schedule the first radio timeslot again.
+ * @note Successful requests will result in nrf_radio_signal_callback_t(NRF_RADIO_CALLBACK_SIGNAL_TYPE_START).
+ *       Unsuccessful requests will result in a NRF_EVT_RADIO_BLOCKED event, see @ref NRF_SOC_EVTS.
+ * @note The jitter in the start time of the radio timeslots is +/- NRF_RADIO_START_JITTER_US us.
+ * @note The nrf_radio_signal_callback_t(NRF_RADIO_CALLBACK_SIGNAL_TYPE_START) call has a latency relative to the
+ *       specified radio timeslot start, but this does not affect the actual start time of the timeslot.
+ * @note NRF_TIMER0 is reset at the start of the radio timeslot, and is clocked at 1MHz from the high frequency
+ *       (16 MHz) clock source. If p_request->hfclk_force_xtal is true, the high frequency clock is 
+ *       guaranteed to be clocked from the external crystal.
+ * @note The SoftDevice will neither access the NRF_RADIO peripheral nor the NRF_TIMER0 peripheral
+ *       during the radio timeslot.
+ *
+ * @param[in] p_request Pointer to the request parameters.
+ *
+ * @retval ::NRF_ERROR_FORBIDDEN If session not opened or the session is not IDLE.
+ * @retval ::NRF_ERROR_INVALID_ADDR If the p_request pointer is invalid.
+ * @retval ::NRF_ERROR_INVALID_PARAM If the parameters of p_request are not valid.
+ * @retval ::NRF_SUCCESS Otherwise.
+ */
+ SVCALL(SD_RADIO_REQUEST, uint32_t, sd_radio_request(nrf_radio_request_t * p_request ));
+
+/** @} */
+
+#endif // NRF_SOC_H__
+
+/**@} */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/nrf_svc.h	Fri Oct 17 14:15:08 2014 +0100
@@ -0,0 +1,33 @@
+#ifndef NRF_SVC__
+#define NRF_SVC__
+
+#ifdef SVCALL_AS_NORMAL_FUNCTION
+#define SVCALL(number, return_type, signature) return_type signature
+#else
+
+#ifndef SVCALL
+#if defined (__CC_ARM)
+#define SVCALL(number, return_type, signature) return_type __svc(number) signature
+#elif defined (__GNUC__)
+#define SVCALL(number, return_type, signature) \
+  _Pragma("GCC diagnostic ignored \"-Wreturn-type\"") \
+  _Pragma("GCC diagnostic ignored \"-Wunused-function\"") \
+  __attribute__((naked)) static return_type signature \
+  { \
+    __asm( \
+        "svc %0\n" \
+        "bx r14" : : "I" ((uint32_t)number) : "r0" \
+    ); \
+  }
+#elif defined (__ICCARM__)
+#define PRAGMA(x) _Pragma(#x)
+#define SVCALL(number, return_type, signature) \
+PRAGMA(swi_number = number) \
+ __swi return_type signature;
+#else
+#define SVCALL(number, return_type, signature) return_type signature  
+#endif
+#endif  // SVCALL
+
+#endif  // SVCALL_AS_NORMAL_FUNCTION
+#endif  // NRF_SVC__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_API/include/softdevice_assert.h	Fri Oct 17 14:15:08 2014 +0100
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved.
+ *
+ * The information contained herein is confidential property of Nordic Semiconductor. The use,
+ * copying, transfer or disclosure of such information is prohibited except by express written
+ * agreement with Nordic Semiconductor.
+ *
+ */
+
+/** @brief Utilities for verifying program logic
+ */
+
+#ifndef SOFTDEVICE_ASSERT_H_
+#define SOFTDEVICE_ASSERT_H_
+
+#include <stdint.h>
+
+/** @brief This function handles assertions.
+ *
+ *
+ * @note
+ * This function is called when an assertion has triggered.
+ * 
+ *
+ * @param line_num The line number where the assertion is called
+ * @param file_name Pointer to the file name
+ */
+void assert_softdevice_callback(uint16_t line_num, const uint8_t *file_name);
+
+
+/*lint -emacro(506, ASSERT) */ /* Suppress "Constant value Boolean */ 
+/*lint -emacro(774, ASSERT) */ /* Suppress "Boolean within 'if' always evaluates to True" */ \
+/** @brief Check intended for production code
+ *
+ * Check passes if "expr" evaluates to true. */
+#define ASSERT(expr) \
+if (expr)                                                                     \
+{                                                                             \
+}                                                                             \
+else                                                                          \
+{                                                                             \
+  assert_softdevice_callback((uint16_t)__LINE__, (uint8_t *)__FILE__);        \
+  /*lint -unreachable */                                                      \
+}
+
+#endif /* SOFTDEVICE_ASSERT_H_ */
Binary file targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_licence_agreement.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_readme.txt	Fri Oct 17 14:15:08 2014 +0100
@@ -0,0 +1,16 @@
+s110_nrf51822_7.1.0
+
+This release consists of the following:
+- This readme file
+- The s110_nrf51822_7.1.0 license
+- The s110_nrf51822_7.1.0 softdevice (binary hex file)
+- The s110_nrf51822_7.1.0 API (softdevice header files)
+- The s110_nrf51822_7.1.0 release notes
+
+
+IMPORTANT NOTE: 
+If you intend to use the CPU unlock feature of this relase, replace 
+the header files in the SDK (nRF51 SDK version 6.0.0) with the header
+files in this release.
+Otherwise, you may continue to use the header files already installed
+as part of the nRF51 SDK versions 6.0.0.
Binary file targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_releasenotes.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/hal/TARGET_NORDIC/TARGET_MCU_NRF51822/Lib/s110_nrf51822_7_1_0/s110_nrf51822_7.1.0_softdevice.hex	Fri Oct 17 14:15:08 2014 +0100
@@ -0,0 +1,5280 @@
+:020000040000FA
+:10000000C0070000D1060000D1000000B1060000CA
+:1000100000000000000000000000000000000000E0
+:100020000000000000000000000000005107000078
+:100030000000000000000000DB000000E500000000
+:10004000EF000000F9000000030100000D010000B6
+:1000500017010000210100002B0100003501000004
+:100060003F01000049010000530100005D01000054
+:1000700067010000710100007B01000085010000A4
+:100080008F01000099010000A3010000AD010000F4
+:10009000B7010000C1010000CB010000D501000044
+:1000A000DF010000E9010000F3010000FD01000094
+:1000B00007020000110200001B02000025020000E0
+:1000C0001FB5C046C04600F0EFFA04B00FB41FBD24
+:1000D00008205A49096809580847382057490968CB
+:1000E000095808473C2055490968095808474020E5
+:1000F0005249096809580847442050490968095875
+:10010000084748204D490968095808474C204B4981
+:10011000096809580847502048490968095808479C
+:100120005420464909680958084758204349096836
+:10013000095808475C204149096809580847602068
+:100140003E4909680958084764203C49096809582C
+:100150000847682039490968095808476C20374919
+:100160000968095808477020344909680958084740
+:100170007420324909680958084778202F490968CE
+:10018000095808477C202D490968095808478020EC
+:100190002A490968095808478420284909680958E4
+:1001A0000847882025490968095808478C202349B1
+:1001B00009680958084790202049096809580847E4
+:1001C00094201E4909680958084798201B49096866
+:1001D000095808479C201949096809580847A02070
+:1001E0001649096809580847A4201449096809589C
+:1001F0000847A8201149096809580847AC200F4949
+:10020000096809580847B0200C4909680958084787
+:10021000B4200A49096809580847B82007490968FD
+:1002200009580847BC2005490968095808470000D3
+:1002300003480449024A034B7047000000000020B5
+:10024000C0070000C00700000122D84B5A6000BF61
+:10025000D74A1268002AFBD0016000BFD44A126856
+:10026000002AFBD00022D14B5A6000BFD04A12684E
+:10027000002AFBD07047F0B505460E46174600240D
+:1002800006E0A200B158A2005019FFF7DDFF641C80
+:10029000BC42F6D30020F0BD0120C043C549086030
+:1002A000401048607047014601229204086890425D
+:1002B00001D9102070470020FCE7F0B505460C4638
+:1002C0001646002706E028462168FFF7BDFF2D1DD2
+:1002D000241D7F1CB742F6D3F0BD70B505460C4611
+:1002E0002E460BE0304600F075F9FF2C01D80024B3
+:1002F00001E0FF3C013C012080023618002CF1D1C6
+:1003000070BD0146012292044868904201D909203B
+:100310007047A9484069401C01D10F20F8E7002030
+:10032000F6E7FEB504462068030000F037FA05043E
+:100330002B4249598B00201DFFF7E3FF0546002D96
+:1003400001D02846FEBDFFF7A7FF0120C00200F044
+:1003500041F9042221469948FFF78DFF002801D07A
+:100360000320EFE708222146944800F06DF90028A9
+:1003700006D1002192480068FFF766FF00F00CF9F3
+:100380000320DFE7A768E6686068019031463846D9
+:10039000FFF7A3FF324638460199FFF78EFFB20000
+:1003A0003846019900F050F9002800D1CAE703202F
+:1003B000C8E700F0E3F9834800688349086041E03A
+:1003C00060680190E668A0680090B200009901980A
+:1003D00000F03AF90746002F00D1B3E70E20B1E74D
+:1003E000201DFFF760FF0546002D01D02846A9E734
+:1003F0006068002807D1FFF74FFF0320800200F05C
+:10040000E9F800F0C9F8FFF747FF0120C00200F04B
+:10041000E1F8042221466948FFF72DFF002801D0AA
+:1004200003208FE708222146644800F00DF90028D8
+:1004300006D1002162480068FFF706FF00F0ACF823
+:1004400003207FE700BF00207CE770B505460C461F
+:10045000182D04D12068FFF764FF206002E001201E
+:10046000206000BF00BF70BDF0B589B05248406940
+:1004700003905248806881000398081802900398FE
+:10048000000B01900121090302984018401E000B47
+:1004900000900124002520462946019A00F0C4F866
+:1004A0000022401E91410791069001260027304608
+:1004B0003946009A00F0B8F80022401E914105919B
+:1004C0000490049BDB43059AD2430698184307998E
+:1004D00011430791069037490698086007984860CD
+:1004E00009B0F0BD70B53448446934488568466841
+:1004F000AA003146204600F0A7F8002801D00020CD
+:1005000070BD0120FCE72D484068002801D0012083
+:1005100000E000200546FFF7E5FF002807D0FFF7C1
+:10052000BBFE0320800200F055F800F035F8FFF71D
+:100530009BFF002D0ED020484669204884684768FC
+:1005400021463046FFF7C9FE224639463046FFF7BE
+:10055000B4FE00BF00F020F810B5184844681A48EF
+:100560000460204600F0DCF810BD15480068006803
+:10057000401C01D100BFFEE710480068002802D0EF
+:10058000042806D101E0FFF7BEFFFFF7E5FF00BF3B
+:10059000FEE700BF00BFFEE7BFF34F8F0B480C49DB
+:1005A000C860BFF34F8F00BFFEE7000000E50140C9
+:1005B00000E40140000600400010001000080000A8
+:1005C000B8070000BC070000000000200400FA0586
+:1005D00000ED00E010B50146104B1A6808460223F2
+:1005E0000F4C636000BF0F4B1B68002BFBD0531CEC
+:1005F00004D0904202D20A4B186101E0084B986087
+:1006000000BF084B1B68002BFBD00023044C636029
+:1006100000BF044B1B68002BFBD010BD0010001066
+:1006200000E5014000E4014010B5202A04DB01464A
+:10063000203A9140002010BD914020239C1A03468F
+:10064000E3401943904010BD034610B50B439B0790
+:100650000FD1042A0DD308C810C9121FA342F8D025
+:1006600018BA21BA884201D9012010BD0020C04328
+:1006700010BD002A03D0D30703D0521C07E000208E
+:1006800010BD03780C78401C491C1B1B07D1037854
+:100690000C78401C491C1B1B01D1921EF1D118463D
+:1006A00010BD70477047704710B500F007F810BDD7
+:1006B000014B1B68DB6818470000002019481A49E5
+:1006C0007047FFF7FBFFFFF7FBFC00BD20BFFDE716
+:1006D0001649174C24688C420BD1164B1B68994263
+:1006E0000CD1154B154A1360186810498842EDD09B
+:1006F0000AE0134880F30888124B18470F4A13602A
+:1007000018680A498842E1D080F308880E49884277
+:1007100004DD0E48026802210A4302605B68184744
+:100720000346DFE7C0070000C0070000FFFFFFFF30
+:10073000000C000014100010001000000000002049
+:10074000000400206B05000000200020240500406C
+:100750000D48704502D1EFF3098101E0EFF3088104
+:10076000886902380078182802D1C046074A104725
+:10077000074A12682C3212681047000000B5054B7A
+:10078000054A9B58984700BDFDFFFFFF4B04000042
+:1007900000000020001000000400000030B4744687
+:1007A000641E2578641CAB4204D3635D5B00E318D0
+:1007B00030BC18471D46F8E7000C00000010000090
+:10100000881D0020E14F0100993D0000474F01007D
+:1010100000000000000000000000000000000000D0
+:10102000000000000000000000000000515001001E
+:101030000000000000000000993D0000993D000004
+:10104000BD500100C3500100993D0000993D0000D2
+:10105000993D0000993D0000993D0000993D000038
+:10106000C9500100993D0000993D0000CF5001009A
+:10107000993D0000D5500100DB500100E150010016
+:10108000993D0000993D0000993D0000993D000008
+:10109000993D0000993D0000993D0000993D0000F8
+:1010A000E7500100ED500100993D0000993D00001E
+:1010B000993D0000993D0000993D0000993D0000D8
+:1010C00000F002F813F06DFF0CA030C808382418A7
+:1010D0002D18A246671EAB4654465D46AC4201D170
+:1010E00013F05FFF7E460F3E0FCCB646012633421B
+:1010F00000D0FB1AA246AB4633431847AC40010070
+:10110000DC400100103A02D378C878C1FAD85207FF
+:1011100001D330C830C101D504680C6070470000AD
+:101120000023002400250026103A01D378C1FBD803
+:10113000520700D330C100D50B6070471FB5C046C1
+:10114000C04613F0CFFE04B00FB41FBD8269024940
+:1011500081610248104470476111000001000000E5
+:1011600001B41EB400B510F0E7FB01B40198864647
+:1011700001BC01B01EBD0000F0B4404649465246D5
+:101180005B460FB402A0013001B50648004700BF1E
+:1011900001BC86460FBC8046894692469B46F0BC01
+:1011A00070470000C1100000401E00BF00BF00BF1C
+:1011B00000BF00BF00BF00BF00BF00BF00BF00BF37
+:1011C00000BFF1D17047000070B505460C461646C9
+:1011D00002E00FCC0FC5103E102EFAD2082E02D31B
+:1011E00003CC03C5083E042E07D301CC01C5361F2E
+:1011F00003E021782970641C6D1C761EF9D270BD45
+:101200008307FF22DB0E9A408907090E99400028C8
+:101210000BDA0007000F0838830828489B001B18CA
+:10122000D86990430843D8617047830824489B00DD
+:101230001B181868904308431860704710B504469F
+:1012400000210120FFF7DCFF00211820FFF7D8FF65
+:1012500000210B20FFF7D4FF02211920FFF7D0FF58
+:1012600002210D20FFF7CCFF02210E20FFF7C8FF5F
+:1012700002210F20FFF7C4FF0221C81FFFF7C0FFA4
+:1012800003211620FFF7BCFF03211520FFF7B8FF4D
+:10129000204600F019F8002010BD5A210180704747
+:1012A00010B500F03AF810BD0648704710B500F0D0
+:1012B00035F810BD704770477047000000ED00E042
+:1012C00000E400E003F900C330B50446374D95B0A3
+:1012D00007202870A81CFFF7E0FF5920A880344899
+:1012E00001F01CFC0546072000F0DCF929462F48D8
+:1012F00000F08CFA641E072C0AD830216846017071
+:10130000847001F0E0FA002802D009A800F0DDFCAA
+:10131000284601F083FE15B030BD7047F8B5234E66
+:101320000446B61E307801270D46002807D0204617
+:1013300060380B2808D8204601F09AFB2BE0602C7F
+:10134000F9D01C480860F8BD20466C38032803D843
+:10135000204601F0CFFB1EE0204670381F2803D83E
+:10136000204600F037F816E0204690380F2803D8C2
+:10137000204600F0BBF80EE02046A0380F2803D826
+:10138000204600F023F906E02046B0380F2804D8A4
+:10139000204600F000F9286000E02F60602CD2D1D8
+:1013A00028680028CFD13770F8BD00001A0000204F
+:1013B000C533000001300000704770477047704728
+:1013C000704770477047704710B5012801D100F091
+:1013D00042FA10BD10B57038030013F09FFE150CD3
+:1013E00012161E22252C33383D41454950555C6468
+:1013F0006C747B8085004A680878114603F093FF7F
+:1014000010BD086803F0F7FF10BD0C790B7B8A68EC
+:101410000868214603F0FFFF10BD086804F075F866
+:1014200010BD03F03DFC10BD08884A6880B211462B
+:1014300004F03AFA10BD0A790888114680B204F027
+:1014400086FA10BD087840B204F091FA10BD088801
+:1014500080B204F0ADFA10BD086804F0BCFA10BD0B
+:10146000086804F0CFFA10BD086804F0F8FA10BD5F
+:10147000088982B209C9194604F020FB10BD05C9CC
+:10148000114604F074FB10BD08884A6880B211460A
+:1014900004F08DFB10BD0B7908888A6880B219466C
+:1014A00004F0E1FB10BD0B7908888A6880B2194608
+:1014B00004F09AFC10BD08884B688A6880B219460F
+:1014C00004F0D8FC10BD08884A6880B2114604F0C8
+:1014D00023FD10BD088880B204F042FD10BD0888CD
+:1014E00080B204F062FD10BD012010BD10B590382F
+:1014F000030013F013FE09060F161D242C363F4679
+:101500004E0088888A6883B20888194680B205F040
+:101510007DF910BD08884A6880B2114605F0D3F9FC
+:1015200010BD08884A6880B2114605F017FA10BD50
+:1015300008884A6880B2114605F04DFA10BD088847
+:101540004B688A6880B2194605F07EFA10BD08899A
+:1015500082B2888883B20888194680B205F0B3FA4F
+:1015600010BD08894B6882B20888194680B205F020
+:10157000E8FA10BD08884A6880B2114605F018FBE9
+:1015800010BD888882B20888114680B205F0ACFB95
+:1015900010BD012010BD10B5B02805D0B12808D06D
+:1015A000B2280BD0012010BD088880B205F08AFE59
+:1015B00010BD088880B205F0B5FE10BD08884B68E4
+:1015C0008A6880B2194605F0BEFE10BD10B5A0387D
+:1015D000030013F0A3FD0B070E172028323C434DE8
+:1015E000545D65004B6808788A68194607F0EFF982
+:1015F00010BD88888A6883B20888194680B207F0CF
+:10160000FBF910BD08884C68CB688A6880B2214617
+:1016100007F002FA10BD08884B688A6880B2194644
+:1016200007F01CFA10BD8888CB6884B208888A68E5
+:1016300080B2214607F03CFA10BD8888CB6884B29E
+:1016400008888A6880B2214607F05CFA10BD0888D5
+:101650004A6880B2114607F090FA10BD088982B23C
+:10166000888883B20888194680B207F090FA10BDC6
+:1016700008884A6880B2114607F0ADFA10BD0889A3
+:101680004B6882B20888194680B207F02AFB10BD69
+:1016900008884B688A6880B2194607F0E7FB10BDDE
+:1016A000012010BD10B507F0CEFC0FF05FFF00F079
+:1016B00007F810F0ADF808F0C9F908F055F910BDB9
+:1016C00001202B49C00308602A490020087003202C
+:1016D0002949800288607047F8B5264D044628786D
+:1016E000A04207D0002C05D0002803D023A14D2014
+:1016F00013F023FC2878A04213D02C70032500237C
+:101700002349AD021C48002C27D01B4A214E4032F1
+:10171000214F012C06D0022C13D018A16E2013F0FB
+:101720000CFCF8BD0B6002230B604E6185601B4909
+:1017300011625762091D91621749091DD162456006
+:10174000F8BD0B6003230B604E610121C90281606B
+:10175000134B9362D7624160F8BD0B600B608560EC
+:10176000F8BD10B505A1772013F0E7FB10BD000010
+:1017700080E100E02000002000F501407372635C0E
+:1017800068616C5F63636D5F6161722E630000006E
+:1017900000F500407C01002000F0004000110040F6
+:1017A000488100401CB50446002069460870204668
+:1017B00009F0CAF86946204608F088FF002803D1DE
+:1017C000FBA1B62013F0B9FB01A9204608F0DDFE0D
+:1017D000002803D1F6A1BB2013F0AFFB68460078C8
+:1017E0001CBD70B5F74D002428462C76203084713E
+:1017F000C47113F0A1FC2846403804702030847373
+:10180000847484762C74AC7070BDEAE710B50C4615
+:10181000ED4982888A8042884A80007808700846AC
+:101820000A38847008F087FEFFF7DBFF20460AF0D5
+:10183000EFF9E44AE0321146383908461446813857
+:1018400009F0F0F82146E0480BF084FC09F073F849
+:1018500013F072FC10BD10B50120FFF7ADFD10BDF7
+:10186000F8B509F049FDD84DD64C0A3D022802D002
+:10187000207C00287CD0207E0026102819D1A0785A
+:10188000002803D0CAA1D14813F057FBCD48E8384F
+:10189000817A89070DD50146267160398989E180F1
+:1018A000C17A217281896181C089A0810120A070E3
+:1018B0002676C44F203FB87C002859D1C4486946D9
+:1018C000808908F003FF002805D069466878097808
+:1018D0004018687004E0BD48B5A11D3013F02DFB21
+:1018E000207C002838D0BA488189FF300930406D0B
+:1018F0008089814204D0B548ADA1223013F01DFB90
+:10190000B348808908F088FF002804D1AF48A8A117
+:10191000283013F012FB08F0F6FF00281CD0AC486A
+:101920008089FFF73FFF697840186870A548403804
+:10193000416D20318A7C012A0DD1A54A3E779289DA
+:10194000C287C87C20700120B876207E102801D084
+:10195000282800D1267626746978002908D09C486A
+:101960008289FF300930C28601870120B8746E7009
+:1019700009F092FC002805D1207C002802D0A8782C
+:1019800001F0F0F8F8BDF8B50F460446FFF768FF20
+:101990008C4D403D28788B4E002813D0002F10D15D
+:1019A000307E002804D0FF2081A1C63013F0C5FA94
+:1019B0002C22A91C204613F024F90E2020700020B0
+:1019C00028708FE07F4D203DA87B002818D0002F85
+:1019D000F7D1307E102808D0282806D0002804D05F
+:1019E000FF2073A1D23013F0A8FA0120E070E87B49
+:1019F000A070287C60700F2020700020A87371E018
+:101A00000121204608F0B8FF002807D0307C0028CC
+:101A100051D13946204608F0AFFFF8BDA97C69488E
+:101A20000C38009068480A38002913D0017805293D
+:101A300010D2002F56D1491C0170002666700D206F
+:101A40002070012028750622A01C009913F0D9F8F7
+:101A5000AE7447E05C4800210A380170B078002875
+:101A600014D0002F3ED1307E002803D050A1594819
+:101A700013F063FA002565700120524920700A2294
+:101A8000091DA01C13F0BDF8B5702BE039462046A7
+:101A90000BF0CAFA002825D1A87C002805D0002F19
+:101AA00020D149480A380178C5E7A87E002802D02D
+:101AB000307C002801D00020F8BD002F12D1307EEC
+:101AC000002804D08F203AA1800013F036FA0026B7
+:101AD00066700A203B4920700622091FA01C13F0E3
+:101AE00090F8AE760120F8BD10B53648017E002989
+:101AF00008D1007C012805D001210020FFF743FF19
+:101B0000002801D0072010BD012010BD10B5012410
+:101B10000AF0C6F80443FFF7E7FF044308F00CFFA0
+:101B200001462143084610BDF8B51D4614460E4631
+:101B300008F04BFD002807D0684608F051FD00284A
+:101B400003D0002C07D101E00120F8BD9B2018A193
+:101B5000800013F0F2F908F0EFFCA04204D21D4817
+:101B600013A1583013F0E9F9009808F05DF93146F7
+:101B7000009808F06BF9E2B22946009808F022FBC1
+:101B800008F040FD002804D19F2009A1800013F037
+:101B9000D4F908F0D3FE0E4800244030417C0029DF
+:101BA00002D044740AF067F90948C480CCE7000009
+:101BB0007372635C6C6C5F6374726C2E73302E6333
+:101BC00000000000200300202C00002084060000FC
+:101BD000D80100201502000010B50179002908D0B5
+:101BE00001290BD0FF20FE49043013F0A6F9002094
+:101BF00010BD831D42880488022103E042880488C6
+:101C0000831D01212046FFF78FFF10BDF8B51F4649
+:101C100015460E46044609F06FFB022803D0F14832
+:101C2000007C00281FD0F0488089208008F0F4FD57
+:101C3000002803D1EA49ED4813F07FF905246846EE
+:101C400008F0F5FD00280ED0009808F037F9307044
+:101C5000022809D0012807D008F029FE641E2406B6
+:101C6000240EECD10020F8BD3946009808F0C2FAE5
+:101C70002880002804D1AF20D949800013F05DF9F5
+:101C800008F015FE002804D1D848D549193013F0C2
+:101C900054F90120F8BD38B50446831D821C6946FD
+:101CA000FFF7B4FF00280DD000206071684600786F
+:101CB000012808D0022806D0FF20C949253013F09A
+:101CC0003CF9012038BD2071FBE700215BE670B5CF
+:101CD000C44C0546403C2078002803D1C148007E12
+:101CE000002803D0BE49C24813F027F9287808F02D
+:101CF00054FF28780BF079FB0020207101206071DF
+:101D00003921E170207070BD70B5B64D0446403D7C
+:101D10002878002803D1B348007E002804D0B448B6
+:101D2000AF49183813F009F9AF4E2188B0898842BD
+:101D300003D109F0E1FA022807D00220287101201E
+:101D400068713821E970287070BD7F207076A648D0
+:101D5000E17820304174A17801740020EEE710B5DD
+:101D6000A04C403C207800280BD19E48007E0028E3
+:101D700007D109F0C1FA032803D009F0C1FA0328FA
+:101D800004D19A489649653013F0D7F89549002058
+:101D90002031C8712071012060713A21E1702070FA
+:101DA00010BD70B58F4C0646403C207800280BD102
+:101DB0008C48007E002807D109F09EFA032803D042
+:101DC00009F09EFA032804D1884885497B3013F036
+:101DD000B4F8844D2035E87908280CD2E87910222F
+:101DE000000100196830314600F029FEE879401CF6
+:101DF000E871002000E007202071012060713B2184
+:101E0000E170207070BDF8B5764D0446403D2878ED
+:101E1000002803D17348007E002804D0B720704901
+:101E2000C00013F08AF8704F2188B889884203D126
+:101E300009F062FA022801D0022022E03E8C648878
+:101E40007200788CF98B521C944217D3694A514323
+:101E50009200504312F04FFF401EFF2180B2F53137
+:101E6000884200D90846844200D22046711C401C9A
+:101E700012F041FF761C7043401E86B2FE85EE8054
+:101E800000202871012068713C21E9702870F8BD9C
+:101E9000F8B5544C0546403C2078002803D1514801
+:101EA000007E002804D052484D497E3813F045F892
+:101EB000A878002801D0012804D1A888FF21F53195
+:101EC000884204D94A484649783813F036F8464ED5
+:101ED0002988B089884203D109F00EFA022807D078
+:101EE00002202071012060713621E1702070F8BD60
+:101EF0003D48002720308772A988B18501213176BD
+:101F0000A978012900D00021817237484030407CF7
+:101F1000002801D009F0AFFF2771E3E770B5314C1D
+:101F20000546403C2078002807D12E48007E002836
+:101F300003D109F0E1F9002804D02D482849A5383B
+:101F400012F0FBFF287809F0AEFE0020207101207E
+:101F500060713021E170207070BD70B5214C054674
+:101F6000403C2078002803D11E48007E002804D081
+:101F70001F481B490D3012F0E0FF287800280BD0D5
+:101F8000012809D0022807D06878402804D31848CF
+:101F90001349143012F0D1FF284609F0A4F90028A3
+:101FA00001D0002000E00C2020710120607134215C
+:101FB000E170207070BD70B50A4C0546403C207839
+:101FC000002807D10748007E002803D109F094F9C2
+:101FD000002804D006480249983812F0AEFF0BE002
+:101FE000B01B000020030020D8010020AA0200003E
+:101FF0000A060000C40900002978002914D00A2923
+:1020000012D0142910D01E290ED028290CD0322924
+:102010000AD04B2908D0642906D0FF2904D00B2010
+:10202000FD49C00112F089FF284609F0BBFE0020DF
+:102030002071012060713321E170207070BD70B596
+:10204000F64C06462078251D002804D12046403055
+:10205000007E002803D0F049F14812F06EFF3146AF
+:10206000002008F06FFD2870002804D106223146B8
+:10207000EC4812F0C6FD012060713221E170207041
+:1020800070BD70B5E54C05462078002804D1204687
+:102090004030007E002804D0E148DF49183812F0B3
+:1020A0004CFF00216956042914D0002912D0081DC4
+:1020B00010D0001D0ED0001D0CD0001D0AD0001D38
+:1020C00008D00A3006D0283104D0D548D249163875
+:1020D00012F033FFD448297801700120607131215A
+:1020E000E170207070BD10B5CC4C2078002804D170
+:1020F00020464030007E002803D0C749CB4812F06C
+:102100001CFF08F019FAE08008F0DEFA20720020C7
+:102110002071012060710521E170207010BDF8B5BB
+:10212000BE4C07462034A07B25462035002805D12B
+:10213000287E002802D1A878002804D05120B64972
+:10214000000112F0FAFE09F0D7F81026022822D179
+:10215000B7483988808988421DD1B0494839084636
+:102160000A7F6038807A002A03D080070CD40C20C4
+:102170000CE0800708D406200877AD484030407C4A
+:10218000002801D009F077FE2E760020E073267437
+:102190000120A073F8BD0220F8E710B59F4C20780D
+:1021A000002804D120464030007E002804D09C48FE
+:1021B0009949543812F0C1FE002020710E20A07001
+:1021C0000F20E070FF20A0710020C04320819548BF
+:1021D000C01D0178A1728188A1814088E081012021
+:1021E0006071207010BD10B58C4C2078002804D18F
+:1021F00020464030007E002803D087498D4812F0E9
+:102200009CFE0821A01D0FF04DFA00202071012036
+:1022100060712B21E170207010BD70B57F4D0446B8
+:102220002878002804D128464030007E002804D0B9
+:102230007E487949B83812F080FE7D481022214648
+:10224000303800F0FCFB7A481022A118203800F04A
+:10225000F6FB774830380FF02CFB75491022103907
+:102260002C46A81D00F0EBFB002020710E20A07072
+:102270002A20E07001206071207070BDF8B5674CB5
+:1022800005462034A07B26462036002802D1307E29
+:10229000002804D023206049400112F04EFEA978A6
+:1022A000052912D0132910D014290ED015290CD0CD
+:1022B0001A290AD0292908D03D2906D03B2904D063
+:1022C0008D205549C00012F038FE28885A498842AE
+:1022D00004D953485049E13812F02FFE09F00CF8A8
+:1022E0000C212827022809D151482A888089904248
+:1022F00015D14A484838027E002A01D0E17310E027
+:10230000A97841760121017637760020E0734848AC
+:102310004030407C002804D009F0ADFD01E00220EF
+:10232000E07327740120A073F8BDF8B53B4F064653
+:1023300038783D1D002804D138464030007E002802
+:1023400004D03C483449D13012F0F7FD3146012029
+:1023500008F0F8FB01242870002807D12F48062236
+:1023600060303146054612F04CFCAC717C71172090
+:10237000F8703C70F8BDF0B52B4F85B0403F3D7A0A
+:10238000064626480078002804D13846A038007E4A
+:10239000002804D0D3202049800012F0CEFD3078F0
+:1023A000002806D0012804D022481B492C3812F0FE
+:1023B000C4FD082D4CD21C4820380190C4693078E7
+:1023C00000283FD0012804D01A4813491E3812F0C3
+:1023D000B4FD294608310120884004430120A8406B
+:1023E00020430090B1790D4C0802727969000919F7
+:1023F0001043FF3101318881B01C12F063FC717809
+:1024000000020843A9000919C031C862387A401C8B
+:1024100038720199009811E0B01B0000E002002022
+:10242000520500002500002000040020E9060000FD
+:10243000D801002079030000FF0E0000C8610020D1
+:10244000207108E029460831012088408443C5E70F
+:10245000F748072101710121F5480B224171C27033
+:10246000017005B0F0BD10B5F14C2078002804D102
+:1024700020464030007E002803D0EE49EE4812F09E
+:102480005CFD12F059FE00202071012060710A21CC
+:10249000E170207010BD10B509F09DFB002804D03C
+:1024A000E548E449583812F048FD08F043FA08F0CE
+:1024B00026F80AF040FE002804D0BD20DD49800047
+:1024C00012F03BFD08F085FA002804D05F20D949BE
+:1024D000C00012F032FD12F02FFED8480024047024
+:1024E000FFF77FF9D2480121047141710222C270C5
+:1024F000017010BD70B5CE4D04462878002804D177
+:1025000028464030007E002804D0CB48C9498F308F
+:1025100012F013FD20781F2801D8601C04D1C64892
+:10252000C449903012F009FD002028712078611C08
+:1025300008F022FB012068712021E970287070BD2D
+:10254000F8B5BB4C0646207825464035002802D118
+:10255000287E002804D0B848B6499D3012F0EDFC22
+:102560003078012806D0002804D0F720B149800037
+:1025700012F0E3FC012060710C20207130780027FC
+:10258000AF4E012808D008F0B7FE032869D008F044
+:10259000B7FE032873D078E008F0AEFE002803D120
+:1025A00008F0AEFE002804D008F0A6FE02283DD0B8
+:1025B0006BE008F04DFA002867D0287C002864D131
+:1025C0009F4802210C300EF0F6FF002806D00F21A4
+:1025D000B089090212F08FFBB18100E0B7810122BE
+:1025E0000321974807F02EFE954808F0D3FBB089E9
+:1025F00007F0A4FF002804D18F488E49B93012F0AB
+:102600009CFCB089002108F09DF9002804D08A487C
+:102610008849BD3012F091FC297F688B09F047FB97
+:10262000002831D084488349C13017E008F068FEA3
+:1026300000282AD1287F002827D0012825D0042867
+:1026400023D008F005FA00281FD0297F688B09F0F5
+:102650002EFB002818D078487649D53012F06DFC52
+:1026600012E0002009F056FA00280ED12771287CCC
+:1026700000280AD1B089FFF795F806E0FFE70020AF
+:1026800009F048FA002800D127711B20E0700120D2
+:102690002070F8BD70B5664D04462878002804D136
+:1026A00028464030007E002804D0634861498130CC
+:1026B00012F043FC20781F2801D8601C04D10F20A1
+:1026C0005C49800112F039FC002028712078611CDF
+:1026D00008F066FA012068711A21E970287070BD4F
+:1026E000F8B5534D044628780C272E46403600286E
+:1026F0000AD1307E002807D108F0FEFD032803D060
+:1027000008F0FEFD032804D14B484A49473012F037
+:1027100014FC6079002801D0012829D1A079002873
+:1027200001D0012824D1A07B002805D0012803D0A6
+:10273000022801D003281BD1607B400718D0628893
+:1027400001208003824202D82188814201D9207968
+:102750000CE02079002804D0022805D0032803D0FB
+:1027600004E0202A12D20CE0A0290FD201280DD0BB
+:102770002079042805D12088202802D36188884246
+:1027800004D92D482B495D3012F0D7FB2088708387
+:10279000207930776079002802D0012803D00CE03E
+:1027A000284A002105E0224A60329079002804D0AE
+:1027B0000121204608F050F9074601202F71687169
+:1027C0001821E9702870F8BD70B5194C05462078BD
+:1027D000002804D120464030007E002803D015494F
+:1027E000194812F0AAFB08F087FD0C2102280ED12F
+:1027F00013482A8883899A4228D10246C032137F1F
+:10280000002B04D1807E0E2803D00F2801D0217127
+:1028100003E005201077002020710E20A0702E20EC
+:10282000E0702888E08001206071207070BD000099
+:10283000E0020020B01B00003E0300000004002066
+:10284000D801002025000020D30400000220E3E787
+:1028500070B5814C05462078002804D120464030D0
+:10286000007E002803D07D497D4812F066FB08F009
+:1028700043FD0C2102280ED17A482A8883899A4286
+:102880001FD10646C036327F002A04D1807E0E2832
+:1028900003D00F2801D0217109E06F481022A91C34
+:1028A0001E3812F0AEF904203077002020710E207F
+:1028B000A0702D20E0702888E080012060712070D9
+:1028C000B4E70220F2E710B501780B0012F026FC05
+:1028D0003D878738878758878787873B3E878787E5
+:1028E00051548787878787874228872C3087878737
+:1028F00087348787878787878746874A4E8720243C
+:10290000876B5B5F6367876F877E827B77738700E8
+:10291000801CFFF79DFF60E0801CFFF755FF5CE027
+:10292000801CFFF7DDFE58E0801CFFF7B3FE54E08B
+:10293000801CFFF705FE50E0801CFFF7DBFD4CE03C
+:10294000FFF7A9FD49E0FFF78EFD46E0801CFFF789
+:1029500012FD42E0801CFFF7E8FC3EE0801CFFF720
+:102960008DFC3AE0801CFFF758FC36E0FFF73BFC9B
+:1029700033E0FFF712FC30E0801CFFF7D0FB2CE0C7
+:10298000FFF7B1FB29E0801CFFF77BFB25E0801CF3
+:10299000FFF755FB21E0801CFFF70DFB1DE0801CBD
+:1029A000FFF7DBFA19E0801CFFF7B8FA15E0801C8E
+:1029B000FFF76EFA11E0801CFFF725FA0DE0801C8E
+:1029C000FFF7EFF909E0FFF7CAF906E0801CFFF70F
+:1029D0009BF902E0801CFFF77AF9012010BD00206E
+:1029E00010BD10B51D49204812F0A7FA10BD70B5F2
+:1029F000194A012411461B4D4031030012F08EFB91
+:102A000005191C1C04191C0001220021154807F09F
+:102A100019FC11480021483801774177C03809F086
+:102A2000C2F9002804D010480C49D33012F085FABE
+:102A3000FCE60C745565F9E608490C48F6E730B534
+:102A4000134606E0CC18203CE47FD51A44555B1EA3
+:102A5000DBB2002BF6D130BDE0020020B01B00003D
+:102A6000A7040000D8010020430600004907000029
+:102A700010B56038030012F051FB0A060A0F131854
+:102A80001F262A31363B086800F090FD10BD05C9AD
+:102A9000114600F0AAFD10BD086800F044FE10BD0C
+:102AA00005C9114600F048FE10BD4B6808788A68D9
+:102AB000194600F053FE10BD4B688A680868194635
+:102AC00000F067FE10BD086800F07CFE10BD0888AD
+:102AD0004A6880B2114600F098FE10BD05C9114643
+:102AE00000F0C4FE10BD05C9114600F0FAFE10BD8D
+:102AF000012010BD0120704701203F4940060860B9
+:102B00003E4908603E490A68FF231B029A4383122C
+:102B10001A430A60384980390860704710B5024688
+:102B20000420384904E0C3005B181B79002B0AD04D
+:102B30000346401EC0B2002BF5D133A1432012F052
+:102B4000FCF9FF2010BDC300CA50002259184A7179
+:102B50008A7101220A7110BD2A4A0021C000801822
+:102B60000171704710B50446042803D326A15220F2
+:102B700012F0E3F92348E1000C182079012803D072
+:102B800021A1532012F0D9F96079A179401CC0B27B
+:102B9000814200D0607101201749400680310860F1
+:102BA00010BD70B5164800680004800F022803D0DD
+:102BB00015A1692012F0C1F9124E194C0325207895
+:102BC000C10088190279012A07D1427983799A4292
+:102BD00003D042798271705880472078401CC0B27F
+:102BE0002070042801D30020207028466D1EEDB20D
+:102BF0000028E4D170BD000080E100E080E200E048
+:102C000018E400E02C1200207372635C736F635F42
+:102C10007369676E616C6C696E672E6300000000FB
+:102C20003C00002010B5EFF31080C407E40F72B62B
+:102C3000D6484178491C41704078012801D10FF0F5
+:102C400021F9002C00D162B610BD70B5CF4CE078F0
+:102C500000280AD10125E570FFF7E4FF0FF01AF90B
+:102C6000002804D000200FF0EDF8002070BDC84807
+:102C700065714560F9E770B5EFF31080C507ED0F9A
+:102C800072B6C24C6078002803D1C2A18F2012F026
+:102C900054F96078401E60706078002801D10FF010
+:102CA000F5F8002D00D162B670BD10B5B748C178F7
+:102CB000002904D000214171C170FFF7DCFF002022
+:102CC00010BD10B504460FF0E5F8B049C9780840CA
+:102CD00000D001202060002010BDF8B50246AB4CAA
+:102CE0000026A6710820042101251027130012F0E8
+:102CF00015FA0D080A0C0E101214161E2621232593
+:102D00002800257122E0022001E021711EE02071DF
+:102D10001CE027711AE02020F9E7012616E0FFF7F2
+:102D200081FF0FF0B7F80028FBD002260EE02171DA
+:102D3000A5710BE02771FBE7202000E04020207107
+:102D4000F6E7FF2093A17E3012F0F7F80FF0AEF80F
+:102D5000002809D00FF0B0F8B04205D130460FF08E
+:102D6000AEF80028FAD024E001208007C5608D4A23
+:102D7000002151608C4A9661854B02225A60856021
+:102D80008A4803690569DB43DB06DB175B1C1027F8
+:102D90003D430561834D00E020BF6F68002FFBD0ED
+:102DA000002B03D1076910239F4307617848826095
+:102DB0006960A07900280CD00FF06CF805460EF081
+:102DC000C9FF7B4A002D02D0A260E06001E0E26012
+:102DD000A060002E01D100F0B1F8F8BD10B5044696
+:102DE0000FF05EF8002805D068490120C8704A78C5
+:102DF000521C4A702046FFF770FF10BDF8B5694FAE
+:102E0000B8680025012802D1BD600FF01BF8786872
+:102E1000012800D17D60386801265C4C012814D15E
+:102E20003D606079002803D000200FF00BF8657139
+:102E30002078002809D00FF02DF8002805D0594837
+:102E4000C038866300060661A670386901282CD157
+:102E50003D6100F068F8012080074661A0790028F4
+:102E600015D00FF017F800900EF074FF00990029AC
+:102E700001D0E16800E0A168411A022901DA8A1C48
+:102E800013DC0099002901D0E06000E0A060FFF7AA
+:102E9000C9FE0EF0FFFF002806D04248C038866306
+:102EA00000060661A67000E02670F868012819D1B6
+:102EB00000F039F800F037F800F035F8A078002875
+:102EC00004D1FF2033A1053012F037F8FD60A57062
+:102ED0002570FFF7D0FE0EF0B4FA002802D031487A
+:102EE000C038C663F8BD10B5284CE078002801D181
+:102EF0000EF0CCFF01208107886100F014F8A07863
+:102F000000280BD0274CE068002803D10EF0D7FF33
+:102F10000028F8D10020E06000F005F800201C49EE
+:102F2000C043886010BD08B55020694608806A46D5
+:102F30001088411E11800028F9D108BDF8B5144849
+:102F400019278760174900200860C8600EF0A2FFAB
+:102F5000BD0701240D4E002805D01248C0388463F7
+:102F60002C61B47000E03470FFF75CFE08484760E5
+:102F70000D4930798863FFF7D6FFAC61FFF7D3FFC7
+:102F80000849002008616C61F8BD00004000002085
+:102F9000000300407372635C736F635F636C6F6305
+:102FA0006B2E6300000100400005004000ED00E0D2
+:102FB000FFFFFF7F10B510F020F810BD002004497E
+:102FC000C863012001218140024A116000BF70479F
+:102FD000C01F004080E200E010B504460BF051F83D
+:102FE00020460CF066F810BD704770477047704778
+:102FF0007047704770477047704770477047704719
+:1030000010FFFFFFDBE5B151006001005A00FFFF38
+:1030100003B40148019001BD09000020FE49487039
+:10302000704710B5030012F079F8080E050E080875
+:103030000B0B0E1104F06BF810BDFFF7CDFF10BDA8
+:103040000DF0A0FF10BD01F077FE10BDFF20F3A131
+:103050009A3011F072FF10BD7FB5F44905464868FB
+:103060008968082301910090F14A1946F1480EF051
+:1030700043FD0024F0480EF05DFD641CE4B2082C12
+:10308000F8D3EB490320803140020CF0E7F8002828
+:1030900003D0E2A1BF2011F050FF1E220221E74819
+:1030A0000AF09FFCE5481E22032110300BF013FAB2
+:1030B000E2480722342174300AF0ECFBDF484C214F
+:1030C000283011F0FDFDDD496A46743108464C3860
+:1030D0000164FF317B31416401211172039002F0E0
+:1030E000AAF802A80CF008FC002803D0CBA1D3203A
+:1030F00011F023FFCF4802222421A8380AF0CAFB8E
+:10310000CC4802222C215C380AF0C4FBCC490B20AD
+:103110000EF03AF8002803D0C0A1E02011F00DFF16
+:1031200003F0DEFF03F0E2F904F03EFE6B460022FE
+:103130000821C4A001F06EFF002803D0B7A1E7204A
+:1031400011F0FBFE284605F049F9002803D0B3A191
+:10315000E92011F0F2FE8521C900BD4811F0B0FD53
+:10316000BB49B24A0020135C0C18401CC0B2E3708B
+:103170000428F8D3A849002048608870C8707FBD33
+:1031800070B5B44E0546706A94B00C46401C04D12C
+:10319000B06AC0430004000C0BD0306AC007C00FF7
+:1031A0002870706A11F09FFDB06A2071000A60718A
+:1031B00014E02B206946087009A968460AF0B0FBA4
+:1031C000002804D0FF2095A10E3011F0B6FE01209A
+:1031D000287006220AA9204611F013FD287800283D
+:1031E00003D06079C0210843607114B070BDF0B5A0
+:1031F000984C0646206895B00D463746401C083767
+:10320000002808D16068401C05D1A068401C02D18C
+:10321000E068401C11D02068314611F064FD606800
+:10322000311D11F060FDA068394611F05CFDE068C9
+:1032300031460C3111F057FD25E02B20694608700E
+:1032400009A968460AF06CFB002804D0FF2073A18E
+:10325000373011F072FE08220AA9304611F0D1FC75
+:103260002B206946087009A968460AF059FB002816
+:1032700004D0FF2069A13E3011F05FFE08220AA9A8
+:10328000384611F0BEFC20692E46401C0836002846
+:1032900008D16069401C05D1A069401C02D1E069D9
+:1032A000401C12D02069294611F01DFD6069291DBE
+:1032B00011F019FDA069314611F015FDE0692946AC
+:1032C0000C3111F010FD15B0F0BD2B2468460470D0
+:1032D00009A90AF025FB002804D0FF204FA15C308B
+:1032E00011F02BFE082209AF0AA9284611F089FC2B
+:1032F0006846047009A90AF013FB002804D0FF20D7
+:1033000046A1633011F019FE0822391D304611F034
+:1033100078FCD8E710B5002108460EF0C3FC002168
+:1033200001200EF0BFFC002102200EF0BBFC0021AA
+:1033300003200EF0B7FC002104200EF0B3FC0021A6
+:1033400005200EF0AFFC10BD10B5414CA0780B2845
+:1033500004D3FF2031A1B33011F0EFFD20786021BC
+:10336000484300190830002101704178E722C9085C
+:10337000C900C91C11404170274A0121917010BD3C
+:1033800070B5254CA07800280ED031480025017872
+:10339000491CC9B201700B2900D105708178491C04
+:1033A00081700EF04AFDA57070BD70B51A4C0546CF
+:1033B0006068002804D0FF2018A1DC3011F0BDFDAA
+:1033C000656070BD70B5144E214DFFF7BDFF71688B
+:1033D0000446002907D06022FDF7F6FEFFF7D0FF74
+:1033E00000207060F1E72879002876D011485C3819
+:1033F0000AF060FA6060002804D1FF2007A1FA30CB
+:1034000011F09BFD60680AF0B3FA002831D0204625
+:1034100000F03FFF60781FE0340000207372635CAF
+:10342000686F73745F636F72652E630048510100AB
+:10343000040400200C12002023300000840A002025
+:10344000B41000206E524635313832320000000090
+:103450008C0C002080000010010707D5C008C000B8
+:10346000401C60702879401E287127E0F748616889
+:103470002AE0F64861680AF026FA687900282CD01C
+:10348000F2484C380AF016FA6060002804D1872010
+:10349000EF49800011F051FD60680AF06DFA0028D4
+:1034A00016D0204603F072FE6078010709D5C008E7
+:1034B000C000801C60706879401E6871FFF760FF73
+:1034C00083E7E24861684C380AF0FDF97DE704E0E3
+:1034D000DE4861684C380AF0F6F970BDF7B505466C
+:1034E0000078002700090C463E46062803D0D8493C
+:1034F000D84811F022FD287A00280ED0012814D0D7
+:10350000D448D349213011F018FD0298002C0680D0
+:1035100001D0278066800020FEBD02270926002CEE
+:103520000ED0A889A080A87B08E003271426002CD1
+:1035300006D02869E060A88A2082287B2072E4E710
+:1035400002980680E7E770B50E4600211C461980F8
+:103550001546030011F0E2FD0723050B1711231D8B
+:10356000230022462946304603F0DCFD70BD22468A
+:103570002946304601F051F970BD224629463046B1
+:1035800004F00DFB70BD22462946304602F0E2FFF2
+:1035900070BD224629463046FFF7A0FF70BDAD48FA
+:1035A000AB49473011F0C9FC032070BD10B5AA4CDF
+:1035B0002178002901D0082010BDFFF74DFD012022
+:1035C0002070002010BD0146A04810B54C380AF00C
+:1035D0007AF9A2494879401CC0B24871012803D148
+:1035E0009D484078FFF7BEFA10BDF8B505469C48E7
+:1035F0000F46814208D3002D01D0854204D3E81C38
+:1036000080088000A84201D01020F8BD934881783E
+:10361000002911D0398800914178602251430C185B
+:10362000083420783B460007000F00222146FFF7B0
+:103630008AFF060004D015E0002038800520F8BD80
+:10364000002D13D039880098814201D90C260DE055
+:1036500020783B460007000F2A462146FFF773FFFC
+:10366000060005D00C2E01D0002038803046F8BD71
+:103670007A4D6878401CC0B268700B2801D10020D8
+:103680006870A878401EA87061784807400F02282B
+:1036900010D00128EAD16D4861680AF014F9287940
+:1036A000401CC0B228710128E0D16B484078FFF778
+:1036B00059FADBE7C806D9D46068FFF784FFD5E77D
+:1036C00070B50446674816460D46814204D16148EC
+:1036D0005F49C53011F031FC012E05D05D485C49D1
+:1036E000D53011F02AFC70BD5B480121C170662005
+:1036F000207000202072A581A17370BD70B51646A0
+:103700000D46040001D1FFF71FFE66210170012163
+:10371000017229680161A98881820673002C01D198
+:10372000FFF72EFE70BD4E49884201D2102070472F
+:1037300007210170002070474B4A10B5904208D312
+:103740000124A404464AA04201D3904201D39142ED
+:1037500001D2102010BD0DF050FD10BD424B10B530
+:10376000994208D30124A4043D4BA14201D39942BC
+:1037700001D39A4201D2102010BD022803D0102894
+:1037800001D0092010BD0DF05EFD0028FAD0052003
+:1037900010BD354B10B598420CD30124A404304B16
+:1037A000A04201D3984205D3994203D3002A03D003
+:1037B0009A4201D2102010BD0DF06BFD0028FAD006
+:1037C000072010BD10B50446254894B0844202D2AB
+:1037D000102014B010BD01F09AFD002801D0112076
+:1037E000F7E70F2008A9087369460BA80AF098F8B4
+:1037F0000028EED16846007A2070684640896080D3
+:1038000068468089A0800020E3E710B5124C084686
+:10381000E17800290ED000280AD0114A904202D344
+:103820000368934201D2102010BD8288002A03D081
+:10383000012903D0082010BD092010BD04F018FB99
+:103840000028FAD10021E17010BD0000B011002065
+:103850001C3400003E020000340000208C0C0020CC
+:1038600000200020FFFF00000060010010B5244A86
+:1038700094B091420DD301229204224B914201D384
+:10388000994206D3441E1E2C24D8914203D3994258
+:1038900001D210209DE701281AD108780024C00722
+:1038A000C00F002803D001206946887001E06846F7
+:1038B000847039206946087009A968460AF030F812
+:1038C000002803D010498C2011F037FB204680E7F8
+:1038D00007207EE70246203A1F2AF9D801F03AFC79
+:1038E00077E7084A10B5914201D21020ACE70246B2
+:1038F000203A1F2A02D801F083FCA5E70720A3E79E
+:1039000000600100002000201C3400008107C90E67
+:10391000002808DA0007000F083880082C4A8000C9
+:103920008018C06904E080082A4A80008018006876
+:10393000C8400006800F704710B50D20FFF7E6FF66
+:10394000C4B20420C043FFF7E1FFC0B2844203D0F9
+:1039500021A11A2011F0F1FA10BD0121234A4803D8
+:103960001060234B00221A60224A5160224A1060E4
+:10397000224A11601D4980390860704701211B4AA5
+:10398000480310601D4A5160194A002111601A490C
+:103990000860704710B516490868012804D00EA1C8
+:1039A000562011F0CAFA10BD154880680022C0B236
+:1039B0000A600DF09DFE10BD10B50D48016800298C
+:1039C000FCD0FFF7E7FF01200B494003086010BD62
+:1039D00000ED00E000E400E07372635C736F635F0E
+:1039E00068616C5F726E672E6300000080E100E02A
+:1039F00000D1004000D3004080E200E000D0004051
+:103A000000D5004030B40121BC48C9020160CD108E
+:103A100005604A030260BA4803681B021B0A036080
+:103A200004680023240A24020460B6480468240AB7
+:103A300024020460B448012444608460B34C2360D1
+:103A40006360A360B24B19601D601A60B14B1960CE
+:103A50001A600121016030BC704710B40121A748F1
+:103A6000CC0204600A0202600B060360A6484160B3
+:103A70008160A6490020086048608860A44804600E
+:103A80000260036010BC70470121A148C9020160B7
+:103A9000C91001607047002805D0012805D0022810
+:103AA00005D19D4870479D4870479D48704710B5A7
+:103AB0009CA18B2011F041FA002010BD70B50021AF
+:103AC0009F4CA04DA04A914B002808D001281DD042
+:103AD000022822D093A1B32011F02FFA70BD01204B
+:103AE0000004A060A86011601960984B42109A60B1
+:103AF000974A9060814A001210609648016087489A
+:103B00000160954801609548017070BD0120400436
+:103B1000A060A8605160596070BD01208004A06061
+:103B2000A8609160996070BDF8B59446844A854D4F
+:103B300000240127754E002808D0012836D002281D
+:103B400044D078A1E82011F0F8F9F8BD891E0902E7
+:103B5000090A012000049060346068607A4A1160AC
+:103B6000012B21D000217D4A7D4B517061463D31B2
+:103B7000DC63DF637B4B5C6002249C6004241C617B
+:103B8000744B196074490F60614B89151960704B53
+:103B900058606048016075487349C16086606B4930
+:103BA000600348601770F8BD0121DCE701205C4E1E
+:103BB00040046F4F012B04D134605060686039605D
+:103BC000F8BD9060346068603960F8BD0120524EE5
+:103BD0008004684F012BF4D1EEE7674840687047D6
+:103BE00070B54A4D28680026554C012806D1A068BA
+:103BF000C00303D501200004A0602E60686801287E
+:103C000009D1A068800306D501204004A0606E6041
+:103C100001200FF02EF9A868012809D1A0684003FF
+:103C200006D501208004A060AE6002200FF021F9CB
+:103C300070BD10B549490878002818D00120434AC2
+:103C4000C0039060424A400090602C4A001210600D
+:103C5000404A00201060314A10603F4A10600870EE
+:103C60004A78002A02D048700FF003F910BD0320F3
+:103C7000FAE7012041490006086070470120244905
+:103C800000060860704701203C4940050860704705
+:103C900001201F4940050860704731490020C86372
+:103CA00088151B4908607047410A354AC005C00D98
+:103CB0005043801C5143400A0818704710B4314CDF
+:103CC000430B63431B0C5C020C602D4C6343C31A13
+:103CD0002D485C0258432A4B400D4343E31A01240C
+:103CE000DB0324041B191B1613700A6810180860E4
+:103CF00010BC704710B50FF094F910BD80E100E0E2
+:103D000008E400E018E400E000B0004040B10040EA
+:103D100080E200E000E100E048B100404081004066
+:103D200044B100407372635C72656D5F68616C5F83
+:103D30006576656E745F74696D65722E6300000050
+:103D400000B3004040B3004040B5004000F50140E2
+:103D50000083004040850040008200405000002069
+:103D6000C08F0040008500400080004080F5014089
+:103D700044B5004048B5004000B5004000E200E016
+:103D8000093D0000378600006F0C01000E4A1268E2
+:103D90000C498A420AD118470B4A1268094B9A42C9
+:103DA00004D101B50DF0BFFD03BC8E46074909687B
+:103DB0000958084706480749054A064B704700005E
+:103DC00000000000BEBAFECA1C0100200400002052
+:103DD000881D0020881D002010B5F84C94B0216883
+:103DE000087A002836D017206A46107000A80622EC
+:103DF0000931023010F005FF09A9684609F090FD6D
+:103E0000112825D02168C0318979062920D00729B9
+:103E10001ED008291CD004291AD0092918D00A2933
+:103E200016D00B2914D0052912D0002803D0E4A104
+:103E3000F42011F082F82168B820405806221C3086
+:103E4000093110F0DEFE2068017A8030806BC17687
+:103E500014B010BD3220C7E770B5D84D04462968AC
+:103E60000300C03111F05AF90C077C0B1A212E3BCC
+:103E700048515C677080FF20D1A10A306EE08879DC
+:103E800001286DD009286BD0052869D00A2867D091
+:103E90000B2865D0FF20CAA10F305FE08879012888
+:103EA0005ED0FF20C6A1163058E08879062857D08A
+:103EB000072855D0082853D0052851D0FF20C0A18D
+:103EC00019304BE0887909284AD00A2848D00B28B5
+:103ED00046D0042844D0FF20B9A11F303EE08879A5
+:103EE00003283DD007283BD0082839D0092837D0EF
+:103EF000FF20B3A1253031E08879062830D00A2888
+:103F00002ED0FF20AEA12B3028E08879062827D0BC
+:103F1000072825D00B2823D0FF20A9A12F301DE092
+:103F2000887906281CD00A281AD00B2818D0FF2020
+:103F3000A3A1343012E08879092811D00A280FD0C3
+:103F4000FF209FA1393009E08879092808D00A2884
+:103F500006D0082804D0FF2099A13D3010F0EDFFD5
+:103F60002868C030847170BDFF2095A14230F5E70C
+:103F70009249C9220968525CD206920F05D1A0313C
+:103F80008A8B824201D1887F70470020704770B5CC
+:103F90000446112020700021884D61702968C031CD
+:103FA000897A002908D003290ED0042910D0FF20D7
+:103FB00083A16B3010F0C1FF20780009012802D9DD
+:103FC0002868807D607070BD0007000F203002E01F
+:103FD0000007000F30302070EEE730B503887C49D1
+:103FE0007C4C8B4202D09A1FA2421ED242888A4247
+:103FF00002D0951FA54218D2934216D883887D24FB
+:10400000E400A34211D8C088884205D0714D04460F
+:104010000A3C2D1FAC4208D2884208D08A4206D002
+:104020005B1C5A43C000824201DD072030BD0020E6
+:1040300030BDFFB50022099B002802D0994205DC63
+:104040005CE0002902D1002004B0F0BD0920FBE7AC
+:10405000845C002C12D085186F780D2F4CD010DCAA
+:104060003B0011F05BF80A421B2A2A303032323A08
+:104070003A42835C002B3FD1521CD2B28A42F8DB19
+:10408000E1E7122F31D004DC0E2F35D00F2F2CD1C9
+:1040900032E0142F11D0152F27D116E0022CD5D1E4
+:1040A000AB78039C072B237001D25B0701D40A2055
+:1040B000CAE7029B01241B7814E0E343DB0708E016
+:1040C000012C08D011E00620BEE70F2523072D079D
+:1040D0005B19002BF4D03046B6E7029B1B789C0797
+:1040E0000AD402242343029C2370835C521C9A1836
+:1040F000D2B28A4204DDA9E70B20A5E71926760291
+:104100008A42A5DB9FE705E00278401C002A01D027
+:10411000002070470A46491E89B2002AF4D10120C6
+:10412000704770B5254D00212868C943A0308183B0
+:1041300000248477214606200DF0B4FD00210520DF
+:104140000DF0B0FD002102200DF0ACFD0120FFF7C5
+:1041500083FE2868C030C471047201F062FF70BD34
+:1041600030B5164C95B02268C0329279042A0CD032
+:10417000052A0AD028236A4613705080132906D0D6
+:104180003B2904D0072015B030BD0820FBE7117192
+:10419000104609A909F0C4FB05000BD12068C03006
+:1041A0008179062908D0082906D0072904D00520DE
+:1041B000FFF752FE2846E6E70420F9E75400002006
+:1041C0007372635C6761705F636F72652E6300007A
+:1041D000FFFF00007B0C000030B587B0040003D067
+:1041E000002107200DF05EFDF74D012128686A4689
+:1041F00001720421117003210C300DF053FA29686B
+:104200004022887B8006800E1043887368460BF03E
+:1042100094FB00280DD12968098A00290AD0002CB6
+:1042200008D08B000122002107200DF096FC072802
+:1042300002D0032007B030BD0020FBE770B5002599
+:104240000646002803D0002107200DF02BFDDE4C90
+:10425000012120680172062109300DF023FA20683F
+:10426000817B8906890E8173FFF7B6FD2068008A7D
+:1042700000280AD0002E08D0830001220021072048
+:104280000DF06BFC072802D00325284670BD0025E1
+:10429000FBE7F0B59BB0040003D1CC49CC4810F04B
+:1042A0004CFE72202070616800260A780825521F93
+:1042B0000127C548130010F031FF0F097CDFFD7C9A
+:1042C0007EFCFBBB7C7C7C7CFAF97C00BE480068F1
+:1042D000C0308079032804D0BD48BC49093010F0B3
+:1042E0002CFE002108460DF0DDFC002107200DF01A
+:1042F000D9FC6078B44A28436070106810250146E4
+:10430000C0314B7A2B434B7263689D783C2D4DD066
+:1043100002469D88A032977763688030DB890B80E6
+:1043200063681B8A4B8063685B8A8B8095836168B6
+:10433000826BC97911756168806B0831153006226E
+:1043400010F05FFC0620FFF787FD9F48FB23006805
+:104350000146C0318E72027E1A400276B82212588F
+:10436000937A9B089B0093724682487A4006400EDF
+:104370004872284602F0C0FE002804D094489349B1
+:10438000243010F0DAFD284602F0D0F8002804D0DE
+:104390008F488E49273010F0D0FD284603F016FDD7
+:1043A000002806D08A48894929303EE10120FFF7DC
+:1043B00053FD1BB0F0BD074600688E88C030807981
+:1043C000062812D0072810D008280ED004280CD0B8
+:1043D00009280AD00A2808D00B2806D0052804D0BE
+:1043E0007B487A49353010F0A8FD6078284360702A
+:1043F0003868C030417A294341728079092811D048
+:104400000A280FD00B280DD005280BD0FFF789FE06
+:10441000304602F07AFE304602F08EF8304603F065
+:104420000BFDC6E7FFF77DFE0220FFF715FDEFE766
+:104430000068C0308079062812D0072810D00828DC
+:104440000ED004280CD009280AD00A2808D00B283E
+:1044500006D0052804D05E485C49593010F06DFD47
+:104460006068807902F004FF0028A2D061782943B7
+:1044700061706168C8809CE707460068C030807939
+:10448000062812D0072810D008280ED004280CD0F7
+:1044900009280AD00A2808D00B2806D0052804D0FD
+:1044A0004B484A496C3010F048FD04E037E1A1E187
+:1044B00090E090E015E06078284360706068C18803
+:1044C0003868C03001806168098941806168498924
+:1044D0008180002102200DF0E5FB3868C030C671F4
+:1044E00067E706460068C0308079062819D007289B
+:1044F00017D0082815D0042893D0092811D00A28ED
+:104500000FD00B280DD005288BD031482F49833090
+:1045100010F013FD3068C03080790428ABD0052836
+:10452000A9D03068807C40063AD5606802210C3002
+:10453000FFF7E9FD002833D060680821001DFFF770
+:10454000E2FD00282CD03168B8204058807A8007DE
+:1045500008D1CA20405C002808D1488AC20505D588
+:10456000C00703D1488A4022904348824A8A80206B
+:1045700082434A822D2268460270BC20425A684615
+:1045800042801022973101A810F03BFB09A9684630
+:1045900009F0C6F90028A3D03D200C49000144E0F1
+:1045A00062683068AC2192890A5261680822091D4C
+:1045B000AE3010F026FB10A805743068AE301590B0
+:1045C00014A80BF0BAF9F4E654000020C041000032
+:1045D000260300008F7106460068C03081790629E5
+:1045E00019D0072917D0082915D00429EBD009299B
+:1045F00011D00A290FD00B290DD00529E3D0FD20B9
+:10460000FA49800010F099FC3068C03080790428A5
+:10461000D9D00528D7D060688179002902D0807868
+:10462000002805D02320F149400110F086FCC0E6A7
+:104630006078B8212843607030680958897A890702
+:10464000890F012951D1817C09064ED4017E490789
+:1046500001D5042100E00321C03081722B2069467E
+:10466000087009A9684609F05BF9002803D0DF4902
+:10467000DF4810F062FC68463168008D88820E22A7
+:1046800010A80274DB48B8221590525808324261D3
+:104690000A4660324260927902700A461432026120
+:1046A000521D82601032C260133A82619632C2613A
+:1046B000921C0262473A4262103282621032C26237
+:1046C000473AC263521E0264921F503142648164B1
+:1046D00014A80CF01BFB022815D0002813D0C448E6
+:1046E000C249293010F029FC0DE0817C4906017E89
+:1046F000490701D5042100E00321C0308172002167
+:1047000006200DF0CFFA3068418A0A0602D4402212
+:104710009143418289B280229143418249E6B64861
+:104720000068C0308079032804D0B148AF495730C1
+:1047300010F003FC002108460DF0B4FA0021072018
+:104740000DF0B0FA6078AC4A28436070106810250C
+:104750000146C0314B7A2B434B7263689D783C2DE8
+:1047600000D123E602469D88A032977763688030A7
+:10477000DB890B8063681B8A4B8063685B8A8B8054
+:1047800095836168826BC97911756168806B0831A6
+:104790001530062210F035FA0620FFF75DFB96482B
+:1047A000FB2301680A46C0329672087E18400876DC
+:1047B0004E82507A4006400E5072284602F09CFC11
+:1047C000002804D08A488949723010F0B6FB284688
+:1047D00001F0ACFE002804D085488449753010F003
+:1047E000ACFB284603F0F2FA002897D080487F49B6
+:1047F00077301AE7607828436070DAE500290BD03B
+:1048000088807D480068C0300288CA8002880A819A
+:1048100042884A81808888817047F7B506460078CB
+:104820000C460027010982B03D46012974D0724828
+:1048300000680090C03002296FD0072904D00A29EF
+:104840006CD06A496D480DE271680A78521F1300F6
+:1048500010F064FC0F09A451A4A42F585847A4A435
+:10486000A4A4656FA4008A783C2A1BD010271625C3
+:10487000002C7DD08888A0807068A21DC08920820D
+:104880007068C089E0817068008A60827068408AC0
+:10489000A082716808460831C07901F0B1FB0020A0
+:1048A000607375E019270725002CE2D00021A17163
+:1048B00071E011270725002CDBD089880091A180A9
+:1048C0007168F7228979A171417A1140417200988B
+:1048D00002F01CFC009801F033FE009803F0BAFAD5
+:1048E000D2E101270925002CC3D08888A0807068F8
+:1048F00080792072C8E1888812270E252146FFF7AB
+:104900007DFFC1E118270825002CB2D08888A0803F
+:10491000A01DFFF73CFBB7E144E0A6E15CE01A27ED
+:104920000725002CA5D04888A08070680079A07168
+:10493000AAE18A783C2AB5D010271625002C98D0F9
+:104940008888A0807068C08920827068C089E081F2
+:104950007068008A60827068408AA0827168607B9B
+:10496000497D40084000C907C90F0843607300E053
+:1049700093E17168C007497DC00F490849000843A9
+:1049800060737168A21D08460831C07901F038FBD8
+:1049900019480068C030417AEF2273E1A72013491B
+:1049A000C0005FE1307A012803D014480F49C838AD
+:1049B00058E112270E2570892146FFF71FFF002CB2
+:1049C00092D070784007400F032889D10A480068C8
+:1049D000C030417AFB2255E107490968A031002C1B
+:1049E00001D08A8BA280327A921E09E0C041000079
+:1049F00015040000AC12002054000020170600002F
+:104A0000130010F08BFB073D4853FDEB6F05FD00D5
+:104A100013270C25002C85D0009900224A82F168CA
+:104A200089788907890F0129217A26D04908490008
+:104A30002172FD231940F3689B785B07DB0F5B0055
+:104A400019432172E323E2801940F3681B785B0766
+:104A5000DB0E19432172DF231940F3685B78DB0713
+:104A60009B0E194321726272F1680122C978A1720A
+:104A7000017A1143F7221140ADE001231943D7E732
+:104A800015270C25002C9BD0F06806220068A11D7C
+:104A90000EF05CFFF8E016270725002C90D0317B44
+:104AA000A171017A08221BE00172EDE014271225A2
+:104AB000002C85D00098A21D8030806B01461531F6
+:104AC000007D01F09DFAB089E081207C012108433E
+:104AD000F92108402074FD480068C030017A0222A4
+:104AE0001143E1E717273825002C94D03221A01D6F
+:104AF00010F0E4F80020A071207A0321084320720E
+:104B0000FB210840F14909680A7E5207D20F920042
+:104B100010432072B8204058807A800757D0A07A7E
+:104B20008A7C4008D2074000D20F1043FD2210407B
+:104B3000A0728B7CFB229B07DB0F10409B0018436D
+:104B4000A0728B7CF7269B07DB0F3040DB001843FD
+:104B5000EF231840A072E07A10408A7CD206D20F70
+:104B600092001043E0728A7C3040D206D20FD2000D
+:104B70001043E072888AA0812046102267310E30EF
+:104B800010F03FF8D149A07F0968C0078A7DC00FA7
+:104B900052001043A0770A7E400852074000D20F0F
+:104BA0001043A077084640304DC820344DC4303CF7
+:104BB0003F20405C22463032393101F021FAC348AF
+:104BC00000688030806B817A890889008172BF48D3
+:104BD0000068C030017AFB22114065E7327B022A6F
+:104BE00018D017273825002C11D0017AFB23194043
+:104BF0000172012A17D0032A22D0042A23D000E010
+:104C00002DE0052A1FD0B249B24810F096F901F004
+:104C100008FA39E019270725002CF8D0898BA180E4
+:104C20000121A17103E00121A1710021E171417A0B
+:104C3000CA094906D201890E49000A434272E6E7D1
+:104C40000220A07106E0707B0007000F8030A07189
+:104C5000052A02D00020E071D9E70120FBE79D483A
+:104C60009B490C3010F069F90EE0317A00290BD124
+:104C700019270725002C10D0491EA1800021A17101
+:104C8000417AFD22114041720498002C058001D028
+:104C900027806580002005B0F0BD04980580F9E705
+:104CA00010B58A4C94B02068C0308079022809D0B1
+:104CB000032807D0052805D0092803D00A2801D0E9
+:104CC0000B2837D11B2108A8017300218173694685
+:104CD0000BA808F025FE002804D1684640781B2860
+:104CE00002D0032014B010BD002108460CF0DAFFFA
+:104CF000002107200CF0D6FF68468078002819D1E3
+:104D00002068C0308079801E030010F007FA0A0680
+:104D10000613081313130D0F1113012000E00420D4
+:104D2000FFF79AF80020DDE70620F9E70720F7E70C
+:104D30000820F5E70820D5E770B50025634C00286A
+:104D400007D0022817D0072828D062486049793058
+:104D500046E0FFF7A5FF00280CD1FEF7F5FA222167
+:104D600001700572FEF70CFB2068C030417A022208
+:104D70001143417270BDFEF7E7FA12210170012163
+:104D800001722168BC22525A4281C031CD71FEF7B6
+:104D9000F7FA2068C030417A0422E9E72168C6208A
+:104DA000405C022809D0032807D0092805D00A282A
+:104DB00003D00B2801D00528DCD1887B810901298B
+:104DC00011D0800904D043484149703010F0B5F843
+:104DD0000020FFF733FA0028CCD03E483C4974301D
+:104DE00010F0ABF870BD0020FFF7F6F9F3E770B5EF
+:104DF0000D46040004D137483549813010F09DF844
+:104E00002078012805D0334831499F3010F095F8BB
+:104E100070BDA18830482D4E814209D1E28882427E
+:104E200006D130681321A030808BFFF799F970BD4F
+:104E3000814202D1E08800280AD0122028706878C8
+:104E400008210843687007CC083507C5002106E033
+:104E500000227823114602200CF07FFE02213068E8
+:104E6000C030C17170BD00B5184A87B01268C03239
+:104E7000527AD20907D106236A4613700190117243
+:104E800068460AF05AFD07B000BD00B587B007209C
+:104E90006946087068460AF050FDF4E70B48006860
+:104EA000C030807A704738B5084C054602782068D3
+:104EB00013000146C03110F031F909A9061111A300
+:104EC000204E738BA900FEF787FF38BD54000020E9
+:104ED000C0410000F2050000FFFF000088790628AD
+:104EE00005D0092803D0FE49FE4810F026F82068B6
+:104EF0000422017E1143017682E0A9880029E4D0D2
+:104F0000A030808BF8498842DFD0A868002804D1FF
+:104F1000F448F349103010F010F82068C030407A9F
+:104F2000C00904D0EF48EE49113010F006F8A86827
+:104F300006220A38A86000902068AB88A030808BD9
+:104F4000042102F00DF80028BFD0DB20E449C000A6
+:104F50000FF0F3FFB9E788790528B6D92879012839
+:104F600002D0022808D103E0487A80221043487218
+:104F7000487A012210434872284601F05CF8206804
+:104F8000C03080790628A0D9082801D8062004E07E
+:104F900009289AD90B2898D80920FEF75DFF94E7D5
+:104FA000887906280AD0042808D0092806D00528C0
+:104FB00004D0CC48CA493D300FF0BFFF0ECDCB48DE
+:104FC0000361C2608160A2210170FEF7EEF97CE707
+:104FD0008879062818D0072816D009280DD00A2865
+:104FE0000BD0C048BE4950300FF0A7FF2068C0303A
+:104FF0008079062808D0072806D00B20FEF72CFF62
+:10500000284601F018F860E70820F7E7B548B449EA
+:1050100064309DE7FFB593B0012468460321847096
+:10502000C9021D4601800AF060F90022694601208C
+:1050300003F085F906460AF05CF9002E5CD168465B
+:10504000152184704902018000271C2101A80897BE
+:105050000FF036FE01200146103108A80170002033
+:10506000014608A841708178F9200140891C21433C
+:1050700008A88170684601790226314301711499AC
+:105080008185C7851F21018608A80A9013980D9075
+:10509000684609900AF029F90EAA09A901A802F0A8
+:1050A0001CFF07460AF025F9002F02D0384617B03A
+:1050B000F0BD8F4F68463968008F4880684684701D
+:1050C0008C49018008A88078F9210840801C41089B
+:1050D000490008A8817068468685068615A80D9047
+:1050E0000AF003F90EAA09A901A802F0F6FE064685
+:1050F0000AF0FFF8002E01D03046D8E7684639683C
+:10510000008F88807B4968468470C91C018029888B
+:1051100010A8018069884180A9888180E988C180C0
+:10512000082168468185018610A80D900AF0DDF8F7
+:105130000EAA09A901A802F0D0FE04460AF0D9F887
+:10514000002C01D02046B2E768463968008FC8803D
+:105150000020ACE7F0B5684E95B00C46B14235D3AF
+:105160000127BF04654DBC4201D3AC422ED3202899
+:1051700004D0212824D0222837D13DE03C216846A4
+:105180000170218841806188818009A908F0C8FBED
+:10519000002806D108A98979002904D002290DD058
+:1051A000032015B0F0BD6168B142FAD3B94201D312
+:1051B000A942F6D36A46128D0A80F2E75048F0E71A
+:1051C00008684B4C002812D0A84201D21020E8E712
+:1051D00006210EF0A5FB411C07D02168A8225050E3
+:1051E0000120A03188750020DBE70720D9E720687F
+:1051F0000021A0308175F6E7084600F028FFD0E7CF
+:105200003D4A10B5914206D301229204914204D343
+:105210003A4A914201D2102010BD202805D0212801
+:1052200003D0222803D0072010BD062010BD084659
+:1052300000F042FF10BD70B504462C48CC21AC30C4
+:105240000FF03EFD29482A4EAC3000213060C943A2
+:10525000A0308183002585770120FEF7FDFD3068B1
+:10526000C7210D54E121C57389000182B6210D5477
+:10527000014609310830FDF783FF316808460A7A94
+:1052800060308271062209310FF0BBFC316808469C
+:1052900029311930FDF7ABFF002C37D03068803052
+:1052A0008463FEF799FD1E20E081607A8F2108401B
+:1052B000303060723068014614312161983161628A
+:1052C000933921601031616025721339A162091F81
+:1052D000E1628531E163303921631031616311E0AE
+:1052E000C0410000C2060000FFFF00004C12002079
+:1052F00054000020012A000000600100002000206E
+:105300000230000010310930A163A06470BDF7487D
+:105310000068C0308079042803D0052801D000201F
+:1053200070470120704770B50646F1480C4681422F
+:1053300006D301208004844204D3EE48844201D283
+:10534000102070BDFFF7E3FF002801D0112070BDD1
+:10535000E948E64D002E02D0012E46D12FE02278FA
+:10536000002A0AD00121012A09D0022A14D0032AD6
+:10537000EDD1A2799209EAD112E0002103E0A279ED
+:105380009209032AE3D128680622017260308171F4
+:10539000611C0FF036FC05E0A2799209012AD6D1F2
+:1053A00028680172002107200CF07CFC2868062286
+:1053B000611C09300FF025FCFEF70EFD11E021788D
+:1053C000002912D0012910D0022910D00329BED102
+:1053D0000120FEF733FF002803D0C849C8480FF06A
+:1053E000ACFD2868C673002070BD072070BD012089
+:1053F000FEF7F2FEEFE7BF4910B5884201D2102058
+:1054000010BDBA49024609680B7A0931184600F006
+:10541000F7FD002010BDFFB599B005460020694694
+:105420000871087208A90874144608750122B04969
+:105430009204B0481E46002D05D08D420BD39542F4
+:1054400001D3854207D3002C08D08C4203D3944269
+:1054500004D3844202D210201DB0F0BD2846204360
+:1054600018D01F270CAB01AA009728461A99FEF7FF
+:10547000E0FD0028F0D10DAB02AA3146204600978E
+:10548000FEF7D7FD0028E7D16846007AC10703D0B0
+:105490000A20E1E70720DFE7800705D568460079A5
+:1054A000800701D50B20D7E7FFF731FF002801D097
+:1054B0001120D1E703AF002D0FD01A2069460873E1
+:1054C0001A9888732946F81C1A9A0FF09AFB0EA9AD
+:1054D00003A808F025FA0028BED1002C0ED0202108
+:1054E00068460173867332462146F81C0FF089FB2B
+:1054F0000EA903A808F014FA0028ADD17B4908A82A
+:105500000968007C08700020A6E7F0B504467848DA
+:10551000002695B0844276D301208004844202D3D1
+:1055200074488442F7D32378012B09D1704960680D
+:105530008842F0D39904884202D36E498842EAD364
+:105540006A490A681546C035A879022814D003288C
+:1055500012D0052810D009280ED00A280CD00B280C
+:105560000AD0012803D0002B06D0012B04D0687A82
+:10557000C506AD0F06D101E0082012E6850701D46B
+:10558000400701D511200CE6208A5E4F0546203DDC
+:10559000BD4207D3012B6ED10028FCD1658A002DB6
+:1055A000F9D111E0022B01D0032B01D1A02862D345
+:1055B000012B01D1002807D01578ED0704D0658AAA
+:1055C000002D58D0B42D56D8002B06D0012B08D072
+:1055D000022B04D0032BDED118E0002519E00225B0
+:1055E00017E0002802D1608A00280DD004256068E9
+:1055F000007800280DD001280AD0022808D00328FE
+:1056000006D03D48CDE563E00125F0E7032500E045
+:105610000126D07B01281CD1108A002819D0907B4C
+:105620008109012911D0800904D035483349EC3073
+:105630000FF083FC0120FEF701FE00280BD030485C
+:105640002E49F0300FF079FC05E00120FEF7C4FD93
+:10565000F3E7FEF7C1FB207A002806D0012806D028
+:10566000022806D0032806D106E0002705E001271E
+:1056700003E0022701E087E00327002D01D0022D7F
+:1056800048D1002F46D0E06800287DD0017900295C
+:1056900020D0082978D8027B082A75D800290AD09A
+:1056A000134B0168994213D301239B04994202D3FF
+:1056B000104B99420CD3002A10D080680C498842C4
+:1056C00006D301218904884208D30A49884205D2B9
+:1056D000102066E5027B002A6AD0DCE703480068F8
+:1056E0000078800710D00448401E5AE5540000207E
+:1056F000006001000020002002320000C0410000D4
+:1057000086080000E13F0000022D03D1022F4FD098
+:10571000032F4DD0182168460170218A4180218ACB
+:1057200081808571FE480068007A002801D0012838
+:105730007ED16946C8716846067221780930012910
+:1057400023D006210FF0BAFA07216846C173077407
+:1057500009A908F0E5F80028BBD10A2069460870BD
+:1057600009A9684608F0DCF80028B2D13A20694659
+:10577000087009A9684608F0D3F80028A9D1002DBF
+:1057800009D0022D07D04CE012E061680622491CC6
+:105790000FF037FAD8E7002F43D00026374623E032
+:1057A0000168B00009580978002903D0012904D004
+:1057B0000720F6E469468F7002E001216A46917085
+:1057C000E16806220968095800A8491C03300FF057
+:1057D00018FA0B206946087009A9684608F0A0F875
+:1057E0000028E6D1761CF6B2E0680179B142D7D83C
+:1057F00000266F4611E08068B10041581022B81CA5
+:105800000FF0FFF93B206946087009A9684608F0C7
+:1058100087F80028CDD1761CF6B2E068017BB14252
+:10582000E9D81B20694608700120887009A900E0AA
+:1058300036E0684608F074F80028BAD108A8407924
+:105840001B282DD12B000FF069FC0504040606046B
+:105850001E00032015E0B2480068C03080790300C4
+:105860000FF05CFC091E061E1E0A1E080C0E1E0010
+:10587000022006E0092004E0052002E00A2000E002
+:105880000B20FEF7E9FA012D0CD0608A002809D020
+:1058900000228300114610460CF05FF9002801D069
+:1058A00003207EE400207CE470B586B00C00064640
+:1058B00009D09C48844248D301208004844202D30A
+:1058C0009948844241D3964D2868C030C179022955
+:1058D00002D0407A400702D5112006B070BD002CDE
+:1058E00004D02046FEF779FB0028F6D13046FEF7BB
+:1058F0003FFB012803D0022823D08C48EDE721008C
+:105900001BD1082069468882286801ABC08805AA97
+:10591000002103F0F7F80028DFD16846808A0828C4
+:1059200001D00320D9E7684681888181C188C1817F
+:10593000018901824189418203A9304601F068FC56
+:10594000CBE7002C01D00620C7E71020C5E770B5D3
+:105950000C460546FEF70CFB012803D0022801D0B7
+:10596000724870BD21462846FEF7FAFB70BD00B5AF
+:105970000146143095B0192801D2880707D008468F
+:105980001E3004D00A3002D0072015B000BDFFF74A
+:10599000BEFC002801D01120F7E7614831220068E1
+:1059A000417068460270817009A907F0B9FFECE701
+:1059B00001B582B0022069460880594802AB0068F0
+:1059C0006A468088002102F00DFF69460988022995
+:1059D00000D003200EBD38B502216A46118052491D
+:1059E000884201D2102038BD4D49034609688C8891
+:1059F0000021204603F086F8694609880229F2D082
+:105A0000032038BD3EB50446082069460880454855
+:105A1000844206D301208004844204D34248844255
+:105A200001D210203EBD2046FEF7D7FA0028F9D15A
+:105A30002088694688806088C880A0880881E088BE
+:105A40004881374801AB00686A46C088002102F0EF
+:105A5000C9FE694609880829E4D003203EBD1FB568
+:105A600004460820694688812E48844206D30120D6
+:105A70008004844205D32C48844202D2102004B012
+:105A800010BD27480B46006803AAC088002103F018
+:105A900039F80028F3D169468989082901D0032003
+:105AA000EDE7694609882180694649886180694631
+:105AB0008988A1806946C988E180E0E7FEB50E4685
+:105AC0001849174605468E4206D30122920416480D
+:105AD000964203D3864201D21020FEBD1F2F01D96A
+:105AE0000C20FEBD0E4C8D4232D3954201D385422F
+:105AF0002ED3206801A9408802F026FE0028F0D1AC
+:105B0000287869464871206801A9408802F0FFFDA5
+:105B10000028E6D16946009008780221084307E092
+:105B2000540000200060010000200020023000002E
+:105B3000694608704979090703D008210843694676
+:105B4000087020686946408802F08BFD0028C8D1A3
+:105B500069460F8120683346408802AA002102F07E
+:105B600041FE69460989B942BBD00320FEBD38B564
+:105B70000C46F749002801D0884201D38C4201D25B
+:105B8000102038BD21886A461180002801D00029E4
+:105B90000BD0F049034609684D880021284602F0E1
+:105BA000B1FF69460988218038BD0C2038BD30B569
+:105BB0000C46E94987B08C4206D3012189048C4206
+:105BC00005D3E3498C4202D2102007B030BDE14D2D
+:105BD0002968C0310A7A520708D48A79521F130003
+:105BE0000FF09CFA05040604040604000820ECE704
+:105BF000497AC90901D00D20E7E7FEF7B9F9012874
+:105C000003D002282DD0D548DFE720881E2801D2F6
+:105C10000720DAE72868C030807906281FD00A20DC
+:105C2000FEF71AF905216846017000798108A0780D
+:105C30008900C007C00F014368460171FB20014085
+:105C4000A0788007C00F8000014368460171218859
+:105C5000C18009F072FE0028B7D00320B5E7072005
+:105C6000DEE70620B1E7F0B587B014460D46FEF733
+:105C70007FF9012804D0022802D0B84807B0F0BD4F
+:105C8000B44B18680146C0310A7AD20707D08A7926
+:105C9000062A04D9092A02D0002D02D050E008209B
+:105CA000ECE7AD4A944206D301229204944204D315
+:105CB000A74A944201D21020E0E7A278D206520F00
+:105CC000042A0CD8E378072B09D3102B07D82279A4
+:105CD0009A4204D3102A02D822881E2A01D0072013
+:105CE000CCE702468032966BF727F372966B2379E6
+:105CF0003373966B737A3B40A778BF06FF0FFF00A4
+:105D00003B437372966B2388F381966BA778B37AC3
+:105D1000FF079B089B00FF0F3B43B372FB273B40F1
+:105D2000A778966BBF07FF0FBF003B43B372926B20
+:105D3000A478537AE406DB08DB00640F2343537234
+:105D40000B226B461A70852D22D008DC002D17D04F
+:105D5000812D17D0822D17D0832D08D116E0862DE6
+:105D600018D0882D18D0892D18D08A2D18D00B2244
+:105D70001A71B622125C774C002A13D0A83012E0B8
+:105D80000022F5E70122F3E70222F1E70322EFE721
+:105D90000522EDE70622EBE70822E9E70922E7E71B
+:105DA0000A22E5E7002002908879072806D0082813
+:105DB00004D00A2804D00B2802D004E0062000E01A
+:105DC0000920FEF749F8684609F0B7FD002801D020
+:105DD000032053E720680422C030017A49084900B3
+:105DE00011430172002049E770B55A4E0D463168E3
+:105DF00086B0C031097A1446090701D408206CE541
+:105E0000FEF7B6F8012803D0022801D0534864E514
+:105E1000002D10D05048844206D3012080048442D3
+:105E200004D34B48844201D2102056E5012D0BD0FB
+:105E3000022D02D106E0002C01D007204DE5002004
+:105E4000029005E0022000E00120694608710294FA
+:105E5000032069460870684609F06FFD002801D0EC
+:105E600003203AE53068F722C030017A1140017210
+:105E7000002032E570B594B014460E46FEF778F86F
+:105E8000012804D0022802D0344814B070BD314D2E
+:105E90002868C030007A800701D40820F5E7002C7C
+:105EA00001D00720F1E7FFF732FA002801D01120D6
+:105EB000EBE7002E1DD02D21684601702C68BC2018
+:105EC000015B684641801022B11C01A80EF099FECA
+:105ED000207EFB210840B17CC907490F084320768A
+:105EE000B07CFF214008A075608A8231084360823F
+:105EF00007E02E21684601702868A030818B684633
+:105F0000418009A9684607F00BFD2968FD23C031CF
+:105F10000A7A1A400A72B8E710B50C46FEF728F85C
+:105F2000012803D0022801D00C4810BD0A48844241
+:105F300006D301208004844204D30548844201D260
+:105F4000102010BD2046FEF722F8002010BD0000F2
+:105F500000200020540000200060010002300000FA
+:105F600010B594B00446FEF703F8012804D00228C7
+:105F700002D0644814B0E9E763480068C030817912
+:105F8000042910D005290ED03820694608704C80AD
+:105F900001200871487109A9684607F0C1FC002872
+:105FA000E8D00B20E6E70020E4E710B594B0044603
+:105FB000FDF7DEFF012803D0022801D05148D9E7C0
+:105FC00051480068C030817904290DD005290BD0D3
+:105FD0003820694608704C8000200871487109A972
+:105FE000684607F09DFCC5E70020C3E74648006807
+:105FF000C0308079062801D3012070470020704707
+:1060000008B51346002806D040A0006800904879E3
+:106010006A468009105C18700622581C0EF0F1FDCB
+:1060200008BD00B587B0012069460870684609F0D0
+:1060300084FC07B000BD10B50446FDF785F9A22128
+:1060400001700ECC08300EC0FDF79AF97EE770B5EE
+:106050002D4C054601682068002911D02C4A914238
+:1060600006D301229204914204D32A4A914201D2DA
+:10607000102070BD102277300EF0C3FD2068012182
+:106080008030806B01722068A9880182C17B012960
+:106090000CD1807B800901280AD00120FEF7CEF8C0
+:1060A000002803D01C491D480EF047FF002070BD9A
+:1060B0000120FEF791F8F3E770B505460068124C31
+:1060C00000281AD01349884201D2102070BD2068E0
+:1060D000B8210958097A012909D0014677312930B8
+:1060E0000AF063FF206801218030806B0172216813
+:1060F0001022286877310EF084FD2068008AA8807D
+:10610000002070BD02300000540000200302FF0197
+:106110000060010000200020C041000003030000D7
+:10612000FFB581B001980E46C078174610360E377D
+:10613000022809D0032840D005287DD0F2A1F748D5
+:106140000EF0FBFE05B0F0BDCC890A2060430E3096
+:10615000188031230A98002A0380F3D04868008809
+:1061600090800020D0801081097B9481891FCDB25E
+:106170001AE030887168388048780A780002104345
+:10618000F880C8788A78000210433881BA1C091D4B
+:1061900028460BF058F8002D01D0002802D000202E
+:1061A0003871788008360A372046641EA4B2002869
+:1061B000DFD101990020C870C4E7CC890A20604370
+:1061C0000E30188032230A98002A0380BAD048681B
+:1061D000002500889080D5801581087B401FC0B2C3
+:1061E0000090948142E0716832880878FA803A79A8
+:1061F000C30752085200DB0F1A43FD231A408307DE
+:10620000DB0F5B001A43FB231A404307DB0F9B00A5
+:106210001A43F7231A400307DB0FDB001A43EF236F
+:106220001A40C306DB0F1B011A43DF231A40830603
+:10623000DB0F5B011A4300E020E0BF231A40430656
+:10624000DB0F9B011A433A71C00978718A784B7849
+:106250001002184338813A46C91C00980AF0F3FF2F
+:10626000002801D0BD703D8008360A372046641EE4
+:10627000A4B20028B7D10198C57063E7087BCC8928
+:10628000801E85B2284608306043103018803423C1
+:106290000A98002A03808FD04868174600889080AB
+:1062A0000020D080108194811037E000D581C01982
+:1062B0000CE030883880009878602A467168009831
+:1062C0000EF09FFC009808360837401900902046D1
+:1062D000641EA4B20028ECD16BE7FFB50546C07878
+:1062E00081B00C460A9E03000EF018FF0BA307179F
+:1062F00033414F6D8F9D9D9DA300207B174608283D
+:1063000006D0032804D085487FA154300EF015FE36
+:1063100004990E20088030200CE0207B17460428CA
+:1063200004D07E4878A171300EF007FE04990E204B
+:10633000088031203080002F44D060680088B88009
+:10634000607AFF300130F880E08938810020B88120
+:1063500037E0207B1746042804D070486AA18D30AE
+:106360000EF0EBFD04990E2008803220E2E7207B3E
+:106370001746022804D0694863A1A9300EF0DDFD5C
+:1063800004990E2008803320D4E7207B1746042888
+:1063900004D062485CA1C4300EF0CFFD04981021F7
+:1063A000018034203080002F0CD060680088B880D5
+:1063B000607AFF300130F880E08938810020B881B0
+:1063C000F881E870BEE6207B1746052806D006282F
+:1063D00004D052484CA1E1300EF0AFFD04981221D8
+:1063E000018035203080002FECD060680088B880B4
+:1063F000607AFF300130F880E0893881E089B88127
+:1064000000203882A988F981DBE7207B174607281E
+:1064100004D042483CA1F8300EF08FFD04990E20C4
+:106420000880362086E700962846049B00F02DFD64
+:1064300088E635A13A480EF080FD83E670B5054642
+:1064400000780C46082603000EF068FE124C343427
+:10645000241C380A0A0A0A0A0A0A0A0A0A0A0A4C00
+:106460006878002804D02E4827A12C300EF065FD56
+:10647000002C03D11F2024A1400108E060783043A4
+:10648000607020E0002CF9D17D201FA1C0000EF02B
+:1064900054FDF3E7002904D03F201BA100010EF0BA
+:1064A0004CFDFCF751FF0446407830436070FCF728
+:1064B00067FF08E01A4814A1473002E0184812A10B
+:1064C0004C300EF03AFD002C0AD06078000707D55A
+:1064D000932020702046582229460830FAF774FE8F
+:1064E000002070BD0E4808A15030EAE710B500202A
+:1064F0000C4C0D490346C2008C525218401C000639
+:10650000D370000EF7D010BD7372635C6761747452
+:10651000635F636F72652E63000000005A02000023
+:10652000B3030000FFFF000058000020FE49088070
+:106530000120887000207047FB4900208870704758
+:1065400010B50021F848C94301800021C17007F04F
+:1065500021FAD8E7F7B584B00546002768460781D9
+:10656000878068680C46008800F0ECFB0646287AB5
+:10657000032805D0002E03D1EC49ED480EF0DDFCD8
+:10658000297A2046C91E123000900B000EF0C6FD7D
+:106590000FF2F1F03D09AA465C6D34B3CDF38B8B5D
+:1065A000F000F078012803D0E049AD200EF0C5FCE2
+:1065B000A8896946C0000E30888030200881002CF0
+:1065C00022D068680188A180E7802781A989A181FC
+:1065D00000200DE0C100B27909190A74B288CA819D
+:1065E00082005219D3894B82128A401C8A8280B25F
+:1065F000A1898142EED8D7E002A8009001AB2246E3
+:106600002946304600F0CCFBF1E002A8009001AB37
+:1066100022462946304600F005FCE8E0F0780628DE
+:106620001AD0FF20C149223014E068680188A18097
+:10663000E7802781A989A181B188E181E989218247
+:10664000EA89296900982BE0F078062804D0FF2019
+:10665000B6493C300EF071FCE889694612308880FA
+:1066600035200881002CE0D1C1E0F078072804D063
+:10667000FF20AE4956300EF060FCA88969460E3006
+:10668000888036200881002CBED068680188A180EF
+:10669000E7802781A989A1812046AA890E3029692E
+:1066A0000EF0AFFA80E0E8896946123080B23822F5
+:1066B00088800A81002C79D068680188A180E780F1
+:1066C0002781A989A181287A102809D00221A173E4
+:1066D000E9892182EA89296900980EF092FA86E018
+:1066E0000121F4E702A8009001AB2246294630467A
+:1066F000FFF716FD7BE0F078082803D08B498D4822
+:106700000EF01BFC14206946888037200881002C7D
+:106710006DD068680188A180E7802781A989A1815F
+:10672000678227820120A0733EE0F078092804D018
+:1067300080487E4918300EF000FC288A69461430E3
+:10674000888037200881002C51D068680188A1809A
+:10675000E78004212781A173A989A181E989218288
+:10676000298A618220462A8A1430696998E702E002
+:1067700038E01CE024E0F0780A2804D06D486B492A
+:1067800033300EF0DAFB1420694688803720088108
+:10679000002C2CD068680188A180E7802781052122
+:1067A000A173A78127826782F77020E017E002A813
+:1067B000009001AB224629463046FFF78EFD16E0D9
+:1067C0000D206946392288800A81002C07D00120DB
+:1067D000E08055480188A1802781277307E006994A
+:1067E000088010E08F205149C0000EF0A6FB6846DB
+:1067F000069980880880002C05D068460089208092
+:10680000684680886080002007B0F0BDF7B594B07E
+:1068100015460F46149800F0A0FA04000AD0032091
+:1068200000F088FB022802D2E078002804D0112072
+:1068300017B0F0BD4048FBE71720694601260883E2
+:10684000002D0FD00321684601711021018210A88C
+:106850000246059004A928460AF01BFD00280DD029
+:106860000720E5E708216846017100210781C94337
+:10687000418105218673C90281810CE0A878A0714D
+:106880002888A080684605218673C902818100217D
+:106890000781C943418109AA023206A901A807F06C
+:1068A000B2F8002802D000F06BFAC1E707A8009008
+:1068B0006846038B04220321149800F051FB002842
+:1068C000B6D1E670B4E770B592B00D0006460ED0B2
+:1068D00000F043FA04000CD0032000F02BFB022848
+:1068E00002D2E078002806D0112012B070BD10202E
+:1068F000FBE71148F9E717216846818004210172FE
+:10690000298881816988C181012181740B490182B3
+:106910000AAA023201A902A807F075F800280FD0D0
+:1069200000F02EFAE1E700005800002008650000A2
+:106930003C04000063020000023000000228000056
+:1069400008A800906846838804220321304600F09E
+:1069500007FB0028C9D10221E170C6E770B592B0EB
+:106960000D0006460DD000F0F8F904000BD003200E
+:1069700000F0E0FA022802D2E078002805D01120C9
+:10698000B3E71020B1E7FA48AFE7172168468180E6
+:1069900004210172298881816988C1810121817462
+:1069A000F44901820AAA023201A902A807F02BF8D1
+:1069B000002802D000F0E4F997E708A800906846A4
+:1069C000838804220321304600F0CAFA00288CD1C3
+:1069D0000321E17089E770B592B00D0006460DD035
+:1069E00000F0BBF904000BD0032000F0A3FA02284A
+:1069F00002D2E078002805D0112076E7102074E755
+:106A0000DB4872E702216846017229888181698822
+:106A1000C181172181800AAA023201A902A806F0C9
+:106A2000F2FF002802D000F0ABF95EE708A8009062
+:106A30006846838804220321304600F091FA00283A
+:106A4000DBD10421E17050E7F0B591B015000E469E
+:106A500007460ED000F081F904000CD0032000F0AE
+:106A600069FA022802D2E078002806D0112011B07D
+:106A7000F0BD1020FBE7BE48F9E71721684681808A
+:106A800004210172298881816988C181B17881746A
+:106A9000318801820AAA023201A902A806F0B3FFD6
+:106AA000002802D000F06CF9E1E708A800906846E1
+:106AB000838804220321384600F052FA0028D6D1F8
+:106AC0000521E170D3E7F7B592B015460E4612984E
+:106AD00000F043F904000AD0032000F02BFA02284A
+:106AE00002D2E078002804D0112015B0F0BDA048F3
+:106AF000FBE70627002D12D0684607728681C58104
+:106B0000A5801720694688800AAA023201A902A836
+:106B100006F079FF002807D000F032F9E5E70521FB
+:106B2000684601728681EBE708A800906846838872
+:106B300004220321129800F013FA0028D5D1E7703F
+:106B4000D3E7F7B592B016460D000ED0129800F0BC
+:106B500004F904000BD0032000F0ECF9022802D263
+:106B6000E078002805D01120BFE71020BDE780485D
+:106B7000BBE7072768460772868117210495818045
+:106B80000AAA023201A902A806F03DFF002802D09D
+:106B900000F0F6F8A9E708A8009068468388042268
+:106BA0000321129800F0DCF900289ED1E7709CE7E1
+:106BB000F3B5172091B00C46002915D021780B00B1
+:106BC0000EF0ACFA062B05051A041C2B1520C01E6E
+:106BD000E28880B2002A02D0A368002B04D082424F
+:106BE00004D90C2013B0F0BD1020FBE7042905D018
+:106BF000A088002811D101E00620F3E7119800F0E9
+:106C0000ACF805000BD02078092701281AD00228FB
+:106C100007D0042824D0052835D00720E2E75448BF
+:106C2000E0E76846077161880181E1884181A068D9
+:106C300008260390304600F07DF9072829D34C48F8
+:106C4000801CCFE70C216846017161880181E188D1
+:106C50004181A06803900EE0E878002811D118E087
+:106C60000D216846017161880181A1884181E18817
+:106C70008181A06804900326304600F05BF9022869
+:106C8000EAD31120AEE70E2168460171217B017223
+:106C9000F1E717216846018309AA023206A901A873
+:106CA00006F0B1FE002802D000F06AF89AE707A8C3
+:106CB00000906846038B04223146119800F050F989
+:106CC00000288FD12178012907D002298AD00429F0
+:106CD00005D0052905D0032084E7082102E0EF70E4
+:106CE00080E70A21E9707DE730B591B00C46054692
+:106CF00000F033F8002808D0032000F01BF9022828
+:106D000005D31B48801C11B030BD1948FBE70F218B
+:106D10006846017104811721018309AA023206A97C
+:106D200001A806F070FE002802D000F029F8EAE77A
+:106D300007A800906846038B04220321284600F030
+:106D40000FF9E0E70C49884205D00C4909888142D7
+:106D500001D10A4870470020704710B5FFF7F2FFD5
+:106D6000002802D08178C90700D1002010BD0000A2
+:106D70000230000003280000FFFF00005800002040
+:106D8000002806D0012805D0052805D0062805D002
+:106D90000320704711207047082070475C487047F7
+:106DA000FFB583B003980C9EC0781D4614460F466D
+:106DB000012803D05749D2200EF0BFF8F889C0004F
+:106DC0000E30288030203080387B001FC0B2019008
+:106DD000002C26D078680088A0800020E0802081E8
+:106DE000F889A081002616E0F0000519C01900906E
+:106DF0002A4641690E3201980AF025FA002802D08D
+:106E000000202874E8810098761C008A6882009827
+:106E1000B6B2408AA882A089B042E5D80399002082
+:106E2000C870F1E4F8B50646C0781F4614460D4612
+:106E3000042804D0FF20374903300EF07EF8A889DB
+:106E4000062148430E30388033210698002C0180FB
+:106E50001AD068680088A0800020E0802081A9897D
+:106E6000A18103460CE01946062251434A1909192B
+:106E7000D789CF81977C8F74128A5B1C0A829BB260
+:106E8000A1899942EFD8F070F8BD70B51446054657
+:106E9000142204981A8037220280002C18D04868E7
+:106EA00000260088A080487AFF300130E080C88941
+:106EB0002081C889A0816682E878082809D009283D
+:106EC00011D00A2819D0134913480EF036F8EE7085
+:106ED00070BD087B0C2804D00F480E490C380EF00A
+:106EE0002CF8012012E0087B0D2804D00A4809493B
+:106EF00008380EF022F8042008E0087B0E2804D0A1
+:106F000005480449001F0EF018F80520A073DEE7BD
+:106F100003300000086500008203000001460020E5
+:106F2000F74A02E0401C082803D24300D35A8B42A0
+:106F3000F8D1704730B50446F14A0020163A11796D
+:106F400053790AE05518AD79A54201D1401CC0B271
+:106F5000491CC9B2102900D100218B42F2D130BDA9
+:106F6000FFB5E74881B0163841790A9C491CCDB27B
+:106F70001E46102D00D10025E14816380079A842A0
+:106F800002D1042005B0F0BD0820FFF7D3FF07466B
+:106F9000072804D9FF20DBA1A1300DF0CEFF029815
+:106FA000082801D1072F17D001982080301D60805C
+:106FB000002060712071E68003982081204606F051
+:106FC000D3FC00280AD0CE48029916384379821D96
+:106FD000995445710020D5E7CF48D3E7FF20C9A1D8
+:106FE000B3300DF0AAFF0320CCE7F0B58DB0044616
+:106FF00000256846057116468C460620FFF79AFF65
+:1070000000281CD121780127C807002801D01329A6
+:1070100017D9684687766178C17602218183C58356
+:1070200004A8009070680C23008805220621FFF751
+:1070300097FF002803D0B3A184200DF07EFF0DB090
+:10704000F0BDAF4816380278002AF8D0427863784D
+:107050009A42F4D1012918D0132919D16146062981
+:1070600016D10570002101200AF01CFE6846077148
+:10707000706801886846C1800021C9430181607938
+:1070800022790102114368461AE06146062908D0B8
+:10709000684600790028D2D0314601A8FDF7A7FE46
+:1070A000CDE70570002101200AF0FCFD684607715C
+:1070B0006079227901021143684601810021C943A8
+:1070C0004181E9E78E4810B50021163801704A1E4B
+:1070D000428041700171417101200AF0E3FD10BD51
+:1070E00010B5FFF7EFFF0020854902464300401C22
+:1070F000CA520828FAD310BD10B50446FFF7E2FFC4
+:107100007F4816384480002010BDDBE770470EB57D
+:1071100001216846017081498180C1800021FDF70D
+:1071200066FE0EBDF7B505460078002700090C463F
+:107130003E46012804D0FF2072A164300DF0FDFE10
+:10714000287A02280CD0FF206EA17A300DF0F5FECF
+:107150000298002C068001D0278066800020FEBDAA
+:10716000EA89702710460A3086B2002C0BD0686876
+:107170000088A080A8892081E28020460A30296901
+:107180000DF03FFDE4E702980680E7E7F8B54368B5
+:107190000246D9799C79090221435C7A1E7A25023C
+:1071A0005C88981D3543241FA1421DD11B79022BF9
+:1071B0001AD1042D19D0052D26D0062D19D0402D19
+:1071C00012D3061D0F4614462846FFF7A7FE0828CF
+:1071D0000AD01120207002202072A581E78126614B
+:1071E0006078082108436070F8BD001D00F0D9F8F0
+:1071F000F8BD041D0D46FEF7F9FE0028F8D029461B
+:107200002046FDF730FEF8BD001DFFF7EEFEF8BD8D
+:1072100010B53B4C8AB0163C2278012A26D01223A6
+:107220006A46937363789B1CD373082313820B887D
+:1072300053824B8893828B88D382C988118301A99A
+:1072400000910C2305220721FFF78AFE00280BD1AD
+:107250000022F023114601200AF07FFC012020705B
+:107260006078801C607000200AB010BD1120FBE720
+:10727000F8B5234C0027163C0646A51D1BE0607997
+:107280002179884204D187201EA180000DF055FE8F
+:107290002079405D042804D0082804D17F1CFFB267
+:1072A00001E0FDF7F2FD2079401CC0B220711028EA
+:1072B00001D1002020713046761EF6B20028DED1C2
+:1072C0003846F8BD10B50446402801D2072010BD4D
+:1072D000FFF724FE082802D03120000210BD002153
+:1072E000074802E0491C082903D24A00825A002AB2
+:1072F000F8D1082914D049004452002010BD0000E4
+:10730000DA1300207372635C6C326361705F636FC9
+:1073100072652E630000000004300000FFFF0000D3
+:107320000420EBE700B5402801D2072000BDFFF79D
+:10733000F5FD082805D000213B4A400011520846BF
+:1073400000BD052000BDF0B58BB016460C00074609
+:1073500007D0002E05D06188402904D207200BB049
+:10736000F0BD1020FBE72088002801D0172801D9A4
+:107370000C20F4E70846FFF7D1FD08280FD0258838
+:1073800003A82A46314602300DF03BFC01A80090CC
+:1073900062882B4608213846FFF7E2FDDFE705202B
+:1073A000DDE7F0B50E46074601468BB014460125D1
+:1073B000304606F0A5FC08281CD100206946088547
+:1073C0000120FFF7B7FD002802D117206946088584
+:1073D00003AB02330AAA39463046009407F0A3F8FB
+:1073E000002809D0022818D0032803D00F49FC2018
+:1073F0000DF0A3FD2846B2E76846038D002BF9D0B7
+:1074000001A800906068042200880121FFF7A8FD10
+:107410000028EFD00549E720EAE760780025102131
+:1074200008436070E6E70000DA13002004730000F0
+:10743000002803D08178012939D101E0102070475C
+:107440000188FA4A881A914233D01BDCF84A881A1C
+:1074500091422ED00BDC00292BD00320C002081A49
+:1074600027D0012825D001210903401A07E001286F
+:107470001FD002281DD0FF281BD0FF38013800285C
+:1074800015D116E0FF220132811A904211D008DC9A
+:1074900001280ED002280CD0FE280AD0FF2806D1E1
+:1074A00007E0012905D0022903D0032901D00020DB
+:1074B00070470F20704700B50A2821D008DC030070
+:1074C0000DF02CFE0A1C2024241A24282224261A1B
+:1074D000102819D008DC0B2816D00C2814D00D2841
+:1074E0001AD00F2808D111E011280FD0822807D018
+:1074F00084280DD085280DD0032000BD002000BDBC
+:10750000052000BDCB4800BD072000BD0F2000BDF9
+:10751000042000BD062000BD0C2000BD70B5002970
+:107520000BD0CB1FFA3B81241E46CDB2112B1BD2B0
+:10753000012805D0022806D009E0002010701DE0C7
+:10754000FF20043001E0FF200330814218D03300D7
+:107550000DF0E4FD11161313161316161316161656
+:1075600013131313161316000846FF3881381F280B
+:1075700003D9FF39FE39022902D81570002070BDE9
+:107580001470072070BD00B503000DF0C7FD0604A0
+:1075900006040C080A0C002000BD112000BD0720C5
+:1075A00000BD082000BD032000BD00780207120FB7
+:1075B00004D0012A05D0022A0AD10EE0000907D121
+:1075C00008E00009012805D0022803D0032801D0D3
+:1075D0000720704708700020704706207047002879
+:1075E00007D0012807D0022807D0032807D007209A
+:1075F0007047002004E0112002E0212000E031204B
+:1076000008700020704738B50C4605004FD0694619
+:10761000FFF7CBFF002822D120880321890288436D
+:10762000694609788907090D084320806946681C66
+:10763000FFF7BBFF002812D12188032000038143FC
+:10764000684600788007800C01432180A8784007B5
+:10765000820F2020012A03D0022A03D0072038BD40
+:10766000814300E00143218088B20105890F08D0E1
+:10767000012189038843A9780907C90F89030843B1
+:10768000208080B28104890F0AD0A9784004C906FD
+:10769000C90F400CC903084320808004800F02D129
+:1076A0002088400403D52088402108432080002002
+:1076B00038BD70B504460020088015466068FFF7A5
+:1076C000A2FF002815D12189A089814210D86168C4
+:1076D000594E8978C90707D0711E884208D83146AB
+:1076E0000DF009FB298009E0FF21FF31884201D913
+:1076F0000C2070BDFF30FF30033028806068807838
+:10770000C007A08903D031460DF0F5FA03E0FF3041
+:10771000FF30033081B229802068817847480173A7
+:1077200020684649008820394885002070BD10B582
+:10773000137804785B08E4075B00E40F23431370BD
+:10774000FD2423400478A407E40F6400234313704E
+:10775000FB24234004786407E40FA4002343137040
+:10776000F724234004782407E40FE4002343137034
+:10777000EF2423400478E406E40F2401234313702C
+:10778000DF2423400478A406E40F6401234313702C
+:107790000078BF244006C00F2340800103431370CC
+:1077A000002906D00878C10701D1800701D5012042
+:1077B00000E00020C0015906490E0843107010BDBA
+:1077C00030B50A8803239B0204889A4323059D0F42
+:1077D00002D1A3049C0F01D09B0F00E001239B0268
+:1077E0001A4303230A801B039A4303889804840FD7
+:1077F00002D11805830F01D0800F00E001200003A3
+:1078000002430A8030BDF3B591B00D0018D0119835
+:10781000002818D0122128460DF050FA01A90120A5
+:1078200007F07DFE00242646374677E00229000057
+:107830000128000003300000010200000C140020A9
+:10784000102013B0F0BD0720FBE76846007C01283C
+:107850000BD16846C1890520C002081A0AD0012848
+:107860000AD002280CD003280CD0042C0ED0052CF2
+:107870000FD10DE0012400E002246846868908E06B
+:10788000032406E068460424878902E0052400E01A
+:10789000062468468189119881423FD12C74002EBC
+:1078A0003AD00BA800900CAB10220021304607F014
+:1078B000C8FE002820D16846808D2A46C0B20CA997
+:1078C00009F0C1FC002817D1AE81002F24D00BA8ED
+:1078D000009006AB13220021384607F0B2FE0028C4
+:1078E0000AD16846808D06A9C01E0331C0B22A1D88
+:1078F00009F0A9FC002801D00320A2E76846817E98
+:10790000427E08021043E881062C05D16846007CBF
+:10791000A8726846C0892881002092E701A807F074
+:1079200006FE002891D0FFF7C6FD8AE7002804D0A4
+:10793000012903D0022904D003207047F949C98DD9
+:1079400002E0F8494031C988814201D100207047E6
+:107950000720704730B5F34C0025608B91B0C00B09
+:107960002ED1216900292BD0207B800728D4012229
+:1079700068460271027200224272228B8281A28AC0
+:10798000828204911721018309AA0023023206A9E9
+:1079900001A807F07BF9002803D0FFF7F4FD11B030
+:1079A00030BD207B02210843207307A80090694660
+:1079B0000B8B208804220121FFF7D2FA05460BE049
+:1079C000FBF7C2FC842101700921017218341ECC1E
+:1079D0000C301EC0FBF7D4FC2846E0E710B5D14CB4
+:1079E000034621690020002909D0214601221031D7
+:1079F0001846FBF783FE00202061A0820120217B36
+:107A0000F9221140217310BD70B50C4605461C21AA
+:107A100020460DF053F900202080002D08D0012DC4
+:107A200004D0C1A1C5480DF088FA70BD062000E061
+:107A30000520A07070BD10B507F050FB10BDFEB55D
+:107A40000546007800260C46374603000DF066FB1D
+:107A50000C91070C1D962F462F46486C899168683B
+:107A60000A38FBF7B0FD89E0002904D0B348AEA185
+:107A70001B300DF062FAFBF767FC044640780821E2
+:107A800008436070FBF77CFC78E0002C04D1BB203D
+:107A9000A5A180000DF051FA284601F0A2FA0028B5
+:107AA0006CD06078082108436070022666E0E888A0
+:107AB000694608800190002C04D1A0489AA12F307B
+:107AC0000DF03BFA287807281CD10198C00B19D07B
+:107AD000944800218171A988818012E003264DE03D
+:107AE000002C04D1C52090A180000DF026FA8D480D
+:107AF000017B89070BD50069002802D0E888C00BFC
+:107B00003CD00226607808210843607036E0291DC9
+:107B10008EC918308EC028380188022601222046DE
+:107B2000FBF7CEFD0127EDE7002C04D183487EA1B1
+:107B300064300DF002FA7B480821007B4007C00F3B
+:107B40004600607808436070002E17D1287901281C
+:107B500002D16879002811D02046FFF73FFF074681
+:107B60000CE0002CCED10D206FA180010DF0E5F9C5
+:107B7000C8E772486CA17A300DF0DFF9002C0CD008
+:107B80006078000709D5002F07D184202070204697
+:107B9000582229460830F9F717FB3046FEBDF7B5E5
+:107BA000027A88B00C46054620460C3004900692B6
+:107BB00016300027921E02903E460A3159481300A3
+:107BC0000DF0ACFA0ADF06E62AE62AE66A98C6E66F
+:107BD0004288002A02D052270726DDE051271E26C0
+:107BE000002C7DD06A684F481288A2800122A271C1
+:107BF0008079C0004019C089FFF705FE002877D1C1
+:107C000048488179C9004919C98921818079C00012
+:107C10004019408AA083BFE0688A00900698072830
+:107C200017D1E889C00B14D000985127223086B2B2
+:107C3000002C55D0A8890499FFF7E5FD002857D1FD
+:107C400068680088A0800220A071A8892081012096
+:107C500041E000985027203086B2002C40D0A889FF
+:107C6000FFF7D1FD002843D168680088A080A8896B
+:107C7000E080287A07280AD002202072288AA08370
+:107C80000098E083204669692030009A01E00120D5
+:107C9000F3E70CF0B6FF7FE0698A009101690029E3
+:107CA00002D0E989C90B22D00099512722318EB226
+:107CB00000218171A9898180002C5FD00088A0807B
+:107CC000A8890499FFF79FFD002811D10220A07117
+:107CD000A88920810420A072288AE083009801E00E
+:107CE0004CE005E020846969009A0298D1E70320FE
+:107CF0000BB0F0BD007B400702D55127222601E0E2
+:107D000050272026002C39D06868502F0088A0808A
+:107D100016D00220A0712146287B0831FFF774FE9F
+:107D20003AE00000EC1300207372635C67617474C6
+:107D3000735F636F72652E6300000000CB0200006A
+:107D4000287BA11DFFF760FE0020FFF747FE23E020
+:107D5000A9890089884207D154270626002C0DD016
+:107D600068680088A08017E053270826002C05D0FB
+:107D700068680088A080A889E0800DE00A980680E5
+:107D800010E055270726002CF8D00020A07103E052
+:107D9000FD49FE480DF0D1F80A98002C068001D06C
+:107DA000278066800020A3E7F9480021017220386F
+:107DB00001814181418081718180027BF9235208D8
+:107DC00052001A40027301618182704770B5F04C15
+:107DD00086B0203C208000206080A071A080694691
+:107DE000012007F09CFB102608E001990888024654
+:107DF0001207D20FB043120110430880684607F003
+:107E000096FB0500F1D02069002804D0DF48DE4948
+:107E100033300DF092F8207B800704D5DB48DA4937
+:107E200034300DF08AF8822D04D02846FFF743FB4A
+:107E300006B070BD0020FBE7D54810B52038017BA7
+:107E4000012211430173002141808171818006F07C
+:107E500019FB10BD10B5CE4C0020C043203C208043
+:107E60000020FFF7BBFD207B40084000207310BDC1
+:107E700070B5C74D0446203D287B800704D5C34814
+:107E8000C1494B300DF059F8287BC00706D128882E
+:107E9000C049884202D02869002801D0082070BD5E
+:107EA000002C08D0A088162801D2092070BD2068B7
+:107EB0002861A088A882FFF74DFD70BD10B50C4663
+:107EC00007F001FB002804D0C520AF49C0000DF029
+:107ED00034F82046FFF7EFFA10BDF0B5AC4D04467C
+:107EE000203591B00020089068820E462882E881F3
+:107EF0002946E8804039088669460883088508864F
+:107F000088838882A2480E90007A1746012808D0FC
+:107F1000022806D0032804D0042802D0082011B07B
+:107F2000F0BD9D498C425FD301208004844202D37E
+:107F30009A4A944258D398498E4255D301208004DE
+:107F4000864202D3954886424ED36068002814D0FA
+:107F50009149884248D301218904884202D38F493C
+:107F6000884241D360892189884203D80122520284
+:107F7000914201D90C20D2E7089010AA0CA93046F2
+:107F8000FFF797FB0028CAD106A92069FFF73BFB42
+:107F90000028C4D1206900280CD060788007002810
+:107FA0006846008B03DA8004800F6ED002E0800404
+:107FB000800F6AD16846008B810617D58004800F38
+:107FC000606805D0002811D0744988420CD301E0C4
+:107FD00000280BD07049884206D3012189048842C9
+:107FE00004D36E49884201D2102098E705A9606940
+:107FF000FFF709FB002892D16069002808D0684685
+:10800000808A0105890F01293FD18004800F3CD06F
+:1080100007A9A069FFF7F7FA002880D16846808A8F
+:10802000800632D46846808B81062ED4A16900294F
+:1080300006D00105890F012927D18004800F24D0A3
+:10804000E068002804D0007800281ED01C281CD22C
+:108050004F4A611C123220460992FFF768FB032148
+:1080600000208902884301218902411868460D9148
+:108070000185012181744A490182454A0FA91532BF
+:10808000306809F006F9002801D0072047E708A862
+:10809000007F3F49C01CC2B26A7100201031FF321C
+:1080A00000900190FF3203460291039003320AA927
+:1080B00004A807F0A3F9002827D135482038008EFE
+:1080C0000B903348338938303269014612390291B6
+:1080D00000930192039010A90A8873890CA9306853
+:1080E00007F08CF901007DD12948E98811308170B1
+:1080F000090AC1700026009631386A79008E31462F
+:10810000099B07F0FAF8002802D0FFF7D4F906E738
+:108110000E98807CC00928D068460D990185012100
+:108120008174292109020182AE81287B617840088F
+:10813000C9074000C90F08432873FD210840617832
+:1081400002228907C90F490008432873104800928A
+:108150002A30811C0191029000230396114A0AA93A
+:1081600004A807F04BF901003CD1606800283BD01F
+:10817000206900281ED106A90CA8FFF721FB607812
+:10818000800717D469460FE0287D00002204000014
+:108190000C140020FFFF0000006001000020002000
+:1081A0000328000003020000088B03210903884311
+:1081B00069460883012069468874FD480882208941
+:1081C000FC490CF098FD6268089BFB480192009303
+:1081D00002900A460396002306A904A807F00EF9A8
+:1081E000010000E07EE07DD12078C10601D4800648
+:1081F0002ED568460684606900280DD105A90CA813
+:10820000FFF7DEFA6846808A03218902884301214C
+:1082100089024118684681826946888A4821084354
+:108220006946888201208874E14808AA401C0882B7
+:10823000E1490192891C0220DE4A0291009000234C
+:108240000396921C05A904A807F0D8F8010063D191
+:108250002078C0072ED068460684A06900280DD17A
+:1082600007A90CA8FFF7ACFA6846818B03208002AF
+:108270008143012080020918684681836846818B0A
+:10828000402001436846818301218174C84908AABE
+:10829000891C0182C8480192001D0221C54A009133
+:1082A000029000230396921C07A904A807F0A6F8E1
+:1082B000010031D1E068002832D068460D9901856F
+:1082C00001218174BA49C91C0182E16808A80A78B1
+:1082D000027049784170E068418868464184E068EE
+:1082E000017900E018E008A80171E0680722C18860
+:1082F00008A84171090A8171AF4808A9801D009240
+:1083000001910290412200230396D2000AA904A8F9
+:1083100007F074F8010003D00B98FFF7CFFDFEE5DE
+:1083200003210E98002F017207D0E8883880E88971
+:108330007880288AB880688AF8800020EFE5F0B558
+:1083400001248BB016460F46012802D002281BD10B
+:1083500004E0684605218474C90202E06846974932
+:1083600084740182002F11D00321002089028843E8
+:108370000121890241186846018506AA05A93846E7
+:1083800008F087FF002803D00720B1E41020AFE4F5
+:10839000894DB8782E3D287338882F46203F788540
+:1083A0006A46127D0020294606AB00920E310193E9
+:1083B000FF32029103900346FF3203320AA904A858
+:1083C00007F01CF8002802D0FFF775F890E4002EA3
+:1083D00001D0F88D30802C72002089E470B592B005
+:1083E0000446012508A8857075496846018406F091
+:1083F0007CFF002208A90120FFF7A1FF064606F036
+:1084000078FF30003AD120780024C00700283FD000
+:108410001C2168460CF054FC68460178202001437A
+:108420006846017008A88570664968460184119401
+:108430000794817FF9200140891C684681770020DC
+:1084400001466846017700200146684641770421CD
+:108450008185C485018607A80A9011A80D9008A8F7
+:10846000099006F042FF0EAA09A96846FFF735FDFC
+:10847000054606F03EFF002D02D0284612B070BD22
+:108480004D486946098F4E3801816946898F41817F
+:1084900049482E3804720020F0E7F7B5464E9CB0EC
+:1084A00000212E3E0091317A012904D0022902D008
+:1084B00008201FB0F0BD40494E39CA8D824201D01C
+:1084C0000620F6E71D98824201D10720F1E73B48DC
+:1084D000012110AA9176401C1083002003239B02E7
+:1084E00002469A438B02D31810AA93846A46918459
+:1084F0003549D18410AA9077908317AA0A926A46C8
+:1085000091850C9009A807F031F8002425462746EC
+:1085100004A909A807F02DF8002810D082287BD1E3
+:10852000002C7CD0002D7AD010A804814581002435
+:10853000047518A8807812AD012872D07AE06846D8
+:10854000807D002F1FD0012862D16846818A1B4898
+:10855000401C814219D114A800906846408A0EAB95
+:108560001022002107F06DF8002877D110A8008AAA
+:10857000042801D006285BD16846018F1D988142EE
+:1085800046D10F2095E7012842D16846808A05210F
+:10859000C902884202D0491C884239D106484E3867
+:1085A000C18D6846408A814210D101270FE000004A
+:1085B00001290000010200003A14002001280000F7
+:1085C00001180000052A0000FFFF00000027002C12
+:1085D00001D0002D0DD01D99884219D114A9009108
+:1085E00004460EAB1022002107F02BF8002835D1ED
+:1085F00001E0009D0CE010A8008A022801D010289C
+:1086000016D1C0B218AA0EA908F01DFE00280FD17D
+:108610006846408A00907BE720E000E001E005200A
+:1086200047E72A1D15A918A808F033FE002801D035
+:1086300003203EE710A8007D0023001DC2B210A851
+:1086400002751E98029019A901950394009216A82C
+:1086500006F0D4FE002801D102213172FEF72BFF73
+:1086600027E73EB50B46401E84B201AA00211846FA
+:10867000FFF75DF806F039FE02A8009001AB012279
+:108680000021204606F039FE044606F032FE684618
+:108690000089012803D0FE49FE480CF04EFC20461C
+:1086A000FEF709FF3EBDF0B5FB4E0446307A89B0B7
+:1086B0000F46032804D0042802D0082009B0F0BDDA
+:1086C00004AA06A92046FEF7F4FF0500F6D1F248F9
+:1086D00023893830226901461039029100930192B2
+:1086E000039069460A8A638906A9206806F086FE17
+:1086F000002802D0FEF7DFFEE0E7002F03D0E648B7
+:10870000203000893880042030722846D6E738B5FA
+:108710000C00054608D00022694606F0ECFF002850
+:1087200004D0FEF7C8FE38BD102038BD694620468B
+:10873000FEF769FF0028F8D1A0786946C207D20F7A
+:10874000284606F0F3FFECE73EB50C0008D002AA7D
+:10875000694606F0D0FF002804D0FEF7ACFE3EBD0F
+:1087600010203EBD032120460CF0A8FA6846008880
+:1087700001A90005800FFEF732FF00280BD16846E3
+:10878000007920706846008801A98004800FFEF7F8
+:1087900026FF002801D003203EBD684600796070A6
+:1087A000A278EF20024068460088C10B09010A4305
+:1087B000F7210A404104C90FC9000A43A270F921F8
+:1087C0000A40800601D5012000E0022040006946F1
+:1087D0000243097A50084000C907C90F0843A07036
+:1087E00000203EBDFEB51D4614460E46074606F067
+:1087F0007CFD01A8009022882B463146384606F0C1
+:108800007CFD054668468088208006F072FD28467B
+:10881000FEF751FEFEBDF0B50C46002199B00746AB
+:10882000684681850D46002C11D0E068002806D0EE
+:10883000A06800280BD002886B469A850180A0783A
+:10884000012806D0022804D0072019B0F0BD10205E
+:10885000FBE72088002807D0401E80B201A906F05F
+:108860005EFE002842D136E08C48EEE769468A89F0
+:1088700021888A420BD26846007C002501282CD131
+:108880006846C0898649884227D1012525E08A4269
+:1088900003D1002D2FD06D1C01E0022D02D0032D3D
+:1088A0001BD31FE06946097C012916D169467C4B20
+:1088B000CA895B1ED11A9A421DD005DC7948101A6C
+:1088C00019D0012809D116E0012914D0FF39013946
+:1088D00003D1032506E00D26B60201A806F027FE07
+:1088E0000028C3D0822804D0002806D0FEF7E3FD7C
+:1088F000ABE7022DFAD13046A7E7E068002813D095
+:1089000006F0F3FC0BA800906A46A1882088928D9F
+:10891000E36806F0F2FC054606F0EBFC002D19D1E9
+:108920006846A168808D088002980078C00601D54D
+:108930005D488AE706F0D9FC0EA800906846808959
+:108940000CAB0222002106F07CFE054606F0D1FCAD
+:10895000002D01D02846C9E76846008F022801D0C3
+:10896000032072E7A078012808A8007C03D08007C4
+:108970000ED4082069E7C007FBD00820FEF7DAFA1A
+:10898000072802D34548401C5FE70825022001E084
+:1089900002250320694608762188684681831721CD
+:1089A000818611AA002302320DA906A806F06EF9ED
+:1089B000002802D0FEF7E7FD47E70FA800906846C1
+:1089C000838E042229463846FEF7CAFA3DE770B581
+:1089D000064615460C460846FEF72AFD00280AD131
+:1089E00006F083FC2A4621463046FFF7A8FC0446E1
+:1089F00006F07FFC204670BD70B514460D46064655
+:108A000006F073FC224629463046FFF746FD044631
+:108A100006F06FFC204670BD70B51E4614460D0072
+:108A20001AD0002C18D06168002915D00121FEF75A
+:108A30007DFF00280FD12068FEF7FAFC00280AD13C
+:108A400006F053FC324621462846FFF746FA044614
+:108A500006F04FFC204670BD102070BD70B5154665
+:108A60000C0023D00221FEF761FF00280ED1206800
+:108A7000FEF7DEFC002809D106F037FC2946204627
+:108A8000FFF711FE044606F034FC204670BD0000DE
+:108A9000287D00003E0600000C140020033000007A
+:108AA0000328000000280000013400001020EDE73A
+:108AB000FEB50746FF481C4615460E46824218D3AF
+:108AC000002C01D0844214D3384600F047FA002825
+:108AD0000AD1002C0FD101AA6946384606F00BFED8
+:108AE000002802D0FEF7E7FCFEBD6846008880063D
+:108AF00001D41020FEBD23462A4631463846FFF7F2
+:108B000071FEFEBDFFB585B01E4614000F4609D0AC
+:108B100003AA02A9059806F0EEFD002804D0FEF78E
+:108B2000CAFCCBE51020C9E568460089C00601D51E
+:108B3000E148C3E506F0D9FB01A800900023DF4A15
+:108B40003946059806F07DFD054606F0D2FB002D5E
+:108B500011D1002E0CD006F0C8FB00200090228816
+:108B600033463946059806F06CFD054606F0C1FB14
+:108B70006846808820802846D1E7002906D0D04B5F
+:108B80000A885B899A4201D8CE48704743E610B5FF
+:108B900086B004236C46A382C94B1C89002C07D0E5
+:108BA0005B898B4201D2914204D9C64806B010BD00
+:108BB0000620FBE76B4619825A8200210091019141
+:108BC0001C800221997005A9029104A903916946AC
+:108BD000FFF721FEEAE7F0B591B00D468120694626
+:108BE000087105F081FC0646002D08D02878B44CA9
+:108BF000012806D0022828D0072011B0F0BD10208F
+:108C0000FBE7A98801AAFEF789FC0028F5D1B00787
+:108C100034D568460079002820D1A879C0071DD036
+:108C200006F063FB002000906A892989A088EB6820
+:108C300006F063FB6946087106F05BFB694608793C
+:108C400000280BD0FEF737FCD7E7A98801AAFEF76A
+:108C500065FC0028D1D1342006420FD0012168469E
+:108C60000172017301794173F00609D5A188684644
+:108C70000182A18A01832069059004E00820BCE7F5
+:108C8000A08869460882FAF75FFB05461720694607
+:108C900088830AAA2B46023207A902A805F0F6FF2C
+:108CA00007466878000701D5FAF76AFB002F03D062
+:108CB0003846FEF768FCA0E7F00603D5207B0621C6
+:108CC00008432073B00602D50020FEF787FE08A8EF
+:108CD000009069468B8B208804220121FEF740F921
+:108CE0008BE7F0B5002695B014460D4600290FD04D
+:108CF000022C4FD3A71EBAB270480AF037FE2919CA
+:108D00001039CA7B8B7B11021943884242D1BCB215
+:108D100001A9012006F003FC7AE0029F38880107D0
+:108D200076D5002D41D0A9190691CA788B78361DC9
+:108D30001102B6B219438919A1422BD869468A8912
+:108D400006994B7809781B020B439A4222D1C00640
+:108D500023D506F0CAFA07A800900698AB19C17887
+:108D600080780A020699024348780978000208438D
+:108D7000002106F0C2FA009006F0BBFA0098002825
+:108D80003ED10698C178827808026946898B1043E3
+:108D9000884202D00B2015B0F0BD0698C1788278C9
+:108DA00008021043801986B22EE0C0062CD50020A0
+:108DB00007AA01461154401C80B21028FAD306F0CD
+:108DC00094FA06A80090684600238089102219466C
+:108DD00006F037FC0090002803D006F08AFA0098CD
+:108DE0000EE00BA86946009088890A8B07AB00212A
+:108DF00006F083FA009006F07CFA0098002803D071
+:108E0000FEF759FBC7E703E0388810218843388014
+:108E100001A806F08CFB002800D17EE7284D698868
+:108E2000002921D001226846027602770024447787
+:108E30000184172181850EAA234602320BA906A8B8
+:108E400005F024FF002802D0FEF79DFBA3E70CA845
+:108E5000009069468B8D288804220121FEF780F856
+:108E6000002898D16C8096E7002094E7F0B50024A4
+:108E700087B015460E46002A04D002A9012006F04C
+:108E80004EFB4CE0102007B0F0BD039800780007BF
+:108E900045D506F02AFA01A8009068460023008A0A
+:108EA000064A194606F0CDFB074606F022FA002FC7
+:108EB0002ED109E00020002001340000FFFF000057
+:108EC000EC13002003300000002E23D06846808879
+:108ED000298820183719001D814230D36946098A34
+:108EE0003970090A797069468988B970090AF97078
+:108EF00006F0FBF901A869460090088A8A883B1DA4
+:108F0000002106F09EFB074606F0F3F9002F01D082
+:108F10000320B8E7684680882018001D84B202A8A4
+:108F200006F005FB0028B0D0822802D0FEF7C3FA75
+:108F3000A9E7002E0ED02988A01C814201D20C2066
+:108F4000A1E72246314639480AF010FD3119087070
+:108F5000000A4870A41C2C80002094E700B585B05E
+:108F60006946FEF750FC00280AD16846007C0300E1
+:108F70000CF0D4F808052F2F2F2F080805310320F7
+:108F800005B000BD68468078012807D16846008892
+:108F90000321C902401A1CD001281AD068468079E2
+:108FA000012806D16846808815214902401A052803
+:108FB0000FD96846807A012811D168460189292095
+:108FC0000002081A05D0022803D0032801D0042883
+:108FD00005D10F20D4E7164916480BF0AEFF00204C
+:108FE000CEE738B5144A0021518003791AE0CC004D
+:108FF0002418A46800946C462488250707D5E50644
+:1090000005D5D90008182038C08B508006E06404CC
+:1090100006D59171C9000818C0889080012038BD1C
+:10902000491CC9B28B42E2D8002038BDFFFF0000C6
+:10903000287D000033020000EC1300200120F949D4
+:109040004006C861704770B5F64D0024AC702846E4
+:109050006C7020304470C4736C61AC72AC6209F007
+:10906000FEFEA861284630300AF098FD002804D0A2
+:10907000FF20EDA13A300BF060FFEF48C463012000
+:109080004006E86170BD70B50125EC4902260E600E
+:10909000E949CD63EA49C96A09070ED4E849403174
+:1090A000CB6AE84A53620B6B93624B6BD3628B6B58
+:1090B0001363C96BD30519435163DA49E24CC9699B
+:1090C00000282BD001282DD0FF20D7A169300BF02C
+:1090D00034FFDE48A063FF20043060632563DC4971
+:1090E000032008602061D849962040314860DA4862
+:1090F000D8494163D649FC390163D649091FC16388
+:10910000D349F03981630320D349000340394860D3
+:10911000D24910204860D248066070BDD1486061D5
+:10912000D14804E0D048E0306061CF48801F01435F
+:10913000A161CEE7BB49012008707047B949002002
+:109140000870704770477047BF4940310028086871
+:1091500002D00122104301E040084000086070473F
+:1091600070B50C46AF4D01460622E81C0BF049FDD8
+:109170006C7270BDAB48203040787047A94A91703E
+:109180005070704770B50D460446082904D9FF2079
+:10919000A5A1C6300BF0D1FE0022B44809E0910031
+:1091A000635809180B6053001B191B8C0B62521C6F
+:1091B000D2B2AA42F3D3206BAC494031086070BDF3
+:1091C0000B23DB4310B5C21A9F4998421FD008DC1D
+:1091D0001C3222D00A2A20D0142A1CD0182A08D1E6
+:1091E00017E0083011D004280DD0082809D00C2829
+:1091F00005D0FF208CA1F2300BF09FFE10BD0420A3
+:109200000CE000200AE0FC2008E0F82006E0F42052
+:1092100004E0F02002E0EC2000E0D820C86010BD9F
+:1092200080482030007B704710B5874CC178616260
+:109230000BF048FD0002E06110BD252808D026286B
+:1092400008D0272808D041000A2807D8091D06E0C1
+:10925000022105E01A2103E0502101E0891DC9B275
+:10926000794A916078494031486170476D49486159
+:10927000704770B56B4CA07200F01FFBA07AC0075E
+:1092800040D0734D2868800703D467A178480BF05D
+:1092900054FEA07A01061DD5800707D5744862A147
+:1092A000801C0BF04AFEA07A000613D520786A4E87
+:1092B000012816D0002804D051205BA1C0000BF07B
+:1092C0003CFE6C487061A0693061FF20624901304A
+:1092D00040394860A07A800714D52868C00708D1B3
+:1092E00002E06448001FEDE761484FA11A300BF01F
+:1092F00024FEA07A4007286801D5042100E0082157
+:109300000843286070BD70B50021464C012561748A
+:10931000002807D0012818D002281AD0544842A1AA
+:1093200045380BE000F0C9FA52482178001F0129A6
+:1093300007D0002907D011203BA140010BF0FDFD13
+:1093400070BD056070BD456070BD8120FFF791FF65
+:1093500070BD00F0B2FA6069002804D1452032A146
+:10936000C0000BF0EAFD6169A06A40184249C8607C
+:1093700039484249403001603E490C31416008148F
+:1093800035494039486027482030C57370BDF8B56D
+:109390000C2069460870314C6068C006C50F102665
+:1093A000A66034480021FC300161324B01221B1FB2
+:1093B0001A610BE000BF00BF00BF00BF00BF00BFCD
+:1093C00000BF00BF6B461A78521E1A706A461278A8
+:1093D000002A02D00269002AECD0016168460078B8
+:1093E000002804D1224810A131380BF0A6FD002D31
+:1093F00000D06660F8BD0B490020C861704710B509
+:109400000BF060FC00021049000AC86310BD0B4954
+:10941000022008607047094902200860104908606E
+:1094200070470000481400207372635C68616C5FD1
+:109430007263732E63000000C01F004080E100E0F3
+:109440008000001000170040001500405B0600007F
+:10945000001200404480004040F5014000130040ED
+:1094600080E200E006010200250003000016004033
+:109470007702000004100040408500404C8100400D
+:10948000F74902200860CBE7F6490870C8E710B535
+:10949000F5480AF08BFB002803D0F449F4480BF0A0
+:1094A0004CFD10BD10B5F0480AF098FB10BDF14915
+:1094B0004860B5E7EC4910B53039EF4B0022C86081
+:1094C0005A60896A0818ED49486000F0FDF910BD3E
+:1094D000E54810B5C6213038C160E74A0021516027
+:1094E000806AE649C630486000F0EEF910BD012000
+:1094F000E34940028860DC4900203039C860DF4918
+:1095000048608DE7D84900203039886288E7D6481E
+:10951000DA493038806AFE30886081E7D749002018
+:1095200088607DE7D7480168102291430160D649E1
+:109530000120886174E7D5490020C861D1480168DD
+:109540001022114301606BE700B5FFF7EBFFC6493E
+:1095500000203039087400BD00B5FFF7ECFFC249A8
+:1095600001203039087400BDC849CA69012A01D0F8
+:10957000002055E7BF4A403292685206520E5242CE
+:1095800002700020C86101204AE7F8B5BF4C20698D
+:10959000012806D00021B44830380078012802D0D4
+:1095A00004E04021F7E7E268012A04D000220A43E0
+:1095B000012802D004E02022F9E76168012905D0E2
+:1095C00000211143B24A002802D007E01021F8E739
+:1095D0001368012B02D1E368012B04D000230B4355
+:1095E000002802D007E00823F9E71168002902D11A
+:1095F000E168012905D000221A439F4E002802D0BD
+:1096000004E00422F8E77168012904D00021114325
+:10961000002802D004E00221F9E76068012829D07F
+:1096200000259C480D4301680906090E02D06169B6
+:10963000012900D000218C4F103F397300680006CB
+:10964000000E02D0A069012800D0002078738B485A
+:109650008068002803D000F03BFA012800D00020E9
+:10966000B8730021E160216161606161A161716095
+:109670002846F8BD0125D4E77B4930394874CFE648
+:10968000F8B5794E0127103EF07B0025002826D042
+:109690007C4C206800902560FFF779FE00982060E0
+:1096A0007A48C5600561456045618561744900146B
+:1096B00088603446203C2178734801290BD000296A
+:1096C0000BD06B486949B9300BF037FCF573607CFF
+:1096D000022879D0F8BD0760F8E74760F6E7FFF7A2
+:1096E00054FF0446604D0020303D68746348426872
+:1096F0006A620068A8622978002909D1A97800293E
+:1097000006D05C4B5B681B780B406978994309D0A5
+:1097100000213170E10707D0104602F016FD01214B
+:10972000A86A08E03770F5E7A10601D5022102E03A
+:10973000A10702D5002102F017FD4E4F79680622DD
+:109740000931E81C0BF030FA002807D1687A7968F3
+:109750000978C909884201D1012000E00020707019
+:10976000204600F0BBF83F48C6260078002816D0F7
+:1097700001282AD002283DD003285AD093203B4903
+:10978000C0000BF0DAFB287C002804D028780028E1
+:1097900064D0FFF7C7FE2878002860D086E0A007D5
+:1097A00001D501F0CDFB200703D50120EE6001F0CB
+:1097B000EFFB600703D50020EE6001F0E9FBA00697
+:1097C000E1D501F06DFBDEE774E0A00701D503F001
+:1097D00005FF200703D50120EE6003F07EFE600741
+:1097E00003D50020EE6003F078FEA006CBD503F091
+:1097F000FFFDC8E7A007BF27002802DA3C40F9F7C1
+:10980000F5FB200704D53C400120EE60F9F7EDFBA5
+:10981000600704D53C400020EE60F9F7E6FBA006A7
+:1098200002D53C40F9F7E0FB6006ACD5F9F7DFFB69
+:10983000A9E7A00701D5F9F7DDFB200703D5012033
+:10984000EE60F9F7D6FB600703D50020EE60F9F76C
+:10985000D0FBA00697D5F9F7CBFB94E71CE01EE000
+:1098600000E100E06000002078140020289400004F
+:10987000AD020000001500404081004040850040DE
+:1098800000F50140001200400010004000110040AF
+:109890000014004040160040FFF74DFE7BE7E868EB
+:1098A000002803D0A96A091828484160687C01286B
+:1098B00000D00FE7F9F7ACFBF8BD2549032008609D
+:1098C000881524498860ABE5224823494030C161AE
+:1098D000224981611F4940154860A1E570B50546E0
+:1098E000FFF7EBFF1E4CA17A080701D568071CD4CF
+:1098F0001C4AC80605D5507B002802D0907B002862
+:1099000013D0880602D5107800280ED1480602D55B
+:109910005078002809D000208A070026002A07DA9C
+:109920004A0704D50122227002E00120F4E72670E4
+:10993000CA0709D0AA0705D4890705D5002803D08E
+:10994000A80601D4FFF723FDA67270BD4085004034
+:109950000012004000F5014010100040448100401A
+:1099600048140020681400202E4800210170417026
+:10997000704770B5064614460D460120F7F7ACFE59
+:1099800028490120284B08709E60DC601D6170BD75
+:10999000F8B504460120F7F79FFE22490120087020
+:1099A00021494C60214900264E600321204D890247
+:1099B000A960204F002C0AD0012C03D01EA140200A
+:1099C0000BF0BBFA3E60032080026860F8BD38608F
+:1099D00001208002F9E710B51248017800290ED065
+:1099E0000321134A8902916010494A680021002A24
+:1099F00003D0154A1268427000E0417001700020E7
+:109A0000F7F76AFE10BD07480178002907D007481C
+:109A10004068002802D00C480068C0B27047407807
+:109A2000704700006100002000F5004000F1004098
+:109A300000F5014000F200407372635C68616C5F86
+:109A400063636D2E6300000000F40040364800217F
+:109A50000170417010218170704770B50646144640
+:109A60000D460220F7F738FE01202F492F4A0870D3
+:109A7000E41E14619660556070BD10B50220F7F7C2
+:109A80002BFE29490120087029480021016041600E
+:109A900081602849C014486010BD10B5224C207860
+:109AA000002811D001202349C002886000F02EF860
+:109AB0000021002804D0012060701F48006801E0E8
+:109AC00061701020A07021700020F7F705FE10BD16
+:109AD00010B515480178002905D000F017F80028C6
+:109AE00000D0012010BD407810BD10B50E4801789F
+:109AF000002909D000F00AF8002803D00E480068B9
+:109B0000C0B210BD102010BD807810BD084801689B
+:109B1000002905D04168002902D08068002801D0C2
+:109B200000207047012070476300002000F50040CE
+:109B300000F1004000F5014000F4004010B528217C
+:109B40000BF0BCF810BD40788006800E704740785E
+:109B50008006800EC01C70472820704770B50546EF
+:109B600000780A0700090001120F104328700B004B
+:109B70000BF0D4FA07050705070509050B000624B5
+:109B800008E00C2406E0222404E00024FEA1582072
+:109B90000BF0D3F96878800980012043687070BDAC
+:109BA00000780007000F704710B50622C01C0BF0AC
+:109BB00028F810BD0B4610B5C11C062218460BF044
+:109BC00020F810BD10B5062209300BF01AF810BDB0
+:109BD0000B46014610B50622093118460BF011F864
+:109BE00010BD0278BF23C9071A40490E0A4302700C
+:109BF000704700784006C00F704702785206520E38
+:109C0000C9010A43027070470078C009704770B5F7
+:109C10000C460546C11C2046062209300AF0F1FF19
+:109C200020784006400E207029784906C90FC901E6
+:109C30000843207070BD70B515460E4604461F2AB5
+:109C400003D9D1A1A9200BF078F920462A46314644
+:109C500009300AF0D6FF6078AD1D80098001A906A1
+:109C6000890E0843607070BD70B5054640780E4699
+:109C70008406A40E062C03D2C3A1B9200BF05DF913
+:109C8000A41FE4B21F2C00D91F2429462246093103
+:109C900030460AF0B6FF204670BD70B515460E4638
+:109CA00004461F2A03D9B8A1CD200BF046F920465F
+:109CB0002A46314609300AF0A4FF6078AD1D8009BC
+:109CC0008001A906890E0843607070BD70B5044616
+:109CD00040780E468506AD0E062D03D2AAA1DE20E1
+:109CE0000BF02BF9AD1FEDB21F2D03D9A6A1E22079
+:109CF0000BF023F921462A46093130460AF081FF4C
+:109D0000284670BD10B504220F300AF07AFF10BD4E
+:109D10000B46014610B504220F3118460AF071FFB8
+:109D200010BD10B5032213300AF06BFF10BD0B46B7
+:109D3000014610B50322133118460AF062FF10BD28
+:109D40004176090A81767047817E427E080210437F
+:109D50007047C176090A01777047017FC27E080209
+:109D6000104370474177090A81777047817F427FAE
+:109D7000080210437047C175090A01767047017ED9
+:109D8000C27D08021043704781757047807D70471F
+:109D900020300279C90652095201C90E0A430271E4
+:109DA000704720300079C006C00E7047203002791D
+:109DB000D206D20E49010A43027170472030007961
+:109DC0004009704710B505221F300AF01AFF10BD78
+:109DD0000B46014610B505221F3118460AF011FF47
+:109DE00010BD30B5411C837E0A461902D37D447EE6
+:109DF000927D1B0221431343674D827D8C1FAC4231
+:109E000010D8002A0ED0082A0CD88A420AD28B42D7
+:109E100008D8817F427F08021043A91D884201D8DB
+:109E2000012030BD002030BD00210A464254491CAB
+:109E30002229FBDB70474078C006C00E704740788F
+:109E4000C006C00EC01C70472220704710B50278B3
+:109E50008B07920892009B0F1A43027042785209B6
+:109E600052014270012908D0022906D0032905D0E9
+:109E7000FF2045A1A3300BF060F810BD01210A437B
+:109E8000427010BD10B502788B07920892009B0FAC
+:109E90001A4302704278520952014270012908D0D7
+:109EA000022906D0032905D0FF2037A1BD300BF0D1
+:109EB00044F810BD01210A43427010BD00788007AC
+:109EC000800F70470278FB23C9071A40490F0A43E5
+:109ED0000270704700784007C00F70470278F72380
+:109EE000C9071A40090F0A4302707047007800073B
+:109EF000C00F70470278EF23C9071A40C90E0A4302
+:109F0000027070470078C006C00F704770B50546F4
+:109F1000C1700B000BF002F90E080A0C0E101212A1
+:109F20000C14141212160C180C2413E0082411E05F
+:109F300002240FE017240DE00D240BE0012409E0BA
+:109F4000092407E0062405E0452000240EA1C000F6
+:109F50000AF0F3FF6878400940012043687070BD43
+:109F6000C078704770B5044640780E46C506ED0EC1
+:109F70001B2D03D904A109480AF0DFFF6019C01C9A
+:109F8000042231460CE000007372635C756C5F70F4
+:109F900064752E63000000007A0C00003A02000095
+:109FA0000AF02FFE70BD70B5044640780E46C50617
+:109FB000ED0E1B2D03D9A049A0480AF0BEFF611980
+:109FC000C91C042230460AF01CFE70BDC171090A8A
+:109FD00001727047017AC2790802104370474172DA
+:109FE000090A81727047817A427A080210437047E9
+:109FF000C172090A01737047017BC27A08021043DB
+:10A0000070474171090A817170478179427908026C
+:10A010001043704701717047007970474173090A16
+:10A0200081737047817B427B08021043704730B5D3
+:10A03000411C037A0A46C4791902214353791479E1
+:10A040001B0223437E4D00798C1FAC4210D80028A0
+:10A050000ED008280CD888420AD28B4208D8D07A71
+:10A06000917A00020843A91D884201D8012030BD21
+:10A07000002030BD10B50522001D0AF0C2FD10BD44
+:10A080000B4610B5011D052218460AF0BAFD10BD99
+:10A090004172090A81727047817A427A080210433C
+:10A0A0007047017170470079704710B50822001D94
+:10A0B0000AF0A7FD10BD0B4610B5011D0822184679
+:10A0C0000AF09FFD10BD0A7802734978417370470A
+:10A0D000027B0A70407B4870704710B508220E3032
+:10A0E0000AF08FFD10BD0B46014610B508220E3157
+:10A0F00018460AF086FD10BD10B5042216300AF08D
+:10A1000080FD10BD0B46014610B5042216311846DD
+:10A110000AF077FD10BD10B50822001D0AF071FD90
+:10A1200010BD0B4610B5011D082218460AF069FD46
+:10A1300010BD10B504220C300AF063FD10BD0B46B3
+:10A14000014610B504220C3118460AF05AFD10BD24
+:10A15000017170474171090A81717047C171090A23
+:10A160000172704700797047817942790802104383
+:10A170007047017AC2790802104370470171704735
+:10A1800000797047017170470079704710B5082257
+:10A19000001D0AF036FD10BD0B4610B5011D08224A
+:10A1A00018460AF02EFD10BD10B50822001D0AF059
+:10A1B00028FD10BD0B4610B5011D082218460AF0F7
+:10A1C00020FD10BD70B515460E4604461B2A04D965
+:10A1D0003720194900010AF0B0FE2A463146E01C3A
+:10A1E0000AF00FFD6078E90640094001C90E0843F6
+:10A1F000607070BD70B5054640780E46C406E40E2A
+:10A200001B2C04D9DF200C4980000AF096FE224660
+:10A21000E91C30460AF0F5FC204670BD4078C006C7
+:10A22000C00E1B2801D8012070470020704710B5D0
+:10A2300022220AF0E6FC10BD889F000043020000C5
+:10A240007A0C0000FEB50F46044601460646203053
+:10A250002546C031603640350190032F04D0002FD1
+:10A260002DD0012F2BD04BE000206080A080E0801B
+:10A2700020816081A082E085E0826874A074E0742F
+:10A28000A076E076A073E07320746074019B9874EC
+:10A2900001232B74A88228830876E883B070688332
+:10A2A000A873E87320776077019988720199087420
+:10A2B00030727072B0723274B074A883FEBD002028
+:10A2C000A8822883012F52D0E08B0090608C0290EE
+:10A2D000C00000990AF00FFD401C80B2E88200998E
+:10A2E000192241439202914201DD401EE8827D2005
+:10A2F000000200990AF0FFFC401C3080002F01D0C2
+:10A30000022FDBD10198007AC1060198C90E0172B3
+:10A3100000206873221824218B5C4032D9075B0827
+:10A32000DE07C90FF60F71185B08DE07F60F71180C
+:10A330005B08DE07F60F71185B08DE07F60F711871
+:10A340005B08DE07F60F71185B08DE07F60F76185C
+:10A350005908891911726A7B401C5118C0B269737F
+:10A360000528D7D3002FA9D10020A874FEBD4A7FAD
+:10A370002046E030022A12D0097F022913D050A1D2
+:10A3800073200AF0DAFD012000900290E08BA98B87
+:10A39000484300990AF0BDFCA883029898E7818899
+:10A3A00000910089F1E7018A0091808AEDE770B59C
+:10A3B00004464034667B0546002E68D0252E66D8BC
+:10A3C000002964D03E20405DA27B4843101825211F
+:10A3D0000AF091FC0846A1734207C908520F3C4B92
+:10A3E000691820319A5C09798A4367D031460AF0AE
+:10A3F00082FC491CCAB2002006E0002804D02918BB
+:10A400004031C979511ACAB2291848235B5C93427A
+:10A410003AD320310979C943CB07DB17D21A521E30
+:10A420001206120E34D08B07DB17D21A521E1206F8
+:10A43000120E2FD04B07DB17D21A521E1206120E25
+:10A440002BD00B07DB17D21A521E1206120E27D082
+:10A45000CB06DB17D21A521E1206120E23D08B0621
+:10A46000DB17D21A521E1206120E1FD04B06DB1734
+:10A47000D21A521E1206120E1BD00906C917511A03
+:10A48000491E0A06120E17D0401C0528B5DB70BD08
+:10A49000C00013E0C000401C10E0C000801C0DE0B4
+:10A4A000C000C01C0AE0C000001D07E0C000401D45
+:10A4B00004E0C000801D01E0C000C01DE07370BD5D
+:10A4C0007372635C6C6C5F7574696C2E6300000062
+:10A4D0005451010010B5FF48002101704170817096
+:10A4E000C17041718171C171083009F057FB0028BA
+:10A4F00004D0FF20F8A184300AF01FFD10BD10B574
+:10A50000F44900204872081D09F048FB002804D0D7
+:10A51000FF20F1A1C3300AF010FDFFF7DBFFF14887
+:10A52000FFF782FC0021EF48FFF7E4FC0121ED4832
+:10A53000FFF78CFC10BDE2E71B207047E5494A7A23
+:10A54000002A01D0002070474881012048727047DE
+:10A5500010B5E0494A7A002A02D04989814201D0E7
+:10A56000002010BDDB48001D09F020FB002804D0AE
+:10A57000FF20D9A1B4300AF0E0FCD648001D09F054
+:10A580002DFBFFF7A7FF012010BD70B5D14C0025B2
+:10A59000627A002A02D06289824201D00D700DE0F9
+:10A5A000227863789A4203D322786378D21A04E03F
+:10A5B00062782378D21A10239A1A0A70FFF7C8FF1C
+:10A5C000002801D06572012070BDC2494A7A002A74
+:10A5D00004D04989814201D1012070470020704791
+:10A5E000BC490A784B78521C1207120F9A4207D0C6
+:10A5F000097822225143BC4A891801600120704722
+:10A6000000207047B34801784278491C0907090FB8
+:10A61000914206D00178491C0907090F01700120F9
+:10A62000704700207047AB494A7A002A04D0498914
+:10A63000814201D10120704700207047A5490A7866
+:10A640004B789A4207D0497822225143A64A89186A
+:10A650000160012070470020704710B59D4C2078A4
+:10A660006178884216D06078401C0007000F607047
+:10A67000201D09F09BFA002804D0E078401CE0700F
+:10A68000012010BDA078401CA0709248001D09F068
+:10A69000A5FAF5E7002010BD8E4801784078814288
+:10A6A00001D101207047002070478A480178427824
+:10A6B000914202D30178407803E041780078081A8B
+:10A6C0001021081AC0B270470F20704770B5814C36
+:10A6D0000D46617A002916D06189814213D1002686
+:10A6E0002E70201D09F062FA002805D1A07828708C
+:10A6F000A670201D09F072FA2878E17840182870B9
+:10A70000E670012070BD002070BD76490160704781
+:10A7100070494A7A002A04D04989814201D1012036
+:10A720007047002070476B494979002901D000200B
+:10A7300070476E49016001207047664841790029E1
+:10A7400001D00020704701214171084670476149DE
+:10A750004A7A002A04D04989814201D101207047F8
+:10A76000002070475B494979012901D000207047DA
+:10A770005E4901600120704756484179012901D0A6
+:10A7800000207047002141710120704751484079F5
+:10A79000012801D001207047002070474D494A7AB6
+:10A7A000002A04D04989814201D10120704700204C
+:10A7B000704770B5474C0546A0790721401C0AF048
+:10A7C0009AFAE079814208D0A0792221484347498A
+:10A7D000223140182860012070BD002070BD10B5E6
+:10A7E0003C4C0721A079401C0AF085FAE0798142AF
+:10A7F00007D0A0790721401C0AF07DFAA171012041
+:10A8000010BD002010BD33488179C079814201D14B
+:10A8100001207047002070472E494A7A002A04D050
+:10A820004989814201D1012070470020704710B54D
+:10A8300004462848083009F0B9F9002815D12549FF
+:10A840008879CA7990420CD0C87922214843274997
+:10A850002231401820601F48083009F0BFF901205C
+:10A8600010BD1C48083009F0B9F9002010BD10B522
+:10A8700004461848083009F099F9002815D11549FF
+:10A880008879CA7990420CD0C87922214843174967
+:10A890002231401820600F48083009F09FF901204C
+:10A8A00010BD0C48083009F099F9002010BD094886
+:10A8B00010B5083009F07AF9002822D1054CA079AA
+:10A8C000E17988421AD0E0790721401C0AF013FA96
+:10A8D000E1710DE0660000207372635C646D5F716E
+:10A8E0002E630000AC1700207C1400209C16002072
+:10A8F0002046083009F072F9012010BD0C4809F01B
+:10A900006DF9002010BD0A4808388179C07981426C
+:10A9100001D101207047002070470548083881792F
+:10A92000C079814201D101207047002070470000AA
+:10A930006E00002070477047FF20704770477047D7
+:10A9400000207047002070470020704700207047AB
+:10A95000002070470020704700207047002070479B
+:10A96000002070470120704700207047002070478A
+:10A970000020704700207047F8B5FE4D0446287F40
+:10A98000002600280AD0002921D1667010202070EE
+:10A99000687FA070A87FE0702E7718E0A879012862
+:10A9A00001D00020F8BD002911D16670F149E87985
+:10A9B00001270831002801D0132000E00520207075
+:10A9C0001422A01C0AF01DF9A771EE71AE710120CE
+:10A9D000F8BD70B5E8480078002802D00C26304653
+:10A9E00070BD0026E34D3446203DAE74EE746E75A6
+:10A9F000AE752E7528466E7320384673E87D0028A4
+:10AA000004D0FEF78BFDFFF748F8EC75D948847148
+:10AA1000C47104772030FFF791F8D6484830FFF72B
+:10AA20008DF8DCE710B5D44C00232370D14C203CCA
+:10AA3000E375D04B01241C71603B583307C3FFF70B
+:10AA4000C8FF002803D0CDA1FF200AF076FA10BD80
+:10AA5000C8482038807C7047F8B5C64D0646407B14
+:10AA6000203DE873C34837791346AF73B27B427118
+:10AA70000446603C217006221946601C0AF0C1F8A9
+:10AA8000B07960730622F11DE01D0AF0BAF8687B08
+:10AA90000126002800D0EE74B6484038407B0028DC
+:10AAA00000D02E753B000AF039FB0504062347064B
+:10AAB000490000211DE0AF4801212030FFF74EF88A
+:10AAC000AC48E11D2030FFF77DF8607B002807D0FF
+:10AAD000012807D0FF20A9A142300AF02EFA0CE08D
+:10AAE000002100E00121A3482030FFF786F804E0B0
+:10AAF0000621A0482030FFF731F800206875A875BE
+:10AB00009C48611C2030FFF74FF89A48217820308C
+:10AB1000FFF767F8974804214830FFF71FF895487A
+:10AB2000611C4830FFF740F8924821784830FFF721
+:10AB300058F8AE740020F8BD0221DAE7FF208FA19B
+:10AB40004C30CAE770B58B4C0125203C0246A575F8
+:10AB500088488079002801D03A2070BD8548603847
+:10AB60000378934206D1002262750622401C0AF047
+:10AB700048F86575002070BD70B504467D4D002015
+:10AB8000203D28752846224632380AF03AF82846F1
+:10AB9000203844730120287570BD764908717047CC
+:10ABA00010B5744C0022203CE274607302462046CB
+:10ABB00012380AF026F80120E07410BDF8B500F054
+:10ABC00044FB6C4C0025203CE07D002804D0FEF7BF
+:10ABD000A5FCFEF762FFE575674E3570FEF762FC77
+:10ABE000A07B012804D00021084601F077FAF8BDC7
+:10ABF0000021022001F072FA5E4CA07901270028A2
+:10AC000007D0207F0028F2D105206077A57727772D
+:10AC1000F8BD70780028FBD0564906226039487B81
+:10AC20006073C91D0846673009F0EBFF3C202072B5
+:10AC3000A7717570F8BD10B54E4C203CE17B207CAF
+:10AC4000CA0701D0C2070BD08A070FD582070DD4DF
+:10AC50002620FEF7F2FA207C02210843207410BD62
+:10AC60002520FEF7EAFA207C0121F6E74907F6D510
+:10AC70004007F4D42720FEF7E0FA207C0421ECE71B
+:10AC800070B53D4D2878002873D13A4C203CA07C0B
+:10AC900000287DD0FEF7FBFB0026267466746E70DC
+:10ACA0003046FEF7F1FB0020FEF7EDF93748FEF7DE
+:10ACB000BBFA2546403D296E8857FEF781FA334896
+:10ACC000C01EFEF79CFBFEF712FCFFF7B4FFFEF779
+:10ACD00031FAFEF7D5FB0120FEF715FB0F21052009
+:10ACE000FEF74CFA2978681CFEF73AFAA07B012897
+:10ACF0000CD004280AD0E07C002807D02146123965
+:10AD00000846627B5230FEF796FFE674207D0028ED
+:10AD100008D0184840380146427B12398830FEF787
+:10AD2000BCFF2675607D00280BD01248691C2030BE
+:10AD3000FEF73AFF0F48691C4830FEF735FF66758D
+:10AD4000A675E86D0178002903D00178001DFEF793
+:10AD500019FAA86D0178002907D00178054A401C2E
+:10AD60007332FEF77AFE0120E075FEF79BFB0020B0
+:10AD700070BD0DE030180020740000207372635C19
+:10AD80006C6C5F6164762E63000000005F5101000F
+:10AD90000C20EDE7FE494860704770B50546FEF7A8
+:10ADA000A6FB002D06D00020FEF763FAFEF7C2F9DD
+:10ADB000FFF741FFF74C607C002809D0A07B0128F9
+:10ADC00003D1F549F5480AF0B8F8FFF7F7FECFE7E9
+:10ADD000002D15D0A07B01280CD0FF202D30FEF7D0
+:10ADE00045FA0220FEF78FFAEA4820300079012860
+:10ADF00003D005E099208000F1E70220FEF73CFC3B
+:10AE0000E4484030FEF753FB012008F084FDFEF7D4
+:10AE100099F9A07B03000AF081F9050404040604F3
+:10AE20000A00032000E00120FEF723FA04E0DB48DB
+:10AE3000D9492A300AF081F8E17B207C8143012046
+:10AE4000002903D1A17B012903D06074D049087087
+:10AE50008EE700212174F9E710B5FEF718FBCC4806
+:10AE6000007800280ED1CB48807C00280AD0002032
+:10AE7000FFF793FFF6F7A5FAC648203000790128BE
+:10AE800006D007E000F0E1F9FEF70CFB0C2010BD46
+:10AE9000F8F7BEF8002010BDBD490120487070478A
+:10AEA00070B500F0BEFF00281BD0B94E3078B94C09
+:10AEB0002034012818D0022801D0032834D0B64904
+:10AEC000B7480AF03AF83078002809D0F6F779FA4E
+:10AED0003078022804D12079012801D1FEF7CCFB7B
+:10AEE00046E7FFF76BFE43E7AA4DA87B03281BD07C
+:10AEF000FEF7EEFAE87D002803D0FEF7BEFDFEF770
+:10AF000006FBA4489030FEF7D2FA012008F004FDB9
+:10AF1000A87B01280CD004280AD061796F20012970
+:10AF200008D0032906D006E00120FFF736FFCAE764
+:10AF3000012000E07F20FEF79CF902203070C2E77C
+:10AF400010B59448C07D002803D0FEF7E7FAFEF75D
+:10AF5000A4FD00F066FF002817D08D4C2078022851
+:10AF600004D08F488C492B3009F0E7FF0120FFF710
+:10AF700014FF2078002807D02078012804D08848C2
+:10AF80008549333009F0D9FF10BDFFF717FE10BD1A
+:10AF9000F1B582B0FEF744F90746FEF799FD0128A6
+:10AFA00029D000267A480078022804D07C487A49C3
+:10AFB000563009F0C2FF774DE87D002803D0FEF738
+:10AFC000ADFAFEF76AFDFEF792FA72489030FEF78E
+:10AFD000E7FD0446029800286DD0FEF7CBF8002864
+:10AFE00069D020466B4C030020340AF097F80664C1
+:10AFF0006464066425640126D4E7A87B01285AD03E
+:10B00000042858D0374304D16079002801D00228A1
+:10B0100051D160486830FEF74AFA012008F07BFC05
+:10B020000120FEF726F95A480321017020790128F2
+:10B0300044D1FEF721FB41E056489030C178D0382A
+:10B04000C27991421DD10146D0310A79037A9A42E0
+:10B0500017D14A79437A9A4213D18A79837A9A42EC
+:10B060000FD1CA79C37A9A420BD10A7A037B9A42EA
+:10B0700007D10978407B4906C90F814201D10121DE
+:10B0800000E00021A87B012801D0042801D100297B
+:10B0900008D100280FD1374304D16079002801D0AE
+:10B0A000012808D13B489030FEF79BFE002802D0D3
+:10B0B000A87D002812D00120FFF76FFE34480178E8
+:10B0C00000290AD00178012907D00078032804D08C
+:10B0D000324831492A3809F030FFFEBD2C4F2D4946
+:10B0E000786804229F31343009F08BFD29484021D3
+:10B0F000903000784006C20F78680A54254906222D
+:10B100009331413009F07DFD224978680322A33153
+:10B11000383009F076FD1F483B219030827D7868F9
+:10B120000A541C4990310A7ECB7D12021A43828751
+:10B130008A7E4B7E12021A43C2830A7FCB7E1102A3
+:10B1400019430184134990318A7F4B7F11021943BF
+:10B15000418410490522AF31243009F052FD0D49D8
+:10B160007F68B0310879C20638462030D20E009090
+:10B17000827709794909C177A079002819D0207F01
+:10B18000002856D1E07900280CD013200BE00000F5
+:10B1900074000020101800207CAD0000E7030000C0
+:10B1A00093020000052060770020A077012020771F
+:10B1B0003FE0E97D2B48002924D000212172B98984
+:10B1C00061814021C95D617339460622413109F030
+:10B1D00018FDF88BA082388CE082788C2083009850
+:10B1E000C07FA076E07E400840003043E076FEF766
+:10B1F0007CFCE17E4000C907C90F0143E1760120D4
+:10B20000E07115E000212172B98961814021C95D99
+:10B21000617339460622413109F0F3FCF88BA082B4
+:10B22000388CE082788C20830098C07FA076012043
+:10B23000A0710D4C0020207000F007F8FEF732F9E5
+:10B240000120616800F04AFF38E710B5FEF75AF9AF
+:10B25000FEF74DF9FEF79BF80020FEF70AF8FEF71F
+:10B26000DAF810BD3E180020740000208107C90ED6
+:10B27000002808DA0007000F08388008FA4A800022
+:10B280008018C06904E08008F84A800080180068CF
+:10B29000C8400006800F704710B500F079FF10BD60
+:10B2A00070B5F34C0546A26800290DD0002A04D0E1
+:10B2B000FF20F0A1363009F040FEA560F6F782F8D5
+:10B2C0000220F6F779F870BD002A04D1FF20E9A129
+:10B2D0003E3009F032FE0020A060F6F774F801203D
+:10B2E000F6F772F870BDE2480C30C07E002801D03D
+:10B2F0000020704701207047DD480C30C07E704749
+:10B30000DB483430C07E70470021C1768176016011
+:10B310004162D7480C30C07E002807D1D448343071
+:10B32000C07E002802D1D24901200870704710B5B4
+:10B330000B46C17E847EA14204D01146184607F018
+:10B34000A6FB10BDFFF7E0FF10BD38B5C84C606824
+:10B3500001684978012924D00121684606F050F996
+:10B3600068460078C749000209F0C5FC60680268B9
+:10B37000C0685268511807F0A7F96168C860BC49F5
+:10B38000606834310022884215D0018B002912D028
+:10B390004272032101720271021D017FFFF7C7FF94
+:10B3A00038BD7D21C068C90007F08EF96168C860AA
+:10B3B000B5480861E3E7018B491C01830221417212
+:10B3C000E7E7FFB5AA4E01460C36706A3468056897
+:10B3D00085B060680190306A03906A880798801A87
+:10B3E00080B202900898002804D0274638372046BB
+:10B3F000483002E0371D2846643000900320387141
+:10B40000002915D001297DD0022951D003297AD0F5
+:10B41000AF2098A1C00009F090FD08980028387965
+:10B4200072D0032803D093A1984809F086FD3BE130
+:10B43000306A002804D195488EA1723809F07DFD4C
+:10B440009249A88F9F3948434018069900F0A6FEFC
+:10B45000A0618E49E88B9F394843069900F09EFE13
+:10B46000E0618A4AA88F9F3A316A50430918A0695F
+:10B47000874A091A89183B22A162844B525D9F3B7F
+:10B480005A4382181018FF30163020626062306A0A
+:10B49000081AFF38ED213538C9008842BDD27D49F0
+:10B4A000884204D2794873A1653809F046FDB7E0B7
+:10B4B000764AA88F9F3AE16850430818069900F031
+:10B4C0006DFEA0617149E88B9F394843069900F0F1
+:10B4D00065FEE061306A002804D16C4865A15D38E2
+:10B4E00009F02BFD5820405B6B4A0028A88FE168CB
+:10B4F00020D050430818A169401AA0622169A068B1
+:10B50000484302E01FE04EE0C9E0A169624A4018EA
+:10B510003B21495D514341180818FF301430206227
+:10B52000E88BE1695043411A0F208001081A6062DC
+:10B53000A06A35E050430818A169401A3168D33831
+:10B5400049684018D9E7284640300190008B002810
+:10B5500002D0306A002804D14C4846A1453809F091
+:10B56000ECFCE88B4C49E3694843C01AA06201999E
+:10B570009C460A8B2169A368521A4B43A16959184A
+:10B5800063465343C9183B22525D434B5A438A18C2
+:10B590005118FF31143121620F218901411A616272
+:10B5A000316A401A35E00898002803D03420005D45
+:10B5B000002873D1E88B38494843E169401A029961
+:10B5C0004843A062284640300490008B0028019830
+:10B5D00029D0002804D02D4826A11F3809F0ADFC41
+:10B5E00004982D4A018B02980818E16948434000ED
+:10B5F000FF3014302062E88B5043411A0F20800145
+:10B60000081A606200F0C4FD00281CD0A16A0398EB
+:10B61000081AFF38ED212338C900884200D3FCE620
+:10B6200002203871F9E6002802D00398002804D1DE
+:10B63000164810A1263809F080FC0198A16AD33879
+:10B640000818A062CCE706F0A8FD0146706907F073
+:10B65000CDFFA16A081AFF38ED211E38C9008842C3
+:10B66000DDD2012009B0F0BD00ED00E000E400E013
+:10B67000C81800207372635C6C6C5F6C6D2E733045
+:10B680002E63000010270000B78913008105000019
+:10B6900036040000A3020000E20400002AE00328B0
+:10B6A00002D1FD4907200870A16A706907F00CF803
+:10B6B000B860616A206A884202D90098016001E09E
+:10B6C000009908600098F54900680818F860A98892
+:10B6D0000798081A00B2002801DD022000E00020CF
+:10B6E0007871089838700898002805D03420005DDB
+:10B6F000002801D00220B5E70898012148402034F5
+:10B700006075317F3A463046FFF711FE0020A9E709
+:10B7100010B5E14900284A68516A096807D01268E3
+:10B72000C98BDF4BD2695943891A09F0E4FA10BD7D
+:10B73000F8B5D94F35227868416A0C680168525CC7
+:10B74000002A0AD0498E6288914206D1407A0028A8
+:10B7500003D1D449D44809F0F0FB06F01EFD0146A0
+:10B760007868406907F042FFFFF7D2FF7968658883
+:10B770000B682E185A8EB24202DB521C5A8602E027
+:10B78000401C2818588608683622125C002A05D109
+:10B79000428E23899A4201D1521C4286088B03288B
+:10B7A00002D2401C088302E00868408EA080204638
+:10B7B0004030C18A808A081A6188401E401885B2CC
+:10B7C000203416E0496AE67F097976004B00B749D4
+:10B7D000007DCB5A895BC91889B20023FFF7F1FDC0
+:10B7E000002811D0012810D0AF48AE493A3009F0F6
+:10B7F000A4FB79680868428EAB1A1BB2002BE1DA11
+:10B800000820E07400F00DFEF8BD78680068418EF5
+:10B81000491C4186EDE770B59F4D1F202870A86830
+:10B8200000210162C27E130009F078FC0454540325
+:10B830004654426A146802681170026851600068D8
+:10B840002030407D002808D106F0A7FCA9680968CF
+:10B85000096C07F0CBFE002815DCA86801684A8E49
+:10B8600061888A4204D12289511A6181628004E090
+:10B87000511A61810168498E61800268C168116452
+:10B88000C16841610FE0A8680168098E6288891A61
+:10B8900061810168098E618001680A6CC2600A6C6E
+:10B8A0004261886C6066204601F06FFC00280ED073
+:10B8B0007B487C49D33808E0C1684161FFF7E0F973
+:10B8C000002804D076487749CD3809F036FBF5F7E3
+:10B8D00078FD70BD72487349C638F6E710B56E4AF8
+:10B8E0000B00526809F01AFC0906090F1F0C2D2DD8
+:10B8F000082A2D00FFF78FFF10BD00F05DFC10BD82
+:10B90000FDF7BEFE10BDD07E022806D0D07E0328F3
+:10B9100006D00120634940020DE0FFF709FF10BD8A
+:10B92000FFF713FD10BDD07E0228F6D0D07E03288D
+:10B93000F6D05C495E4809F000FBF1E706F013FC25
+:10B9400010BD5B4857490F3009F0F7FA10BDF3B549
+:10B9500081B0514C02982546002601270C35030082
+:10B9600009F0DCFB0906313C3C3143433C3C4300DD
+:10B97000494801210C30FFF793FC02990198FFF729
+:10B98000ADFFE87E022828D1A0680468406A0668F6
+:10B9900006F0E2FBF18B424A5143E269891AD3393E
+:10B9A000FF223232E162904202D24248081802E09D
+:10B9B000081A41494018E0624048E16A814200D8D3
+:10B9C0000846E06206E001460198FFF787FFE87E3F
+:10B9D000022802D1286820300775FEBD0146656047
+:10B9E0000198FFF77BFF6660FEBDFF202D49AB305D
+:10B9F00009F0A3FAFEBDF8B5064627480D46002417
+:10BA00003430254F0B0009F089FB09060C10100C8F
+:10BA1000161610101600204801213430FFF740FCA4
+:10BA200029463046FFF75AFFF8BD78603046FFF7E9
+:10BA300055FF7C60F8BDFF201A49DF3009F07DFA20
+:10BA4000F8BDF0B5144C0020616885B003268E76F1
+:10BA5000CA7E0746032A03D0C97E00293FD03FE0B3
+:10BA6000087F002804D112480E49CE3009F065FA4B
+:10BA70006068057F684606710221417106F08DFB02
+:10BA80000290FF20F530039001216846017069465D
+:10BA9000284606F0FCFF14E0C81800201917000023
+:10BAA000E204000074B60000620600006451010068
+:10BAB0000B0200007CF8FFFFADF9FFFF3812000019
+:10BAC00020BF6068007F07F01DFE0028F8D0606886
+:10BAD000007F06F048FB60680777FFF715FC012040
+:10BAE00061688F7605B0BEE5FE494A68907600E051
+:10BAF00020BF4A68D07E002803D0D07E937E984233
+:10BB0000F6D0D07E002803D0002000219176704727
+:10BB10000120FAE770B5F34900240C31CA7EF14DDB
+:10BB2000032A03D02831CA7E032A17D1696000286E
+:10BB300010D001280AD0EC49EC4809F0FEF90020A9
+:10BB40006968002C0860686008D070BD0320FFF7AA
+:10BB5000CBFF01E0FFF775FF0446F0E70C2070BD56
+:10BB6000F8B5E04F04461F25E67E330009F0D6FA0B
+:10BB7000042A20031B20DB480C30844203D0DA491E
+:10BB8000DB4809F0DAF902207C60FFF7ADFF0028FE
+:10BB900005D07968002008604862786012E00C25C2
+:10BBA000002078600BE00120FFF7B4FF054604E0B9
+:10BBB000CF48CD490C3009F0C0F9002D02D0E07E0D
+:10BBC000B042D1D1E07E002804D0C948C649123025
+:10BBD00009F0B3F9F8BDC34810B50C30FFF7C0FF4A
+:10BBE000C0483430FFF7BCFFBE4900205C31087507
+:10BBF000C0494870BB490C3148610A46283250613F
+:10BC00008876907601220C390A708860486010BDF1
+:10BC100070B504460120FFF729FBC5B20B20FFF7E2
+:10BC200025FBC0B2854204D0B148AF49343809F091
+:10BC300084F90120FFF71AFBC5B21820FFF716FBA5
+:10BC4000C0B2854204D08920A749800009F075F967
+:10BC50000420C043FFF70AFBC5B21920FFF706FB1B
+:10BC6000C0B2854204D0A2489F49323809F065F934
+:10BC7000A0489C490C38047000200C31C8768876A6
+:10BC80000A462832D07690769A4B0124083B1C71E4
+:10BC900018604862506208601060FFF79CFF70BD3A
+:10BCA0009048007870479349083908717047F3B598
+:10BCB0000D468C4983B00C31CA7E08462830894C29
+:10BCC000002A02D1C27E002A03D0C97E022903D0F5
+:10BCD00005E08948616006E0C17E002901D00C20A2
+:10BCE00000E76060854806F0EAF9616808776068F7
+:10BCF00080490160007F002804D17C487A4962387D
+:10BD000009F01BF906F028FA7D49884200D208465E
+:10BD1000FF30C83086B260680321C1760027012D4C
+:10BD20002FD0734A03991A32514302685160006858
+:10BD300001210170684605F063FC6846007871498E
+:10BD4000000208F0D8FF019106F027FA0199711856
+:10BD500006F0BAFC6168032DC86021D06A4808610A
+:10BD6000606803210172022141720771021D017F87
+:10BD7000FFF7DDFA60680783072020700020676006
+:10BD8000B0E606F00AFA314606F09EFC6168C8602B
+:10BD90005E48086108680770096801204870DFE79D
+:10BDA0005B48DCE77047F8B54E4E0C36F17E002953
+:10BDB00004D131462831C97E002901D00C20F8BDBC
+:10BDC0000221F176474C4B4F5C34083F7762346078
+:10BDD000002538602575397920304A004D49C07FEB
+:10BDE0008A5A4000085A2B46101881B22A46284623
+:10BDF000FFF7E7FA002804D03C483B49323009F00D
+:10BE00009CF825610120A56020756586258635484A
+:10BE10007C30857539684888401E4880358300200D
+:10BE2000F8BD10B52F4801248068817E03290CD00D
+:10BE300001684978002906D0006A3749884202D94A
+:10BE40000024FFF729F8204610BD0024FBE7254811
+:10BE5000806802681178491C1170016A0068C26A22
+:10BE6000914204D8007D012801D0012070470020B4
+:10BE7000704700207047F8B51A481A4C0C306060C3
+:10BE8000416A00260D68006834212F460E54403761
+:10BE9000B97C002966D1007D032863D106F07DF9C5
+:10BEA00001466068406907F0A1FB00285ADDFFF7F2
+:10BEB0002FFC6988401C4118606802681186006880
+:10BEC000018E2A89511A09B200294BDD0121203047
+:10BED0008175F88AB98A401A6988401E401887B26D
+:10BEE00039E00000C818002074B600007703000095
+:10BEF00057020000880000204FB90000F7B9000089
+:10BF0000F605000010270000F7130000B7891300A2
+:10BF1000E2090000645101002C841300496A097988
+:10BF20004A00CE498B5A028E007D94463F22525DD4
+:10BF30005200895AC91889B201236246FFF741FAB3
+:10BF400000280FD001280FD002280BD0C920C449E7
+:10BF5000C00008F0F2FF61680868028EBA1A12B2D7
+:10BF6000002ADBDA6660F8BD60680068018E491C53
+:10BF70000186F0E7F8B5BB4D0026AA680128516A92
+:10BF80000C6810D00720287006F052F8B6480078E8
+:10BF9000F6F7E8FDA86806830268618851860068A4
+:10BFA00020308675F8BD087913684100AB481F7DC5
+:10BFB000415A032F17D01A7D022A21D01A7D012A57
+:10BFC000E2D13F231B5D22895B00C05A0023401849
+:10BFD00081B20120FFF7F5F90028D5D0A049A34888
+:10BFE00008F0ABFFD0E71E6112683F2396601B5D2F
+:10BFF00022895B00C05A0023401881B20320E9E780
+:10C000005822125B1A613F231B5D22895B00C05AD4
+:10C010000023401881B20220FFF7D3F9AA6801215A
+:10C0200012681175D8E738B58E4C0021A0680D460E
+:10C0300000684278002A01D045701FE0007800288F
+:10C0400009D00121684605F0DBFA68460078884986
+:10C05000000208F050FEA0680268C06852685118DB
+:10C0600006F032FB0146A068C160057102214172F1
+:10C07000021D017FFFF75BF9A068058305F0D8FF7B
+:10C0800079480078F6F76EFD38BD10B50146754A5F
+:10C090000B00906809F042F8060D150408190C1CF5
+:10C0A000012100F0A8F807E00021506800F0A3F893
+:10C0B00010BD0120FFF75EFF00210846FFF7F0F8F2
+:10C0C00010BD00680321017510BD00F0A7F810BD78
+:10C0D0003D206349400108F030FF10BD70B5614C50
+:10C0E000002809D0012816D0022821D05F485C49D9
+:10C0F000C73008F022FF70BDFFF795FF002108460A
+:10C10000FFF7CEF8A068807E002801D01F2000E055
+:10C110000720207070BDA068002501684D70FFF7F2
+:10C12000F3F80320F6F763FC05F082FFA56070BD0D
+:10C13000FFF779FFA068FFF7E7F800210846FFF74F
+:10C14000AFF80420F6F753FC70BD46498968CA7EF3
+:10C15000022A08D10A681378002B04D150600968BC
+:10C16000CA6A1018C862704710B53E4A0029926822
+:10C170000CD0012907D0022907D03C483849E730C4
+:10C1800008F0DBFE10BD401E00E0401F106210BD35
+:10C1900034488068002800D00120704710B504465C
+:10C1A0000020002907D0334808F0A5FD01462046AD
+:10C1B00008F0A1FD401C10BD10B52A488068C07E63
+:10C1C000030008F0ABFF041414030A1401F0E5F8AF
+:10C1D00000280BD02249284806E0FEF73DFE002843
+:10C1E00004D025481E49001D08F0A7FE10BD2248B6
+:10C1F0001B490B30F8E710B50446002903D0002096
+:10C20000FFF7B8FE03E018480078F6F7ABFC2046CD
+:10C21000FFF77AF80020F6F7EAFB10BD10B51148D9
+:10C220008268506A11680068CB698B60124BC18BC1
+:10C23000B13359431368D9600146E0314B88838795
+:10C240000C783B231C548B88C383CB8803840989D7
+:10C25000418411680220087510BD0000645101007E
+:10C2600074B60000C81800207C000020FD06000005
+:10C270001027000040420F0031040000F8B5FEF71F
+:10C2800014FA0646FEF782FAF94D07466879F94C2A
+:10C29000002809D0012823D0022826D003282ED038
+:10C2A000FF20F5A1C63033E0F2481830FEF75AFA05
+:10C2B000002801D003200FE0EE481830FEF7BEF949
+:10C2C000002804D060696030007A002806D0E94870
+:10C2D0001830FEF71AFA012068711BE00220FBE714
+:10C2E000E4481830FEF711FA14E0E2481830FEF77F
+:10C2F000A5F900280ED1FF20DFA1B83008E0DD4805
+:10C300001830FEF72FFA002804D1FF20DAA1C03040
+:10C3100008F013FEA169F722087810400870AA7986
+:10C32000D207120F1043FB2210400870EA79D2079F
+:10C33000520F104308706B79EF22022B04D0012BAF
+:10C3400007D0032B07D00CE0012E06D8002F04D015
+:10C3500007E07F1E3E43002E03D010401022104302
+:10C3600000E010400870287C002811D0687901286E
+:10C370000ED0BF485438FDF79AF8BD49606954396A
+:10C380007830A269FDF7F5FA0020FDF701FB04E023
+:10C390000846FDF78CF8FDF71EFBA0690078C00683
+:10C3A00006D4E0690078C00602D4E079002802D003
+:10C3B000A079002801D0012000E00320FCF759FFFC
+:10C3C0000320207001202071F8BDAA4810B51C3050
+:10C3D000FEF7EFF9A74C002802D00020607004E0BF
+:10C3E00001206070A2485438E061A148407C0028D8
+:10C3F00002D06078002805D0E069FDF758F8FDF715
+:10C40000EAFA10BD9A485438FDF751F8984A606925
+:10C41000543AA030E169FDF7ACFA0120FDF7B8FA13
+:10C4200010BD10B593490022486932238276C27646
+:10C4300001221A544030807C002803D00A70002169
+:10C44000022001E000210320FFF71FFE10BD70B5A0
+:10C45000884C6079C2062046416908464030002A6F
+:10C4600001DA002202E0028B4B89D2180B460283CC
+:10C47000C0331A7E002A03D0828B4D8952198283E1
+:10C48000627A002A03D03D2001F0BEF852E08A7E95
+:10C49000032A4FD0227A002A13D0500701D4D006A5
+:10C4A00001D51E2036E0100701D53D2032E0D0072F
+:10C4B00005D1900703D470A1734808F03EFD2A20EF
+:10C4C00028E060318A78002A05D0C28B551CC583CC
+:10C4D0000D88AA420FD25A7F062A02D01A7F062A56
+:10C4E00005D1428B531C438309888A4203D2828B35
+:10C4F000C18A8A4201D322200CE0027C808A002A71
+:10C500000FD006280FD35A48C07B012801D03E2007
+:10C5100000E0082001F078F86069807E032809D0E7
+:10C5200001E08842F5D20120207000210846FFF783
+:10C53000ACFD70BDFFF775FF70BD10B54C494D489F
+:10C54000CA7B002A2BD0012A29D0022A27D0032A0D
+:10C5500004D049A14D4808F0F0FC10BD897B0229A8
+:10C560000FD007291BD0406901464031CA8A898A09
+:10C57000511A891E89B2032900D303210289511857
+:10C580000BE04069014640318A8A032A01D20189C1
+:10C5900003E04288C98A5118491C818010BD406956
+:10C5A000F5E700B5030008F0B9FD0604070B0F120C
+:10C5B000121700290ED00FE0491E02290AD90BE0FC
+:10C5C000491F012906D907E0072903D004E00A39E9
+:10C5D0000C2901D8012000BD002000BDFEB5054694
+:10C5E00024481830FEF79FF8002804D1274822A1DC
+:10C5F000CF3808F0A2FC1F4CA069FDF715FC032101
+:10C60000A069FDF73FFCA069EF220178114001709D
+:10C610002946FDF77BFC002601272B0008F07EFD54
+:10C620000E5D5D085D1D6161155D4D5D613D385DAF
+:10C6300060697121095C002901D0062101E0C03048
+:10C64000417EA069FDF72DFD4BE0E069FDF788FC18
+:10C650000146A069FDF796FD43E06169A069D0310C
+:10C66000FDF759FD6169A0699531FDF762FD38E07C
+:10C67000C4190020900000207372635C6C6C5F73BF
+:10C680006C6176652E6300006B0200007808000084
+:10C690000621A069FDF772FD23E020690178A069F9
+:10C6A000FDF756FD20698188A069FDF753FD2069DB
+:10C6B0004188A069FDF752FD13E00096019660697C
+:10C6C0006030007C002803D0694608783843087041
+:10C6D0006946A069FDF768FD03E0FE49FE4808F0E1
+:10C6E0002CFCFEF72AF8002804D1FB48F949801DEC
+:10C6F00008F023FC0C2D07D0072D04D060695E21C3
+:10C700000E5260308770FEBD606940304683FEBDCA
+:10C71000F0B5F24CDC2061698DB0405C042809D092
+:10C72000052834D16031487A002829D00120487486
+:10C73000022026E01022EA31684600F09DFF616980
+:10C740001022C83104A800F097FF684605F0B1F840
+:10C75000616908AA6CCA0F46CB6778378A670846B2
+:10C76000FE608030BD60074620376CC7002303633E
+:10C7700043630120A0310876D9494874052000E0C0
+:10C780000D20FFF72BFF61690020C03108770DB045
+:10C79000F0BDF8B5D1481830FDF7C5FF002842D0EC
+:10C7A000CE4C207A00283ED160690025C030007E42
+:10C7B000CB4E00280BD0B17B0120FFF7F2FE002802
+:10C7C00005D1B17B0420FFF7ECFE002806D060699C
+:10C7D0000127C030407F062807D00CE060695C214B
+:10C7E0000D526030457402202FE0B17B0420FFF72A
+:10C7F000D8FE002810D0B07B030008F08FFC173F54
+:10C800003F3F3F1E3F3F3F3D3F203F3F3F292C3FA3
+:10C810003F3F3F3F3F2F3F0060696A21095CC907E6
+:10C8200002D0C0304577F8BD0C20FFF7D7FE606915
+:10C830006030817A39438172F8BD072005E0FDF749
+:10C84000E2FF0028F8D075740B20FFF7C7FEF8BD93
+:10C8500000F021FFF8BDFFF75BFFF8BD6069002124
+:10C8600080308160C160057437740620FFF7B6FE22
+:10C87000606960308570F8BD0920E6E700F0CDFE04
+:10C88000F8BD70B5964DA87B072834D1934CDE22B5
+:10C8900060694188125A491C91422CD1217A0029A1
+:10C8A00029D10146E0318B88C28B934207D1CA88D7
+:10C8B000068CB24203D10A89468CB2420DD0884A16
+:10C8C0008689303A56819381CB88D3810989118238
+:10C8D00001462E3151600121117001221146FDF7F0
+:10C8E000B1FC00210420FFF7D0FB61690020C031BA
+:10C8F0004877A873E87370BD70B5794CA07B162893
+:10C9000003D07449774808F018FB74480021426945
+:10C9100073486032117291703038067E0B25012306
+:10C92000002E06D0027D002A12D14575817503754F
+:10C930000EE0567A002E06D05172228882838176CC
+:10C940000C22027604E02288828381768377057642
+:10C95000A17370BDF8B5614DA879800723D5287AF9
+:10C96000002820D15E4C0120A17BFFF71AFE002891
+:10C9700019D1A8690127C0780026030008F0CEFB72
+:10C980000E626208622E3B4F0A62146220524562B8
+:10C99000022021E0A07B042804D052484D493338BE
+:10C9A00008F0CBFAA673F8BDA07B082804D04D4848
+:10C9B00048492D3808F0C1FA686960308670F1E79F
+:10C9C000A07B0A2804D047484249263808F0B5FA27
+:10C9D0006869603007720B20A073F8BDA07B0E2839
+:10C9E00004D0AB203B49C00008F0A7FA686960306A
+:10C9F00007720F20F0E7A07B0F2804D03948354993
+:10CA0000183808F09AFA1120E6E7A07B0F2804D026
+:10CA100034483049123808F090FA1320DCE7FFF769
+:10CA20006BFFF8BD69690846C0310A7F062A04D148
+:10CA30006030807A800700D50E77487F0628F0D1D5
+:10CA40004E77F8BD274823496E3008F076FAF8BDD6
+:10CA500010B5234C0020A17BFFF7A3FD002804D1D3
+:10CA60001E480122017A114301720420A07310BDF7
+:10CA700010B51A4C60690146C0314A7F002A06D0C1
+:10CA8000097F062903D0217A0122114321726030E7
+:10CA9000807A800715D4E069FDF764FB6169603135
+:10CAA000C872E069FDF760FB616960318881E06907
+:10CAB000FDF75FFB616902226031C881887A10430B
+:10CAC0008872606900220146C0310B7F062B00D1BD
+:10CAD0000A7709E078C60000ED070000900000200A
+:10CAE000C4190020770500006A231B5CDB0703D113
+:10CAF00006234B774030428310BDF8B5FE48817B5A
+:10CB00000020FFF74EFDFD4C0126002807D160698B
+:10CB10006030407A002802D1207A30432072616967
+:10CB200000255E20455262204654C831E069FDF779
+:10CB3000DAFA6169E0699131FDF7E4FA616904228A
+:10CB400008469131B93008F05CF8EB483038017E86
+:10CB50000827002906D0017D002912D14775857567
+:10CB600006750EE06169054689894183E249E069FD
+:10CB70001439FDF7A0FAE049E0690C39FDF7A8FA8D
+:10CB80002F76DD480E218173F8BD70B5DA4D002097
+:10CB9000A97BFFF706FDD94C002803D1207A01219B
+:10CBA00008432072E069FDF742FA00280ED0E069E0
+:10CBB000FDF738FA6169DE225052498800F0B6FD6F
+:10CBC000002806D0282000F01FFD70BDFFF740FFB1
+:10CBD00070BDE069FDF720FA6169E0310870E06935
+:10CBE000FDF713FA6169E0314880E069FDF7F2F979
+:10CBF0006169E0318880E069FDF7F5F96169E0314C
+:10CC0000C880E069FDF7F8F96169E0310881072023
+:10CC1000A87370BDF8B5B94CA079C0076FD0207A61
+:10CC200000286CD1B44D0120A97BFFF7BAFC002885
+:10CC300053D1E0690027C178022201260B0008F0D9
+:10CC40006DFA0D161308354A4A384C474A192944DB
+:10CC50004A00FDF728FA6169DA225054AE735E206B
+:10CC6000475260318E7038E000F06BFD35E0FFF721
+:10CC70008CFF32E0A97B0020FFF793FC002802D153
+:10CC8000207A3043207260695E210F5260308670D6
+:10CC90000A2018E0A87B0B2802D0207A10432072CB
+:10CCA0002F746069603046720C200CE0FFF725FF9E
+:10CCB00013E0A87B112802D0207A1043207260690B
+:10CCC000603087701620A87307E0FFF7D1FE04E0FC
+:10CCD00000F004FD01E0FFF7BBFEFDF780FD00283A
+:10CCE00004D14F208649000108F027F9606900232C
+:10CCF0008030016B426B491C5A4142630163F8BDAD
+:10CD0000F8B57D4F012814D1787C002802D1387CF9
+:10CD1000002801D0FCF75FFEFCF7F4FBFCF7E7FB13
+:10CD20000020FCF7A6FAFCF732FBFCF774FBFCF7DB
+:10CD3000B9FBF87B01260025704C00280FD16079E3
+:10CD4000C10705D00220F87360694030057402E025
+:10CD5000800717D5FE7300210120FFF796F9F87BB5
+:10CD6000012802D0022808D00CE06079C00709D061
+:10CD70000220F8736069403005746079000701D5BE
+:10CD80000320F87300F00EFDFFF703FD2079002863
+:10CD900001D03D8102E03889401C38816079C007AC
+:10CDA000606904D072210D544030858203E0403028
+:10CDB000818A491C8182E079002806D0616960314E
+:10CDC000887C022806D8401C887460696030807CAA
+:10CDD000022804D93D817D81606960308574B97B0A
+:10CDE0000020FFF7DEFB002802D1B87B06284BD1DC
+:10CDF00060690146C0310A7F062A45D0497F06296D
+:10CE000042D03D49C97B03293ED16030807C002857
+:10CE10003AD1FDF741FC002836D0FDF7B7FC0028D9
+:10CE200032D06169C88801282ED90A46403256742A
+:10CE3000D08A978A831E9F4201DB012002E0C01B3B
+:10CE4000401E80B22C4B1F89A3899F4201D301232E
+:10CE500002E0DB1B5B1C9BB2984200D918460128FC
+:10CE600000D155742A22525C002A11D0224A898DA1
+:10CE700052898A4201D3012102E0891A491C89B2F0
+:10CE8000884205D9084603E06169012040314D74AC
+:10CE900061694A8810180881FFF74FFB6069122208
+:10CEA00015490C3007F0ADFEFFF7D1FAFEF7E1FFB0
+:10CEB00000280AD0104810388179002905D161690D
+:10CEC00002468989203A118586710C481C30FDF78D
+:10CED000CEFC00280FD0E06900788007800F012881
+:10CEE00009D0022807D0FDF7E2FC002803D104494D
+:10CEF000044808F022F807E0C41900209000002040
+:10CF000078C600007F030000606940308574F8BD7A
+:10CF100070B5FE4C607900283CD0FD4D022810D140
+:10CF2000FDF79BFB002803D1FA49FB4808F005F800
+:10CF30006A69002380329068D168401C5941D160F1
+:10CF40009060002666712079012804D12671A879A5
+:10CF500010210843A871E078012816D1E670A8795D
+:10CF600008210843A871FDF707FC002804D1EA480E
+:10CF7000E849183007F0E1FF6969002380318A68C9
+:10CF8000C868521C58418A60C860A079012802D044
+:10CF90000120A07170BDA67170BDF8B5DC4CDB4DF1
+:10CFA000E26900271078042183079B0FE8790126A6
+:10CFB000012B11D0022B0FD0032B01D0207A30E0AF
+:10CFC0006178002905D1AE70A1793143A17123E0C8
+:10CFD000EF71F8BDEE71F8BD5278D3061CD06078C1
+:10CFE0000028F8D1D006C00E1B2818D86079084355
+:10CFF0006071FDF7F4FB002804D1C748C5494B30E8
+:10D0000007F09BFF606900238030026B416B521C6C
+:10D01000594102634163E8790128DBD1D8E7207ADE
+:10D02000102108432072F8BDF8B5B84D0446303DD4
+:10D03000287D002700280AD0002978D167701020A9
+:10D040002070687DA070A87DE0702F756FE0287853
+:10D05000002814D000296AD1072067702E4620705E
+:10D06000083607E0686807802F700A223146A01C46
+:10D0700007F0C7FD28780028F4D1A77057E0287E74
+:10D08000A24E143E002837D0002950D1297EA04856
+:10D090000B0008F043F80D2C2C2C2C2C2C2C2C11D4
+:10D0A0002C2C20082C0067700C212170A97EA17007
+:10D0B00040698089A08018E008216770217040696C
+:10D0C0000A468089914960801439201D07F099FD36
+:10D0D0003089A08109E067700B212170A97EA170C1
+:10D0E00040698089A080A87FA0712F761FE08949C0
+:10D0F0008A4807F022FF1AE0844810388279002A13
+:10D1000008D0002913D1677011212170B189618085
+:10D1100087710CE0827A002A0BD0002907D1677052
+:10D1200012212170318A6180718AA1808772012069
+:10D13000F8BD0020F8BD76480078012801D00C2009
+:10D140007047724900203039087008750876203120
+:10D150008871704770B56E4C064620780D460028E1
+:10D1600004D093206B49000107F0E7FE01202661FF
+:10D17000E07225622070FFF7DEFF002804D06748C8
+:10D180006449493007F0D9FE70BDF8B5604C21788C
+:10D19000012902D12178012901D00C20F8BD0146D6
+:10D1A0000546606112220C31584807F02AFD01271C
+:10D1B0004035AF74554D2888FDF735FA002827D043
+:10D1C0002888FDF7EBFA002822D02888FDF7A0FA7E
+:10D1D00000281DD02888FDF7BAFA002818D0FCF7DF
+:10D1E00056F960690026C088002825D048481830C4
+:10D1F000FDF799FA00281FD06069C030007E002832
+:10D200001AD0A97B0120FFF7CCF9002802D013E047
+:10D210001220F8BDA97B0420FFF7C3F900280BD129
+:10D22000606901464030868360314E740220FFF70A
+:10D23000D5F96069403046743448303800780028A9
+:10D2400004D16169C88D098C884201D86069008C5D
+:10D25000A08160694189491E8AB22989891829817A
+:10D26000297B002902D06E812E7302E0698989181A
+:10D270006981014640318B8A9B188B82C388012BC0
+:10D2800001D85B1CC380002A01D060308674A87B63
+:10D29000032816D0487C002815D02889A189884207
+:10D2A00011D2FDF7F9F900280DD060692A21095C37
+:10D2B000002908D06989808D814204D3A670E77067
+:10D2C00003E0A77001E0A670E670606951210E547A
+:10D2D000A97B052901D0062915D1DE214288095AEA
+:10D2E000511A09B200290EDB01460522E031243033
+:10D2F000F3F76AFF012202216069FCF7A3FF60696E
+:10D30000C0304677AE736069418909E0C4190020D6
+:10D310009000002078C6000039070000F1080000E6
+:10D32000FDF745F8A07800282AD160692030807A7E
+:10D33000002800D06E810120FBF7A5FE606938301F
+:10D34000FCF75DF860693430FBF76EFF216A00205E
+:10D350000856FBF735FF0120FCF796F8FBF7EEFEC9
+:10D36000FCF78EF80120FBF7CEFF6069406EFCF7FA
+:10D37000A1F8FFF72AF860694030C07BFBF75DFF3A
+:10D380006671E671A6712672A67266722671022017
+:10D390002070FCF787F80020F8BD10B5F74C207816
+:10D3A000022801D00C2010BDA078002803D0002056
+:10D3B000FFF7A6FC17E0FCF76AF800F01DF96069BA
+:10D3C0002030007C012809D0FCF7BEF8FBF7BBFE3B
+:10D3D000F3F7F7FFE07A012803D004E0FCF7BCF88C
+:10D3E000F4E7F5F715FE002010BDE449C872704758
+:10D3F00010B5E24C2078032803D0E149E14807F05A
+:10D400009CFDE14801218278002A06D0002282702A
+:10D410000171A27904231A43A271A2691378DB4334
+:10D420009B0707D1C378002B04D1C170A0790221DA
+:10D430000843A0711078C00606D4E0690078C006E1
+:10D4400002D4E07900280CD06078002809D1A079B6
+:10D45000002806D1FEF7FBFC002802D0207A002825
+:10D4600003D00120FFF74CFC03E0FEF7AEFF00F015
+:10D47000C3F82078012806D0F3F7A3FFE07A01284B
+:10D4800001D1FCF7F9F810BD38B5BC4C606920300B
+:10D49000007C012820D1A07A00281DD16846FCF725
+:10D4A00063F8002818D061693120405C012810D150
+:10D4B000B54A0D236D460020D3562856834208D026
+:10D4C00050738989303A9185114620318873012043
+:10D4D0008872A07A401CA07238BD70B5A74C064671
+:10D4E0002078042804D0A748A549553007F025FD29
+:10D4F000607910210843A44D6071002E47D0FCF7DD
+:10D5000082FA61780126084300280ED1687C002841
+:10D510000BD0E0694178C90607D00078E9790007A7
+:10D52000C00F884201D1667247E0E078002809D038
+:10D53000E0694178C90605D10078C00602D4FFF73A
+:10D54000A3FF3AE0FFF7A0FFE069A9790078400760
+:10D55000C00F884205D0FFF7DBFC60790821084343
+:10D560006071E069E97900780007C00F884201D155
+:10D57000FFF713FD6079304360710020E071A079FE
+:10D58000000702D5A87B022817D0207A13E00221D9
+:10D5900008436071E079401CC0B2E07101280CD8EA
+:10D5A000687C00280DD0784854384078C106C90EF0
+:10D5B000052906D2C006002803D00120FFF7A0FBF2
+:10D5C00001E0FEF75BFE2078012806D0F3F7F9FEB4
+:10D5D000E07A012801D1FCF74FF870BD10B567481B
+:10D5E0000078042804D067486549B73007F0A5FCE7
+:10D5F0000120FFF785FB10BD10B50720FBF739FEB2
+:10D600005E490420087010BD5C49332249695054BA
+:10D610005D4A032090738876704710B5574C606957
+:10D62000C030007F00281CD0062806D05648817BD9
+:10D630000020FEF7B6FF002813D060690146C03114
+:10D640000A7F130007F06AFD070D0D0D0D0D0D0586
+:10D650000D006030807AC20704D0C043800700D13B
+:10D66000087710BD0C20FEF7B9FF60690122603019
+:10D67000817A1143817210BD10B5002A0AD00023AF
+:10D6800006E0D41A6418203CE47FC4545B1CDBB26F
+:10D690009342F6D310BD10B503F0B1FF0C281CD394
+:10D6A000364C08216069D03003F0AAFF002806D06C
+:10D6B00060690421953003F0A3FF002803D13049AD
+:10D6C000324807F03AFC6169042208469531BD30C2
+:10D6D00007F097FA0420FEF781FF10BD7CB52A4EB3
+:10D6E0000020B17BFEF75DFF0125244C002802D10C
+:10D6F000207A284320726946E069FCF75BFD6846A2
+:10D7000000780021C207D20F684602706069002AC3
+:10D7100002D06030057401E06030017460695E22FF
+:10D720001152603085700820B0737CBD401A1849D2
+:10D7300000B2884201DC002801DC01207047002093
+:10D74000704770B5104D0020A97BFEF72AFF0B4CE7
+:10D75000002803D1207A012108432072E069FCF7F8
+:10D760009BFC6169DE2250524988FFF7DFFF0028E9
+:10D7700010D02820FFF748FF70BD00009000002067
+:10D7800078C60000320A0000C419002062060000BA
+:10D79000FE7F00006169E069E031FCF771FC052063
+:10D7A000A873E9E770B500F047F8384C384D607958
+:10D7B000400709D5A97B0520FEF7F3FE002803D01A
+:10D7C000207A082108432072FFF724FA00F012F8AB
+:10D7D000FFF7C0F8A079C00609D5A87B030007F0C1
+:10D7E0009DFC06060606060604060620A873FFF73B
+:10D7F00048F8C1E710B525488179490714D5017A61
+:10D80000002911D12249897B0B0007F087FC080D04
+:10D81000050D0D0D0E0D100D4069002262210A54F8
+:10D82000C030807EFFF7F0FE10BD012100E0022134
+:10D830004069C030417710BD10B51448817909079F
+:10D840001DD5017A00291AD1114A947B230007F0D3
+:10D8500065FC1416160B1616161616161616161640
+:10D860001616161616161716406960308170407C21
+:10D87000002801D0062000E01620FFF7C5FE10BDED
+:10D880004069603001728170917310BD900000207A
+:10D89000C419002010B5031D03600020521E04E0CF
+:10D8A0005C181C60401C2346C0B29042F8DB00208C
+:10D8B000186010BD01460A680020002A02D01046F8
+:10D8C00012680A60704702680A60016070470000D1
+:10D8D00000B51A2822D00ADC030007F01FFC0D1146
+:10D8E0001F131F1F191915171F1F1F1B1F002A2881
+:10D8F00014DD3A38030007F011FC030F1109110081
+:10D90000002000BD1E4800BD042000BD0D2000BD4C
+:10D910000F2000BD082000BD112000BD032000BD68
+:10D9200010B50C46F4F7CFFF00281AD02046F4F7C4
+:10D93000CCF9002812D020780E280BD00F2809D05F
+:10D94000022807D0032805D00EA1772007F0F5FAAA
+:10D95000002010BDA078FFF7BBFF10BD09A17D20FE
+:10D96000F4E708A18320F1E710B5F4F735F910BD0D
+:10D9700010B5F4F7AAF910BD10B5F4F78CF910BD85
+:10D98000023000007372635C686F73745F68636970
+:10D990002E630000F0B597B00021032004F082F957
+:10D9A0000025FE4E022775807574347C12E0F06805
+:10D9B000E1004018818800290CD0858069460F70ED
+:10D9C0004D70016802918088694688800021684610
+:10D9D000F8F734FD2046641EE4B20028E7D117B002
+:10D9E000F0BDEE4BD86019741A80D3E7EB49EC4BCD
+:10D9F0004A8800201A4200D00120497C002901D029
+:10DA0000082108437047F7B504460E460078012107
+:10DA1000E34A8140521C114098B0E04A009151887D
+:10DA2000E04B994205D0009B002B05D0DC4B1942FE
+:10DA300002D001201BB0F0BD009BD84A1943518091
+:10DA40001A9D002D11D00020287022781A980027E6
+:10DA5000401C130007F062FB10EF0D152137555DD8
+:10DA60006A39AFAB85B3EEEDECEF0B28EDD00420B7
+:10DA7000E0E702212970A1880170090A41700320A2
+:10DA800093E004212970A1880170090A4170E1889E
+:10DA90008170090AC170052087E006212970A188DC
+:10DAA0000170090A4170E1888170090AC1702189F9
+:10DAB0000171090A4171A289E81D216907F0A1F8E5
+:10DAC000A089C01D71E0082129702178082901D1A1
+:10DAD00010212970A1880170090A4170E1888170C4
+:10DAE000090AC1700520308020466A1D01A908304E
+:10DAF00003F0CFFB00287DD16946308809794018B2
+:10DB000053E00A212970A1880170090A417003209D
+:10DB10000AE00C212970A1880170090A4170E1888E
+:10DB20008170090AC170052030809DE0A08884467C
+:10DB30004000401C81B2308888425BD3052959D30C
+:10DB40000E202870002008E0A36842009B5A52195A
+:10DB500053701B0A401C937080B26045F4D331802F
+:10DB6000B6E08E49487C002873D0401E4874C868CF
+:10DB700021790822C9004518A98828684018083862
+:10DB8000A16807F03EF80221684601710021417149
+:10DB900028680390A98868460181002101A8F8F748
+:10DBA0004DFC0020A880002E00D0308090E0297825
+:10DBB0008022114329702978402211432970297845
+:10DBC0008909890112312970A1880170090A4170FF
+:10DBD000E288E81CA16807F014F8E088C01C3080D7
+:10DBE0002878410640D5C00972D0012168460171EC
+:10DBF000002100E02BE041713188ED1C091D0181FD
+:10DC00001A980390E08840190490001D634D059018
+:10DC1000297C68460176002101A8F8F70FFC074629
+:10DC200030880C303080022F06D0002F50D060E0BA
+:10DC30003CE032E01CE059E06946097EE868CA0031
+:10DC400080182A7C914202D28188002902D00427C0
+:10DC50004FE02EE0697C491C69741A990160318893
+:10DC600081800020308044E04C48A188C1802FE0B2
+:10DC700029788909890116312970A1880170090A5A
+:10DC80004170E1888170090AC1702289681DE168CC
+:10DC900006F0B7FF2089401D46E7287880098001FB
+:10DCA000183028702079687002207EE73B480A040B
+:10DCB00001D405271DE00289A3889A4201D00627D6
+:10DCC00017E01E222A70012249043280490C41804B
+:10DCD000009800280DD0314D00222888114683007D
+:10DCE000032003F03AFF2078287107E000203080FD
+:10DCF00003272A48009942888A434280384699E699
+:10DD0000F7B59AB002000C4606D0172A04D823486B
+:10DD1000244B4088984202D107201DB0F0BD2378E3
+:10DD20005D0601D4DB0901D00820F6E700236D462B
+:10DD30002B706B701D462378611C9F06931E1893F1
+:10DD4000531E19939BB2169302AB1793134BBF0E3E
+:10DD5000DE883B0007F0E2F9208511F15EF16BF1FE
+:10DD6000A3F1C6F1F2F1FBF1EEF1EDF1ECF1F1F11D
+:10DD7000EBF1EAF1E9F1E8F185F1052A71D104222C
+:10DD800069460A7005490A7969460A71E178A378FB
+:10DD90000A021A436946CA80227905E0D819002090
+:10DDA000FE710000FFFF00004A7061788906890E4D
+:10DDB0000C2923D009DC891E0B0007F0AFF90913E9
+:10DDC00052155219521B521D520012291CD004DC4C
+:10DDD0000E2915D01029D1D114E0162916D01829F2
+:10DDE000CCD115E0800700E04007002839DA2AE1AD
+:10DDF0000007FAE7C006F8E78006F6E74006F4E712
+:10DE00000006F2E7C005F0E7C004EEE78004ECE7A7
+:10DE10004004EAE7800724D5032AAFD105206A46EB
+:10DE20001070487809780002084390800BE14007A1
+:10DE3000F1D5062A15D31898617880B2012902D04D
+:10DE400002299BD101E0022700E010270622694643
+:10DE50000A7000228A8001AEA11C0236BA1C1792F9
+:10DE600018E0B6E04A780B7812021A433280801E1E
+:10DE7000891C1890B21C1691384603F0E4F91699E3
+:10DE800018986B469A88C919C01BB61D521C9A80F7
+:10DE9000179A80B28242E5D900289CD1D3E00007CE
+:10DEA000B9D51998694682B2072008700020888089
+:10DEB000601C891D11E0437806781B0233430B80F8
+:10DEC000C37886781B0233434B806E46121FB3889B
+:10DED000001D091D5B1C92B2B380042AEBD2002AFC
+:10DEE00077D1B0E0C00674D5022A72D31898082101
+:10DEF00082B2684601700021C18063780371A01C62
+:10DF000017990EE04678077836023E430E80861C4D
+:10DF10004E606F46D21AFE88C0180831761C92B245
+:10DF2000FE809342EED9DAE76FE076E065E051E0FB
+:10DF300046E01EE014E00AE000E0A0E0800648D5DC
+:10DF400009206A46107096801698D0800FE040062F
+:10DF50003FD50A22684602708680169AC28006E083
+:10DF6000000636D50B206A461070169890800291F4
+:10DF700069E0C0052DD5022A7FD318980C2182B202
+:10DF8000684601700021C18063780371A01C179955
+:10DF900013E04678077836023E430E80C6788778CD
+:10DFA00036023E434E80061D4E606F46D21AFE88F2
+:10DFB000C0180831761C92B2FE809342E9D98EE7F0
+:10DFC000C0045AD5012A58D10D21684601708680B7
+:10DFD00039E052E0800450D5052A4ED30E2368461E
+:10DFE00003708680C8788B78010219436846C18027
+:10DFF000521F0281601D039025E040043DD5012A97
+:10E000003BD10F20694608701DE0030435D44B78DE
+:10E010000E781B023343244E3381032A2DD31B2F4A
+:10E0200027D011236E46337001261F4BF603304371
+:10E03000588048780B780102194368468180D21EC7
+:10E04000C280E01C029020788006800E1B280AD037
+:10E050001D2808D00021032003F024FE1248418827
+:10E06000C90BC903418068461C99F8F7E7F92846AF
+:10E0700053E610206B461870DBE70725F7E7082505
+:10E08000F5E700B50022D243074997B04A8003283C
+:10E0900007D1032268460270097901710021F8F75F
+:10E0A000CDF917B000BD0000D8190020FFB589B028
+:10E0B0000020019009981027FE4C1E46154608289E
+:10E0C00006D0E06901F05EF8002809D03770BEE0A4
+:10E0D000288809213843108013980227017016E020
+:10E0E000E169012088710521E269C9029180E16935
+:10E0F0008872E169F0480881E16900208873288806
+:10E1000020210843288011211398042701701398B7
+:10E110000225801C0290307806900A203070E54875
+:10E120001830049001F022FA0020059020462C308F
+:10E1300003906DE00998102808D1022D06D00199AE
+:10E140000298A28D401A8270110AC170E08D0A995E
+:10E15000884202D901F0CDF806E0884204D1069841
+:10E16000002801D030701CE00298E18D0170090A8E
+:10E17000417012980088401BC01B82B2FF20C01B58
+:10E18000904200D2024607A8009002980021C319CD
+:10E19000E08D01F056FA3070002805D0C0B2832817
+:10E1A00058D0E08D20833EE00598002804D0206CF4
+:10E1B00000790A282CD336E06846808BC119C9B291
+:10E1C0000191022D0DD01399019A4978914202D103
+:10E1D000228F824208D00191206C0178032908D057
+:10E1E00023E0084613994870206C0178042906D072
+:10E1F00007E000790A2818D20120059008E0E18D97
+:10E20000818002990198081802900198281885B217
+:10E210000399049801F0ADF9002804D11298008800
+:10E22000401BB84286DA022D0DD00998102806D17D
+:10E2300002990198A28D081A8270110AC170129871
+:10E24000058000203070206C0078032802D0002068
+:10E250000DB0F0BD0220FBE7F8B5964A0026126D1E
+:10E26000002A2ED0401F934D84B24035E88A2346C1
+:10E270000833AF8AC318BB4222D88B784F781B0271
+:10E2800010183B4303701B0A43700B79CF781A02B6
+:10E290003A438270120AC2700471220A4271224605
+:10E2A000491D801D06F0ADFCE88AA41D001980B24E
+:10E2B0008049E882096D002208180270427000E06F
+:10E2C00009263046F8BD30B57A4B028840339B8A28
+:10E2D000934213D9774B1C6DA3185C781D782402E8
+:10E2E0002C430BD05C791D7924022C436404640C0C
+:10E2F000A41D1219028000200B6030BD822030BDA9
+:10E30000F0B585B0074600266846068155E00198BD
+:10E31000417802780D0215434179027908021043D1
+:10E3200000044AD43D8003A8002301220090520239
+:10E330001946284601F085F9040044D16846018950
+:10E3400001820198417902790902114343780278E8
+:10E350001C021443AC421CD10A041AD44A04012101
+:10E36000520C89030A430096C17880780902014360
+:10E370000023204600F0C1FF040010D10199487924
+:10E380000A79000210430122D20310430871000AE7
+:10E39000487101A904A8FFF796FF0400D1D00199A4
+:10E3A00000964878097800020843694600238A8964
+:10E3B000194600F0A2FF822C05D101A902A8FFF79F
+:10E3C00082FF0400A3D06846068109E001994879DC
+:10E3D0000A79000210434004400C0871000A487199
+:10E3E00001A902A8FFF76FFF0028EFD0822C02D00E
+:10E3F000204605B0F0BD0020FBE7F7B584B0144619
+:10E400000646002700F071FF2A480025006D00280D
+:10E410002FD0059801282CD12046FFF771FF070067
+:10E4200027D1002E29D06846058118E00199487847
+:10E430000978000208432080019B009558791979DA
+:10E440000202D8780A4301029F78587839431F782E
+:10E4500000029B1D384300F050FF002805D101A9A0
+:10E4600002A8FFF730FF0028E0D0822800D100206A
+:10E470000746002E01D00F48056500F03AFF3846E8
+:10E4800007B0F0BDF0B597B00021042003F00AFCFE
+:10E49000084F00243D467C8040356C73AC73287B6C
+:10E4A000B96CC00008380E18B08800280DD00120C3
+:10E4B000694603E0EC19002001280000087030686C
+:10E4C000019000216846F9F7BAFAB4803C65AC8245
+:10E4D000EC8217B0F0BDFE4B9864184640300173D3
+:10E4E0001A803838D861CDE7F949002049880A07F1
+:10E4F00000D501200A06120F01D002221043CA05DE
+:10E5000001D5042210438A0501D510221043490584
+:10E5100001D520210843EE494031497B002901D033
+:10E52000082108437047FFB5A7B004002898164695
+:10E530001B9022D00178E6484D064288229202467E
+:10E5400040320092002D14DB8A06920E1E2A0ED055
+:10E55000229A5205520E10D13288172A0DD3009AF2
+:10E56000927B002A09D1DB4D229AAA4205D0CA0922
+:10E5700006D08A06920E122A02D003202BB0F0BDDC
+:10E58000D348826C0098007B2590C0000838101892
+:10E590001F9048060CD40098407B002808D00099B2
+:10E5A00088731F99289808601F9884800220E5E7E7
+:10E5B000002718A90F7069460F72C54902AA0A649C
+:10E5C000309A4A6410A90F850F861B981D46007863
+:10E5D00020908106BE4B601F24901A462C32219257
+:10E5E0002898DA691833890E1E93401C0B0006F038
+:10E5F00095FD1FFDFD11FD1AFD90FDFCFDFBFDFAD3
+:10E60000FDF9FDFCFDF8FDFDFDF7FDF6FDFDFDFD51
+:10E61000FDF5FD00032C7BD10320287017226A70C2
+:10E620000022AA70E0E2052CF5D1417802780902B7
+:10E630001143A74B10AA19831185C2788078120262
+:10E6400002435A8300297DD091427BD8002118468D
+:10E6500081720181491E01841E9800F087FF052008
+:10E660002870A81C1D900220009021991E9800F08F
+:10E6700080FF002803D047E018A90870F0E2944812
+:10E680002030807C012803D002206870102002E036
+:10E6900001206870022022908D48303023900022A3
+:10E6A00020A9239802F0F5FD00282AD120A800789F
+:10E6B0002299814225D132880099801C511A8142C9
+:10E6C0001FDB83481D99C08D0870000A48701D9893
+:10E6D00020A9801C1D9000981D9A801C00902398F2
+:10E6E00002F0D7FD20A909781D9840181D900098C8
+:10E6F000401880B2009021991E9800F03AFF00283F
+:10E70000CDD0009802288DD10A2018A908706CE29B
+:10E710006DE0072C6BD341780378090219436C4BE9
+:10E720008446198310AB1985C37880781B0218437F
+:10E73000674B0029588305D0814203D80121184630
+:10E74000817200E0A4E061464B7909791B020B431A
+:10E75000038100218173104600F014FD00280FD1C1
+:10E760005B480121C26991710522C369D2029A8076
+:10E77000C2699172C26958491181C06900218173CF
+:10E780005349E01F08841B98C01D48621E9800F082
+:10E79000EDFE07202870681C009001201D904C4859
+:10E7A0000021C18530E01D98012815D04848C16975
+:10E7B000897901292FD000981038C17B807B09020C
+:10E7C000014300980170090A41700098801C009074
+:10E7D0001D98801C80B21D903D4809E013E2BEE107
+:10E7E0007AE1D8E00DE2A0E080E03BE01EE2B6E096
+:10E7F000C18D00980170090A41700098801C00903A
+:10E800001D98801C80B21D9021991E9800F0B1FEC9
+:10E81000002802D006E0818DD3E731881D98081AC0
+:10E820000428C0DA1D98012800D16DE72848C16985
+:10E830008979012903D0828D26498A4205D1818DAB
+:10E8400000980170090A417009E000981038C17BF6
+:10E85000827B0802009910430870000A48701D98D6
+:10E86000801CC1E1072C01D0152C78D141780378A8
+:10E8700009021943164B198310AB1985C3788078A8
+:10E880001B02034312480029438301D0994201D956
+:10E890000120F1E60E48012181720021018181737E
+:10E8A000052C07D024981B99C0B2491D02F0CBFC5F
+:10E8B0000028BAD100200649C04308841B9800965E
+:10E8C0000195007818AB8006800E1CAA002105E097
+:10E8D000EC190020FFFF000001280000FFF7E6FB15
+:10E8E0000746FE4810A9008B08857EE1032CBCD1A9
+:10E8F000402210A90A86417802780802F74910439D
+:10E90000088310A9088520A9009131886B1C491E35
+:10E910008AB2002100F095FE18A90870002830D1B5
+:10E920000B20287020A8008833E0052C9DD1802181
+:10E9300010AB1986014640780B780202E7481A436B
+:10E940000283CB7889781B021943E44B1046198463
+:10E9500010AB1A85E24A914202D307208CE697E079
+:10E960003F23DE4A9B021943118421AA0092328878
+:10E970006B1C521E92B200F064FE18A908700028A9
+:10E9800003D08328B1D102272FE10D20287020A8C1
+:10E990008088401C28E120990C22C9095143C91CD8
+:10E9A0001E91A14204D92098400671D500201BE198
+:10E9B000417800780902014310A801851B9800786E
+:10E9C00042062898C01C1D90002A62DA05206A467B
+:10E9D00010721B980078C00944D008226846027261
+:10E9E0008181A01A87B268468782289806901E986F
+:10E9F000201A81B26846C1811D980490401806F023
+:10EA000061F9079006982599C0190890491E08A831
+:10EA1000017102A83099F9F712F8074600216846FB
+:10EA20000172002F1BD0022F18D1009808A9007B7B
+:10EA30000979401E884210DDA848289A836CC900D5
+:10EA40005A50816C08A80079C000001D0C52009833
+:10EA50000099407B401C4873C7E00527EAE0062088
+:10EA600069460872002000901E980021201A20900C
+:10EA700082B21B9B10A8DB1C008D00F03EFC0146FF
+:10EA800018A80170002268460272832903D003E0AF
+:10EA900093E00720E4E702271B98007840060ED594
+:10EAA0008E484188C90506D510AA018B128D914266
+:10EAB00001D100214162002018A9087094E0FF21D3
+:10EAC000013110A80186018D8448018320990184B9
+:10EAD0001D994162132085E0052C6ED3417803789F
+:10EAE0000A021A4310A90A859446092269460A7245
+:10EAF0000021009101222499D20311438AB2C178E6
+:10EB0000807809021B9B01435B1D604600F0F5FB0A
+:10EB100018A90870002269460A720122520210A93F
+:10EB20000A86832802D0002805D099E06B48098D19
+:10EB3000018302277EE06948006D002807D0204647
+:10EB40001B99FFF789FB18A9087000284DD12B46A7
+:10EB5000324620461B9900F024FB074645E01B98EF
+:10EB6000022C4078009064D1002801D0012860D1A7
+:10EB70000A2168460172009901731AAA00200099BF
+:10EB8000FFF73BFC0146684641730021817302A8F0
+:10EB90003099F8F754FF07460021684601720121B9
+:10EBA000890210A80186022F08D04C48006C807999
+:10EBB000002807D018A9087020E04BE047490098CA
+:10EBC000088337E0002F03D0812018A9087031E0B6
+:10EBD0001AAA01200099FFF710FC18A90870002854
+:10EBE00003D119202870012030806846007A00285F
+:10EBF00004D002A83099F8F722FF0746002F2BD047
+:10EC000018E0062038E522993448090711D5012C6F
+:10EC10000FD10B2269460A72C08888810021042026
+:10EC200003F040F8082010A90886BFE620984006A7
+:10EC300010D50327294810AA4188128E114341801C
+:10EC40005005400E04D01F99289808601F988480B2
+:10EC5000384693E404200FE518A8007800280ED069
+:10EC6000012028701B980078687010A8008DA8708B
+:10EC7000000AE87018A8007828710520308017482D
+:10EC800010AA4188128E91434180E1E7FFB5064604
+:10EC90009FB000201B903178012088401149124A12
+:10ECA000084010A908860D494988914203D00028E0
+:10ECB00004D0080702D5012023B0F0BD219D002714
+:10ECC0002F7020983C46018810A8018418A807716D
+:10ECD00000F00BFB6846077202A907E0EC19002060
+:10ECE0000102000009F80000FFFF0000FA4801647B
+:10ECF00001464031826C1A91097BC90008395718C6
+:10ED000022994164307801282AD0022809D00328AA
+:10ED100079D12878800980011D302870EE48B188AB
+:10ED2000C1803078022804D12878800980011B3006
+:10ED3000287001A8009010A8008CEB1CC01E82B2A5
+:10ED4000B088002100F07DFC0028E1D1B188697015
+:10ED5000090AA9706946888810A9C01C08842DE199
+:10ED6000717918A801713079012802D00228CFD119
+:10ED7000E6E0D9487F2340881B010246184010ABCB
+:10ED80001886802840D006DC102810D020280ED00D
+:10ED900040280AD120E0FF38013859D0FF38013827
+:10EDA0006AD0FF38FF3802387ED0052491E0D006C3
+:10EDB00001D5082000E010201B900420694608724D
+:10EDC0000020888118A800900195318919AB1CAAF0
+:10EDD0001B98FFF76BF977E0BF4B3289188B8242A3
+:10EDE0004FD10A221B92002973D101A9009110A9C9
+:10EDF000098C6B1C491E8AB2002100F022FC18A964
+:10EE000008710B2017E0F6E0B34B3289188B824271
+:10EE100037D10C221B9200295BD101A9009110A9C6
+:10EE2000098C491E8AB21946098C6B1C00F009FC3A
+:10EE300018A908710D2028706946888810A9401CFF
+:10EE40000884042069460872A348008B888140E04A
+:10EE5000A14A3389108B834213D112231B930029BB
+:10EE600037D1536A002B05D00091128C00F045FA7F
+:10EE700018A9087113205EE097483289038B9A42E3
+:10EE800001D00424E7E016221B92026D002A09D16A
+:10EE9000F268002A06D002651A98328A82821A9A8B
+:10EEA0000020D082002900E02FE012D1B888396814
+:10EEB000FFF7D2F918A9087100280AD1B8882B46A3
+:10EEC00018AA396800F06DF90446022818D0042CFD
+:10EED00016D0B88800280FD06846007A002804D0E1
+:10EEE00002A82299F8F7ABFD044601206946087292
+:10EEF000386803900020B880002C5FD0052C7BD0B0
+:10EF00006846007A032873D0A5E018201B900029DA
+:10EF100005D071483189018300210165D9E76E4828
+:10EF20000246017E18320120FFF767FA18A908711E
+:10EF30000028CED119202870012010A90884C8E724
+:10EF40001A98407B002856D0307AC0001358001D14
+:10EF50000193105A1D9000291AD100F0CAF9062019
+:10EF600069460872002000901D980F3882B20198FF
+:10EF70008178437808021843019B0021DB1C00F0D4
+:10EF8000BCF918A90871002269460A72832830D09A
+:10EF9000002118A8017110A801840121684601729E
+:10EFA000019803901A981A99407B401E48731A984A
+:10EFB000807B002802D01A99401E887310A8008E0A
+:10EFC0007F21090102468A431DD043480022008860
+:10EFD00011468300042002F0C0FD3F4831780171E2
+:10EFE00010A94088098E08433B4948800FE003E0A0
+:10EFF0002BE002242FE00524374810AA4188128E06
+:10F000009143418027E034494A8882434A806846D8
+:10F01000007A002805D03048416C02A8F8F70FFDAF
+:10F02000044618A80079002815D01B9868700120A4
+:10F0300028702948008BA870000AE87018A8007989
+:10F040002871052110A8018405E02348416C02A81D
+:10F05000F8F7F5FC044600F04CF91F4840884005DD
+:10F06000400E20D11A98807B00281CD1B888002837
+:10F0700019D0209910AA0988118422990091396821
+:10F0800018AA219BFFF74FFA044602280BD0012053
+:10F09000694608723868039002A82299F8F7CFFCF5
+:10F0A00004460020B88010A8018C209801802046DA
+:10F0B00002E600B50022D243074997B04A800428EF
+:10F0C00007D1022268460270097901710021F8F720
+:10F0D000B6FC17B000BD0000EC19002010B5394C8B
+:10F0E00003780022216C012B02D0022B44D126E0B0
+:10F0F0000B78002B01D0042B03D10A71226C032161
+:10F100001170216C83880A79D200921D8B52216C78
+:10F110000A79D20008328918C2880A80216C0389D2
+:10F120000A79D2000A328B524289206C0179C900D7
+:10F130000C314252216C0879401C087120E00A749D
+:10F14000226C81889180216CC288CA80226C0189DE
+:10F150001181226C41895181216CC068C860616C49
+:10F16000206CF8F76CFC0146022807D0206C007C6C
+:10F17000002802D1002903D0812010BD832010BDBA
+:10F18000002010BD8178012909D100880521C9021C
+:10F19000884202D0491C884201D1002070470520D6
+:10F1A000704710B51488844201D2052010BD172481
+:10F1B0001C701080421E491C581C05F022FD0020C6
+:10F1C00010BD0000EC19002010B58B78002B11D079
+:10F1D00082789A4207D10B88002B0BD003E0091DDF
+:10F1E0008B78002B08D08B789A42F8D103880C8852
+:10F1F000A342F4D1002010BD812010BD10B500291C
+:10F2000002D001290DD102E00088000501E000884C
+:10F210008004800F07D001281CD0022809D00328C1
+:10F2200010D0812010BD002901D0032010BD022084
+:10F2300010BDF5F733FE03280CD004280AD00028AF
+:10F2400006D009E0F5F72AFE042803D0022803D0EF
+:10F25000052010BD002010BD0F2010BDF3B5C81C47
+:10F2600080080E46800081B0B04201D08620FEBDED
+:10F27000FE4C354626600198A08000202081E08069
+:10F2800014E0B807A978800D0843F94905F033FD6B
+:10F29000E088401CE080B80607D42089401880B27E
+:10F2A00020810199081A8019A8600C352F887807E9
+:10F2B000E7D40020A072FEBDEC480C22C188008972
+:10F2C0005143081880B2704770B51346E74A451895
+:10F2D0009488AC4201D2842070BD126810180A468E
+:10F2E000194605F08EFC002070BDE04901208872AF
+:10F2F0007047DE49002088727047FFB589B09704D7
+:10F300000E460546BF0C029200F034FA040021D0EC
+:10F31000002069460873D548807A012812D001215F
+:10F320002046FFF76BFF002815D12078400609D54D
+:10F330000221684601730582218841828682C78244
+:10F340000C9806900298000407D500273E46012538
+:10F3500001970CE001200DB0F0BD2078A178800766
+:10F36000800D0843C249019005F0C5FC0D46029886
+:10F3700040040AD50198A84207D12088E178800589
+:10F38000800F00020843B04201D3AE4201D90720EA
+:10F39000E1E7B81980B20290A84201D90D20DAE75E
+:10F3A0006846007B002804D003A8F8F744FB002837
+:10F3B000D1D10198A8420BD12088032109028843AA
+:10F3C00002998905890F0902084320800298E0709C
+:10F3D0001298002800D007800C9800280CD02078C4
+:10F3E000000609D4A0683A4680190C9905F009FC7A
+:10F3F00020881021884320800020ACE7FFB59B4D7A
+:10F4000081B00E46E8882F680C21009048433C18D4
+:10F410009749039805F06FFC0A462889E11B84464A
+:10F420000C314018318880B28B0601D5002300E0F2
+:10F4300013461818AB8880B2834202D8842005B0E6
+:10F44000F0BD0098894D401C80B2E88021800D9964
+:10F45000002900D00C600399A170E2702188039DFF
+:10F460008908AD058900AD0F294303252D02A94365
+:10F470009505AD0F2D0229430425294321800C99C0
+:10F48000002900D0088001998978A1710199098823
+:10F49000A1803178890601D50B9905E07349624452
+:10F4A00092B20A81991AC919A16000212173327898
+:10F4B000920601D50020C2E700910B9B0A9A04999D
+:10F4C000FFF71BFFBBE7FEB5044600F053F907004A
+:10F4D00008D0664D641EE8880190A6B228683446BC
+:10F4E000009015E00120FEBD0C2000996043095AF0
+:10F4F0008A060BD489078A0D0099801C085C5C4938
+:10F50000104305F0F8FB2889401A2881641CA4B236
+:10F510000198A042E8D8EE8000203870FEBD002897
+:10F5200003D0401E0880002070470120704710B5AE
+:10F530004E490288CB889A4201D3822010BD0B68C5
+:10F540000C21514359180B88CC789B059B0F1B024B
+:10F55000234341608C7904738C884481C38189681A
+:10F56000521C016102800281002010BD0121018234
+:10F570007047FEB505460020C043088068680F4606
+:10F58000817868468170686801886846018000213A
+:10F590008171288A2C88A04200D304462C8234E052
+:10F5A000288A401C2882301D6968FFF70DFE00285C
+:10F5B00029D139882F48814201D1601E388068885E
+:10F5C000A04227D33088F1788005800F00020843DD
+:10F5D00002906946301DFFF7F7FD002813D12989F5
+:10F5E000244881421AD000213046FFF707FE002848
+:10F5F00009D12A890298824205D1E968B06805F0EC
+:10F60000D3FA00280AD0641CA4B2204600F0B2F855
+:10F610000600C5D1641E2C828220FEBD7C80B0799C
+:10F62000B871B088B8803088388130788007810D13
+:10F63000B078014379810298B881B06838610020C0
+:10F64000FEBDFFB585B014460F46059800F092F850
+:10F65000050037D00548BE05807AB60D01281CD0BC
+:10F6600000212846FFF7CAFD002805E0441A0020C3
+:10F6700001020000FFFF000022D1287840060CD5CF
+:10F68000012168460170059981802988C180068121
+:10F690004481F8F7D0F9002812D12888AA78810788
+:10F6A000890D11438005800FEA7800021043BE42A5
+:10F6B0000AD0374A914207D3611E814204DD0B20F4
+:10F6C00009B0F0BD0120FBE7864201D90720F7E72A
+:10F6D000801B82B2A24200D922460E98002800D098
+:10F6E00002800898002804D0A8688119089805F0BD
+:10F6F00088FA0020E4E770B514460D4600F03AF8A9
+:10F7000000280DD001882980002C0DD00178807848
+:10F710008907890D01431E48814203D2012002E07E
+:10F72000012070BD00202070002070BD70B516460D
+:10F730000D4600F01FF804000DD02D882580FF2E07
+:10F7400016D0A807A178800D0843114905F0D3FA17
+:10F75000002E06D101E0012070BDFF31FF310331E1
+:10F7600089B2A170A80880008905890F084320800C
+:10F77000002070BD0749CA88824207D3002805D0FF
+:10F780000C22096850430C38081870470020704755
+:10F7900001020000441A0020F0B585B00E4605466F
+:10F7A0000020694608707078FE49C00003900C582C
+:10F7B000FD4F002D0ED0022D73D0002C72D020787A
+:10F7C000801E030005F0AAFC09837F7F7F83797F79
+:10F7D00077727F00002C03D1F4A16B2005F0ADFB04
+:10F7E0002078801E030005F099FC09065E5E5E1914
+:10F7F000365E50545E003078062803D0EBA17620A8
+:10F8000005F09BFBB8687168806C032205F0F9F97C
+:10F81000012069460870002835D1CEE730780C28E1
+:10F8200003D0E2A1812005F088FBE0680078002881
+:10F8300006D0B8687168806B102205F0E2F928E004
+:10F84000B8681021006B05F039FAB868816A006B5E
+:10F850000A787168F1E730780D2803D0D3A194209D
+:10F8600005F06BFB042069460870716848780978D8
+:10F8700000020843B9684A6A5178127809021143B4
+:10F88000484069468880084608E0C8A1AF2005F0D6
+:10F8900054FB6846007800288FD06846F5F703FBD4
+:10F8A0008BE727E01CE0C1A1B420F0E7B8686169EC
+:10F8B000006CFEF708F8A16900E0E168B868006C28
+:10F8C000FEF701F803E0B9A1E32005F036FBB868C4
+:10F8D0002146006CFDF7F7FFB24A03990020505013
+:10F8E000022D07D0002D05D0012D03D0AFA1EF20B0
+:10F8F00005F023FB05B0F0BD10B501780124012906
+:10F9000002D0022910D112E04268A748002182608B
+:10F910000170A4486C38C166016741678167D2896C
+:10F9200002214C3001F0E1F90024204610BDFF20F7
+:10F930009EA1163005F001FBF7E7F0B505469EA144
+:10F9400003C997B014911390002008A90875954930
+:10F950002A781031944C0491217805910126914F19
+:10F96000A168130005F0DAFB0CEF07309AF0EDEC1C
+:10F97000EBEAE9E9E8EF20700124FF264F3605465F
+:10F9800010A80570457001F0C1F90746012803D0A1
+:10F9900086A1304605F0D1FA10A93846FFF7FCFEE3
+:10F9A0002046641EE4B20028EAD10A2069460870A5
+:10F9B0006846029501F088FA002803D0FF207BA159
+:10F9C000583068E0002646E3C86A0078C0072FD0A8
+:10F9D000012069460870684601F076FA002804D0D4
+:10F9E000FF2072A16B3005F0A8FAA068006CFDF74B
+:10F9F00061FF050004D1FF206CA16E3005F09DFA77
+:10FA000008984078C0003D5006202870A068016822
+:10FA100069600069A8606448C01CE860284601F07D
+:10FA200053FA022804D0FF2060A1783005F085FA4F
+:10FA3000A068C06A00784007C4D5012069460870F4
+:10FA4000684601F041FA002804D0FF2057A1803019
+:10FA500005F073FAA068006CFDF72CFF050004D1D7
+:10FA6000FF2052A1833005F068FA08984078C00062
+:10FA70003D5006202870A068016869600069A86090
+:10FA80004948401DE860284601F01EFA022899D036
+:10FA9000FF2046A18D3005F050FA93E7A9680029B0
+:10FAA00033D0694608712979012932D0022904D05E
+:10FAB000FF203EA1A73005F040FA3A48102210304E
+:10FAC000A96805F09EF83748103036492031486063
+:10FAD0002078C1062CD5EF2108402070032069460C
+:10FAE0000870304810300290684601F00FF9044663
+:10FAF000022808D0002C06D0012C04D0FF202BA116
+:10FB0000B83005F01AFA69466FE101216A461171B1
+:10FB1000DBE7244A04996C3AD06748608860C86083
+:10FB20000621A86803F0FCFE1E4910310860CAE7F0
+:10FB300020210843207045E7A1E15AE119E1E6E000
+:10FB400086E056E000E081E2886C40798009012877
+:10FB500004D0FF2015A1CC3005F0EFF9A068017AA0
+:10FB6000002906D1416B406801F01FFAA16801200D
+:10FB70000872012069460870684601F0A5F900285E
+:10FB800004D0FF2009A1D73005F0D7F9A068006C98
+:10FB9000FDF790FE050004D1FF2004A1DA3005F046
+:10FBA000CCF90DE0BC1A0020B40000207372635C35
+:10FBB000736D2E630000000004411A8800A48000C9
+:10FBC00008984078C0003D5002202870A068416B22
+:10FBD0006960806CC01CA860284601F075F90400BB
+:10FBE00004D0FF20FD49E23005F0A7F9294628316D
+:10FBF000FBE01722684602720122027080788208B8
+:10FC0000287992008007800F024368468270FB20AB
+:10FC1000024028794007C00F800002436846827086
+:10FC2000EA8882804A6C02A901F090F9002804D089
+:10FC3000FF20EA49F73005F080F9052108A8017591
+:10FC40006846017A0187A0680026406C0F9006E2A2
+:10FC5000012069460870684601F036F9002803D093
+:10FC6000DE49DF4805F069F9A068006CFDF722FE67
+:10FC7000060004D18320D949800005F05EF9A06810
+:10FC8000006CFDF717FE1290002804D1D448D34928
+:10FC9000801D05F052F9D3488068006CFDF70AFE1C
+:10FCA000040004D1CE48CD49093005F046F9089842
+:10FCB0004078C0003E500A203070287A3071686861
+:10FCC000C84DB060A868406C30611720307312983E
+:10FCD000B4617061304601F0F7F80446022808D09C
+:10FCE000002C06D0012C04D01120BC49400105F0A5
+:10FCF00024F92046316AFFF74FFD2878052101409D
+:10FD0000042900D05EE6FB21084028702AE005980F
+:10FD100040084000207082071CD5FD221040207052
+:10FD20000F206A46107017201071486C02906846C8
+:10FD300000F0ECFF0546022808D0002D06D0012D6A
+:10FD400004D0A748A5493A3005F0F7F86946284697
+:10FD5000FFF722FD2078052101400429D2D1FB21A3
+:10FD600008402070072008A908759E48807808760A
+:10FD700028E6012069460870684601F0A5F80028C9
+:10FD800004D097489549543005F0D7F8A068006C26
+:10FD9000FDF790FD060004D113209049400105F0C5
+:10FDA000CCF890488068006CFDF784FD040004D115
+:10FDB0008B488A495A3005F0C0F808984078C0004E
+:10FDC0003E500720307087488068406870606868DF
+:10FDD000F460B060304601F077F8040004D0804849
+:10FDE0007E49653005F0A9F8316A2046FFF7D4FC5A
+:10FDF000E8E5012069460870684601F065F80028CA
+:10FE000004D0774875497A3005F097F8089840781B
+:10FE10001190A068006CFDF74DFD060004D1512043
+:10FE20006E49C00005F089F8A068006CFDF742FD3E
+:10FE3000040004D16A486949823005F07EF81198BF
+:10FE4000C0003E50C01929694160092030706868BF
+:10FE50007060A868B060A889B081634830611030D4
+:10FE6000B4617061304601F02FF8022804D05C487C
+:10FE70005A49903005F061F811982875A2E55A4A60
+:10FE800000208C32107002206B4618700192287985
+:10FE9000002801D0107098E0524803230C304068CD
+:10FEA000FB2703708378504A9B089B003B4083707C
+:10FEB0004B7A00271B07DB0F43708C3257600B7B9C
+:10FEC000C370CB7A1372537A0C7D5B08E4075B0036
+:10FED000E40F23430C461534D460FD242340CC7E2C
+:10FEE000E407A40F234353720B461C33136147717D
+:10FEF00007718B7A3B4A9C070C32A40F1268012CC5
+:10FF000004D19478A407A40F012C1DD09B089B005A
+:10FF10008B7293785B0702D48B7A5B0728D54B7A78
+:10FF200013AF5B075B0FDC005B00E3181478640021
+:10FF30001B19DBB2DC083C5D5F077F0F0623DB1B70
+:10FF4000DC40A3079B0F14E04C7A53796406640FDE
+:10FF500023404371147906273C400471E4001C439C
+:10FF6000204B5C7083789B089B005B1C8370D0E700
+:10FF700000238478FB273C408F7A7F07FF0FBF0068
+:10FF80003C4384704C7A6407640F047050780128F5
+:10FF900007D1487A000704D5032008A90875022074
+:10FFA0002DE0022B27D0012B2BD00F4B0020049AE1
+:10FFB000D86750609060D06018467C30024610329E
+:10FFC0005060887AFB2210408872684600F09EFEDE
+:10FFD000040035D0012C34D0004907E0ACFB000010
+:10FFE00009020000B4000020501A00206520C00063
+:10FFF00004F0A3FF25E0032008A908750120087676
+:020000040001F9
+:10000000E3E77E4C0D21E01C04F058FE2046103042
+:100010004460022008A908750E94A868002807D03B
+:100020000068206005997648202211430170CCE7D2
+:1000300005980007C9D57349734804F07EFFC4E7EB
+:10004000002669462046FFF7A7FB04E06E486D498D
+:10005000203004F072FF08A8007D002802D00DA80F
+:10006000F4F721FF304617B0F0BDF0B597B00C465D
+:10007000054600206946087061482F785F4E017878
+:10008000583E82683B0005F049F80BAA8407263BDE
+:100090004C6B79798F9CAA002B20694608730CA9B8
+:1000A00003A8FDF73DFC002804D0574855494130CE
+:1000B00004F043FF55490D9804F01DFE4F480160C0
+:1000C0004F4869680C300160AA68426001910820BD
+:1000D000694608708CE08A0610D5DF221140017055
+:1000E00003202070454810304168A1604068002816
+:1000F00002D00020207177E00120FBE7102256E0BB
+:100100002B20694608733D4903A85C39FDF708FCBC
+:10011000002804D03C483B496A3004F00EFF04201C
+:100120001BE02A206946087303A810220230696880
+:1001300004F067FD07A810220230A96804F061FDF1
+:100140002E4903A85C39FDF7EBFB002804D03920C9
+:100150002C49000104F0F1FE05202070666043E0A8
+:100160002A79002A02D00122114301700520694634
+:10017000087028798880A868029039E0D06A402306
+:10018000018819430180D06B6968102204F039FDA1
+:100190002AE0FB2211400170062069460870A96818
+:1001A00068680291019023E0CB0703D0022211433B
+:1001B000017058E70F20207017202071506CA0604C
+:1001C00012E0937A9B0706D0D26A44781388FF34F2
+:1001D00001342343138004221143017004E00A48D0
+:1001E0000849BD3004F0A9FE684600780028E0D038
+:1001F0006846F4F758FE36E701207047CC1A002015
+:10020000B4000020ACFB00001503000040420F00CA
+:1002100070B504780D460646230004F07FFF0B1CE2
+:10022000181C1C1C1C07181C1C181C000021052075
+:1002300001F038FDB068007805280CD0FA4800229B
+:10024000008811468300052001F087FC03E00021AF
+:10025000052001F027FD002D0ED000202870294632
+:100260003046FFF702FFF1482978005D884201D14E
+:10027000032070BD022070BD00213046FFF7F5FE5F
+:10028000002070BD30B5E8494B68497A0A01114633
+:100290000C315C5C032C0CD0044600252034257105
+:1002A00025725C5CA500AA18641C5C54985003205D
+:1002B00030BD062030BDF0B50446264620360D463A
+:1002C0003279012008218FB0002A0CD0012A21D0D8
+:1002D000022A2BD0032A04D12A78052A01D12970B9
+:1002E00000200FB0F0BD01203071606800280AD0F6
+:1002F000A069017061684160216981606169C160C4
+:10030000FFF7C0FFEDE7072028702069686060698B
+:10031000A86009E029780729E3D10220307105207F
+:100320002870C248203868600320DAE72978052958
+:10033000D7D1A08910280AD9103880B2A081A1682D
+:100340001023091803A86A6800F054FE2DE0102855
+:1003500004D0C1B20BAA1020A76809E010232269BB
+:10036000A16817E0491EC9B2401EC0B27B5C13549D
+:100370000029F7D100280AD0401EC0B280211154B4
+:10038000002102E0401EC0B211540028FAD1626977
+:1003900010230BA907A800F02DFE102307A903A81E
+:1003A0006A6800F027FE032030716068019003A89E
+:1003B000029005206946087029466846FFF728FF25
+:1003C0008FE7F0B5044626460D46203631790120E8
+:1003D0008DB000290BD0012938D0022905D1297808
+:1003E000052902D10920287000200DB0F0BD217D23
+:1003F0006846CA07D20F02738807C10F68460174A6
+:10040000012203A905A800F0EDFD04A9012205AF12
+:10041000481D00F0E7FD0722B81CE16800F0E2FD8E
+:1004200007A807220130216900F0DCFD6068019017
+:1004300009A80290102305AAA16800F0DBFD0120A5
+:100440003071052168460170294621E02978052987
+:10045000CBD1062203A8E16900F0C4FD04A806225E
+:100460000230A16900F0BEFD042106A800F0B2FD33
+:100470006068019007A80290102303AA696800F041
+:10048000B9FD02203071052069460870294668468A
+:10049000FFF7BEFEA9E7F0B5074685B00D46002080
+:1004A000694608703E4662482036327981791338B1
+:1004B00001240078130004F031FE180DFEFDFCFB52
+:1004C000FAF9F8F7F6F5F4F3F2F1F0EFEEEDECEB04
+:1004D000EAE9E8E7B968039100291BD001226946DF
+:1004E0000A7003220A710A224A7139690291397924
+:1004F00000297DD0039A1278002A7AD00C2A78D26B
+:10050000130004F00BFE0BEF09EF354D8498B0F1AA
+:10051000EDECEF000020C8E30021062001F0C2FB53
+:100520003879072866D1424C133C2078022802D043
+:1005300000287FD101E00020207003980079C11FBE
+:100540000A2901D30A2598E1607039480722C01FA3
+:10055000039900F047FD01203071207002206946A8
+:1005600008703348801F01903869401C029037E2C0
+:1005700011293DD12E4C133C0228DAD160686178F4
+:10058000007A884201D9062577E10399264810228E
+:10059000491C303800F026FD03202070022045E180
+:1005A0001129E6D1224C133C0428C2D10520207029
+:1005B00003991D481022491C203800F013FD062025
+:1005C0003071786903210170626851684160164991
+:1005D0002039816021460C31C160C91D0161017D56
+:1005E000537A49084900DB07DB0F1943017502E024
+:1005F00070E354E384E1D3688361FD231940537AA7
+:100600009B07DB0F5B0019430175116976E1022935
+:10061000AFD1002867D0052069460871039840785B
+:1006200048713869029051E3201B00209C51010061
+:10063000DB00002082E011299BD1F74C06287DD1F8
+:10064000A0680399806B1022491C00F0CBFC0621A6
+:100650006846017038690290002168460171FFF711
+:10066000D7FD072057E00B299BD1EB4C07287ED103
+:10067000A0680399006B0222491C00F0B3FCA0683B
+:100680000822406B039917E00EE116E3FDE2DDE27C
+:10069000C7E2BCE29EE267E248E241E21FE2F5E126
+:1006A000DFE1C8E1BEE1B1E1A5E16AE147E128E1AE
+:1006B000DAE0BEE0AFE075E0C91C00F093FC062173
+:1006C0006846017038690290002168460171FFF7A1
+:1006D0009FFD204613304179490849003EE041E042
+:1006E0001BE001E05CE0EFE2112991D1CA4C08283F
+:1006F0003DD1A0680399C06B1022491C00F072FC28
+:10070000062168460170386902900021684601712F
+:10071000FFF77EFD09202070C9E208298CD1BE496F
+:10072000092824D1039842788868016C0A700399DB
+:10073000406C0622891C00F055FC00E017E0062101
+:100740006846017038690290002168460171FFF720
+:100750005FFDB14813304179FD221FE041715EE237
+:100760003071F2E11129C0D1AB490A2801D0082526
+:1007700083E088680399806C1022491C00F032FCE9
+:1007800006216846017038690290002168460171AF
+:10079000FFF73EFDA04813304179FB221140DDE711
+:1007A00007256AE0297802297ED19B490128FBD1DF
+:1007B0006A684A6015780846002D5CD106216A46B1
+:1007C00011703969029107211171029902240C708C
+:1007D000CA785207520FCA704B795B075B0F4B7197
+:1007E0008B795B075B0F8B71D20701D18A714A71DC
+:1007F00005460A794078824200D26A70864807220C
+:10080000133000F0EFFB00202C7030710146684679
+:10081000FFF7FEFC4BE229780429C5D103286FD1EC
+:1008200008227E48696800F0DDFB03203071042057
+:10083000F2E129780429B7D1774F0328B4D177485A
+:1008400008220830696800F0CDFB04203071786818
+:100850004168002906D003212970002129714068D0
+:10086000A86072E10320D7E1287803289CD1287979
+:1008700000281AD00546002D16D0062168460170C2
+:1008800038690290022168460171029805210170C1
+:10089000457000216846FFF7BBFC012168460170E6
+:1008A00004210171457115E293E15B49A86849682B
+:1008B0000028486001D15A484860052030717869A5
+:1008C000032202704A684260544A8260524A0C32E3
+:1008D000C260D21D0261027D4B7A5208DB075200D2
+:1008E000DB0F1A430275CB688361FD231A404B7AF4
+:1008F0009B07DB0F5B001A4302750969C16130E198
+:100900000DE12978092988D14349032885D104209C
+:100910000870062069460870386902901120087135
+:10092000029803210170401C1022696800F05AFBF4
+:1009300000216846FFF76CFC00203071B7E1297890
+:10094000092993D1052891D134496A6820391020AA
+:10095000401EC0B20B5C145CA34203D000200425EF
+:1009600030718AE70028F3D10720307178690421BB
+:1009700001702949496849684160284981601039F6
+:10098000EEE028780A28BED106206946087038694A
+:10099000029011200871029804210170401C10225D
+:1009A0001E4900F01FFB00216846FFF731FC1A4882
+:1009B000102140786A68091AC9B2101800F00AFBC1
+:1009C0006868019014481330C178C9070BD0817949
+:1009D000002902D14079002805D0082030711BE1A0
+:1009E00029466846EFE007206946087000216846FE
+:1009F000FFF70EFC5FE128780E2884D1064869686D
+:100A000081608969407808700920A9E6C80701D08B
+:100A10000A20FFE00F20A3E6C8000020101B0020E2
+:100A20007C51010028780F2879D1A868386128798D
+:100A300038730B20FAE628780428F5D1FC4C696855
+:100A4000A0680822006A00F0CDFA0C2030717869A5
+:100A50000722B9690270A268D3684360126A826093
+:100A60007EE028780D28DFD1F14C6968A068022368
+:100A70000269C06900F0BEFA0D2030717869062164
+:100A80000170A1688A684260096966E028780C28CC
+:100A9000CAD1E74C6968A0686278406A00F0A2FA9F
+:100AA0006078A2681021091A526AC9B2101800F0C1
+:100AB00091FA062168460170386902901122684651
+:100AC0000271029810220170A168401C496A00F06E
+:100AD00089FA00216846FFF79BFB0E206EE028781C
+:100AE0000F2876D1062168460170386902900B21E3
+:100AF00068460171029C0720CD4D2070A868022233
+:100B0000C169601C00F06EFAA8680822016AE01C46
+:100B100000F068FA00216846FFF77AFB7AE7C8E040
+:100B2000880701D5102075E0132019E628780F28D2
+:100B30004FD1A86838612879387311203071BC48CA
+:100B4000816848690078002801D00324CAE07869E8
+:100B500006220270C9684160B6498160B549091D25
+:100B6000C160FFF78FFB30E0B148806841690978C8
+:100B700000290CD129780C292BD1AD4C6968806AE9
+:100B8000102200F02FFAA16801204969087006219F
+:100B90006846017038690290112168460171029817
+:100BA00008210170A249401C89681022896A00F05E
+:100BB00019FA00216846FFF72BFB1220307109213A
+:100BC000684601702946FFF723FB044601287DD0C3
+:100BD00088E06FE028780F286CD1062069460870FD
+:100BE0003869029008200871029809210170904923
+:100BF00089680A78D207D20F427049680622801CA1
+:100C000000F0F0F900216846FFF702FB8CE7480787
+:100C100005D514203071092069460870E0E61620D9
+:100C20009EE528780F2851D1A86838612879387353
+:100C3000152030717869062101707D4989688A68BC
+:100C40004260096981607B49891D89E728780C2801
+:100C500045D1774C6968A0681022C06A00F0C2F9DB
+:100C600006206946087038690290112008710298C0
+:100C70000A210170A168401CC96A102200F0B2F973
+:100C800000216846FFF7C4FAC9E769481330407984
+:100C9000002810D0C10703D065480621017006E086
+:100CA000800701D5082000E00A206149087000246F
+:100CB00018E00BE013E0172052E55D49002805D04D
+:100CC0000020307108700A20694608706846007874
+:100CD000002804D000216846FFF79AFA00245448FF
+:100CE00000210170204605B0F0BD10B5524BFF2425
+:100CF0005C72586019721A80002204E0491EC9B261
+:100D00000B010C33C2540029F8D110BDF0B54A4E86
+:100D10000546717A01208DB0FF2971D00127727AC2
+:100D2000736811015C180C31595C8900091F645803
+:100D30006A7021780B0004F0F1F90B960709272C53
+:100D400059888D4A4F5492002F707CE02146203103
+:100D50000A9109790120002902D0012967D10EE00A
+:100D60006068019005A802900D21C01C00F032F9C6
+:100D7000032205A8A16800F035F90A984EE0297809
+:100D8000052974D106215DE029462046FFF719FBAD
+:100D900069E021462031069109790120002902D01D
+:100DA000012964D10EE06068019007A80290082232
+:100DB000E16800F017F9082209A8A16800F012F90B
+:100DC00006982BE02978052951D10A213AE02946D5
+:100DD000204600F01AF946E029462046FFF76BFA54
+:100DE00041E029462046FFF756FB3CE021462031F2
+:100DF000059109790120002903D0012937D11DE08F
+:100E000056E06068019007A802900822A16800F0EF
+:100E1000E9F8082109A800F0DDF80598694607718E
+:100E20000520087029466846FFF7F2F91BE00BE041
+:100E3000C800002074510100201B002029780529DA
+:100E400015D10B212970002011E02946204600F021
+:100E500023F908E02946204600F04EF903E0294630
+:100E60002046FFF7C9F9002801D001280CD12562DE
+:100E7000717A736809010C315A5C521E1206120E07
+:100E80005A5401D003204AE70328FCD0737A7268D1
+:100E900019011D010D312C46515C7172FF270D3473
+:100EA00017550C35545D002C02D0FF2903D1737205
+:100EB0000DB0F0BD21460C010D34145DFF2CF9D1AD
+:100EC00009010D315354F3E770B5AD4C0546607A16
+:100ED000214603464A6811E0010108460C30105CC7
+:100EE00008E0401EC0B286008E199659AE4201D16C
+:100EF000042070BD0028F4D10D31505CFF28EBD1E7
+:100F00009F480021007A01E0491CC9B2884204D9F7
+:100F10000E010C36965D002EF6D1884201D80520D0
+:100F200070BD08010D30135461722846FFF7AAF90D
+:100F3000032806D0617A626809010D31515C617243
+:100F400070BD28462830FFF7E1FE70BD10B504786B
+:100F50000123012C14D10C78022C11D30B23137014
+:100F600083785B075B0F537002220A708088002829
+:100F700005D0830000221146062000F0EEFD00237C
+:100F8000184610BD0EB50022012105280AD00628FA
+:100F900007D1684601700221017142710021FFF7FB
+:100FA00064F80EBD68460170F6E710B58EB00C46C9
+:100FB00006216A461170019072480290001D03904C
+:100FC0006846FFF781FF102220460B9900F00AF8CF
+:100FD0000EB010BD002202E0491EC9B242540029E1
+:100FE000FAD1704703E0521ED2B28B5C8354002AC0
+:100FF000F9D1704730B505E05B1EDBB2CC5CD55C47
+:101000006C40C454002BF7D130BD3EB504462030AF
+:101010000D4602790121002A02D0012A3AD10FE0BF
+:101020006168019157490831029101210171052040
+:101030006946087029466846FFF7EAF8014629E044
+:101040002878052826D169681022A06800F087F862
+:101050006868C07B000606D54A4AA068102318328B
+:101060000146FFF7C7FF1022A168E06800F077F89B
+:10107000A068C07B000606D5424AE06810231832FB
+:101080000146FFF7B7FF07202870A0686860E06896
+:101090000021A86008463EBDF0B5044626460F462E
+:1010A00020363179012089B0002909D0012905D1E4
+:1010B0003978052902D10C203870002009B0F0BD24
+:1010C000606803AD01900295022203A8A168FFF7B2
+:1010D00089FF0222A81CE168FFF784FF0C21281D6C
+:1010E000FFF778FF01203071052069460870394606
+:1010F0006846FFF78DF8E1E710B5034620331C7909
+:101100000122002C04D0012C10D0022C25D11EE08D
+:1011100001211971C16806220A70406848601948A7
+:10112000801C8860801CC86008460CE00C780C2C81
+:1011300013D102221A71C2680523137049685160E5
+:10114000806890601046FFF79DF8024605E0087839
+:101150000B2802D10D2008700022104610BD10B5DA
+:10116000002409E00B78521E5B0023430370401CEF
+:101170000B78491CD2B2DC09002AF3D110BD000063
+:10118000201B00207451010070B50D46040012D0E0
+:10119000002D10D02101284603F090FD1022544963
+:1011A000284603F02EFD5248012108380180448072
+:1011B0004560002070BD012070BD70B54C4E00240C
+:1011C0000546083E11E0716820014018817BAA7B2A
+:1011D000914209D1C17BEA7B914205D10C2229467B
+:1011E00003F0E2FC002806D0641C30888442EADB6D
+:1011F0000020C04370BD204670BD70B50D4606008E
+:101200000AD0002D08D03A4C083C20886188401C48
+:10121000884203D9042070BD102070BD3046FFF70E
+:10122000CCFF002801DB401C0AE020886168000137
+:1012300040181022314603F0E4FC2088401C208036
+:101240002870002070BD70B514460D001FD0002C12
+:101250001DD00021A170022802D0102817D108E06B
+:10126000687829780002084311D00121A17010800C
+:101270000BE02846FFF7A1FF002808DB401CA07008
+:10128000687B297B000208432080002070BD01207C
+:1012900070BD70B5054614460E000AD000203070AF
+:1012A000A878012807D004D9114908390A88904242
+:1012B0000BD9012070BD002C04D02878207028881C
+:1012C000000A50700220087010E0002C0CD0496811
+:1012D0000001411810391022204603F092FC2878B2
+:1012E00020732888000A607310203070002070BDC1
+:1012F000EC000020734909680160002070477149C3
+:1013000008600020704701216F4A704B002803D00D
+:10131000012805D06E48704791630020187001E0E5
+:10132000D1631970002070476A490120086068483D
+:10133000801C70470422684B6649002805D05A601B
+:10134000086901221043086108E00869400840006C
+:1013500008619A605C490020C031886000207047B5
+:101360005C490622002808D0012809D002280DD0A7
+:1013700003280FD05648401C70470869904302E08C
+:1013800008699043801C08610020704708699043F9
+:10139000001DF8E708691043F5E74E494A6A024321
+:1013A0004A62002070474B494A6A82434A620020E1
+:1013B00070474849496A0160002070474549CA6939
+:1013C0000243CA61002070474249CA698243CA6128
+:1013D000002070473F49C96901600020704730B55F
+:1013E0000546002072B601463A4A384C4032002D7C
+:1013F00011D00123012D0CD0022D02D0072062B69E
+:1014000030BDA3706478002C01D09363F7E791633B
+:10141000F5E7A170F9E7A170F9E72F49042088608A
+:1014200029490020C03188602849012008702B49D3
+:101430000A688023120A12021A430A6028490860C7
+:10144000704722480078704770B5EFF31080C507E9
+:10145000ED0F72B61D4C6078401C0006000E6070E7
+:1014600003D120A1CC2003F068FD6078012806D1CB
+:10147000A078002803D01749012040318863002D4F
+:1014800000D162B670BD70B5EFF31080C507ED0FE7
+:1014900072B60E4C6078002803D112A1DC2003F054
+:1014A0004CFD6078401E0006000E607006D1A078EA
+:1014B000002803D00749002040318863002D00D167
+:1014C00062B670BD0004004040000040FC000020F7
+:1014D00004200000000500400003004000E400E09C
+:1014E00000E100E07372635C736F635F706F776538
+:1014F000722E63008107C90E002808DA0007000F6A
+:1015000008388008B94A80008018C06904E0800863
+:10151000B74A800080180068C8400006800F7047F6
+:10152000B44948788978884201D3401A02E02122E0
+:10153000511A0818C0B27047AE49233148788978EB
+:10154000884201D3401A02E02122511A0818C0B281
+:101550007047A849463148788978884201D3401AB3
+:1015600002E02122511A0818C0B27047A04810B5F5
+:101570000C300168FF22120291430122D203114371
+:1015800001609C49002023314870887023394870DD
+:101590008870463148708870974802F0FFFA964884
+:1015A000401C02F0FBFAF2F7C7F900F015F910BD84
+:1015B00020207047B4E770B50C4605460026FFF7BB
+:1015C000AFFF8C49A04214D30A46203A002320469C
+:1015D000641EE4B200280BD08878105C28708878EC
+:1015E0006D1C401CC0B288702128F0D18B70EEE7D2
+:1015F000012600F0F1F8304670BD202070479BE7CF
+:1016000070B50C4605460026FFF796FF7949233151
+:10161000A04214D30A46203A00232046641EE4B2B6
+:1016200000280BD08878105C287088786D1C401CCE
+:10163000C0B288702128F0D18B70EEE7012600F04F
+:10164000CBF8304670BD202101700020704710B5E6
+:101650000446FFF77EFF2070002010BD70B50C46D9
+:101660000546FFF776FF63494631A04215D30A4687
+:10167000203A00232046641EE4B200280BD088786C
+:10168000105C287088786D1C401CC0B288702128BE
+:10169000F0D18B70EEE7002400E0584C00F09CF88D
+:1016A000204670BD70B50C460546212904D9FF209F
+:1016B00053A1473003F041FC4C484068103840B219
+:1016C000FFF718FFC6B20D20FFF714FFC0B2864225
+:1016D00007D2FF204AA14D3003F02FFC01E0F2F7C2
+:1016E0006BF921462846FFF766FF0028F7D070BD4A
+:1016F000F8B5404E07462336B1787078212200F0C5
+:1017000060F8354623353B4C00280ED0A178607830
+:10171000212200F056F8002814D0A97868782122F8
+:1017200000F04FF800281AD025E032497078C91C23
+:101730000F547078401CC0B2707021281BD100205B
+:10174000707018E02B49607820390F546078401C85
+:10175000C0B2607021280ED1002060700BE02549D6
+:10176000687826310F546878401CC0B26870212810
+:1017700001D100206870B1787078212200F021F842
+:1017800000281DD0A1786078212200F01AF80028E6
+:1017900016D0A9786878212200F013F800280FD01D
+:1017A000F2F7ECF8144802F001FA012149038842EB
+:1017B00003D013A1C12003F0C0FB0F4802F00EFAC2
+:1017C000F8BD401C884205D0904201D1002901D0CB
+:1017D000002070470120704710B5074802F0E6F975
+:1017E000002801D1F2F7B9F810BD000000ED00E0CB
+:1017F00000E400E04C1B0020FF0000200720000058
+:101800007372635C736F635F72616E642E6300005A
+:1018100010B5284802F0C2F9002803D026A11D20E7
+:1018200003F08BFB2348401C02F0B8F9002803D0DA
+:1018300021A1212003F081FB10BDF1B5224D6F687D
+:1018400001261C4802F0B2F91A4C002803D10026E8
+:10185000601C02F0C3F91D4A1D490120506000BF01
+:1018600000BF00BF00BF00BF00230B604B60009BA8
+:101870006B60106000BF00BF00BF00BF00BF086802
+:10188000002802D148680028F9D048680028E4D12F
+:10189000002E04D06F60601C02F088F907E0601C25
+:1018A00002F084F90028D3D1024802F097F9002011
+:1018B000F8BDC2E7010100207372635C736F635F60
+:1018C0006563622E6300000000E5004000E0004018
+:1018D00000E1004030B5EFF31081CC07E40F72B6A1
+:1018E0001D4A116910230D461D431561002C00D1BE
+:1018F00062B61A4DC406E40E0120A0402C680442D2
+:101900000DD0C8060AD4EFF31080C007C00F72B61E
+:10191000116999431161002800D162B630BD20BF22
+:1019200040BF20BFEAE70E4908784A78401CC0B2A1
+:10193000904200D008707047084A094820BF40BF55
+:1019400020BF4178037843701368002B02D10378DD
+:101950008B42F3D00020704700ED00E000E200E091
+:1019600003010020FEB5F64C07466068FF213E01EA
+:1019700081552178FF2913D0090108314158324699
+:10198000491E083209020192090A805800F0CEF976
+:10199000002802D02478254615E061682078885513
+:1019A0002770FEBDE6484268019811582801009052
+:1019B0000830105800F0BAF9002806D1E0482C464B
+:1019C000416800980D5CFF2DECD1DD482101406895
+:1019D00085554754FEBD70B5D94A04460020157A96
+:1019E00053680AE00201561C9E5DA64203D10C32E8
+:1019F0009A588A4204D0401CC0B28542F2D8FF20D7
+:101A000070BDF8B5CE4F3E7801F01AFE0146FF2EAC
+:101A100071D03401254678680835405900F086F9C0
+:101A200002280CD97868405901F0FDFD01F008FE4C
+:101A300001467868405900F079F902285BD8C0491E
+:101A40004868025D0A70A11C425C002A0CD0521E3C
+:101A5000425441590122D20589180902090A41510B
+:101A60003046FFF77FFF30E0631CC25C0092221D0E
+:101A700094468258002A10D001239B029A420FD923
+:101A80009205920D43595703DB191B021B0A435160
+:101A90006346C3589A1A920A09E0FF21C1540AE02A
+:101AA000435952039A181202120A42510022425418
+:101AB0003046FFF757FFA2480C344168C2680098CF
+:101AC000095980001258009890479D4C2078FF28B3
+:101AD00011D0000161680830085801F0A4FD01F040
+:101AE000AFFD01462078626800010830105800F010
+:101AF0001DF9022886D3F8BDF8B51C4615460E46DA
+:101B00000746FF2B03D38FA1D42003F016FA8C488D
+:101B1000FF21C760456004720674017000224270A4
+:101B2000104604E00201521C401CA954C0B2A0425D
+:101B3000F8D3F8BD70B5824C06466578207C8542A6
+:101B400003D380A1E72003F0F8F9E068A90046502C
+:101B50006078401C6070284670BDFFB581B01D469E
+:101B6000FF2401F06DFD764F064679780198814299
+:101B700003D874A1F52003F0E0F971480021037A3D
+:101B8000406810E00A019446521C825CFF2A25D06E
+:101B9000019FBA4205D162460C328758029A974299
+:101BA0001ED0491CC9B28B42ECD8FF2C18D02101A1
+:101BB0004A1C019B83540B460C33029AC250039B70
+:101BC0005F4F0022012B0ED00B1DC25001239B0240
+:101BD0009D4216D9AA05920D08D008E00C46E0E710
+:101BE000FF2005B0F0BD0B1DC550EFE71A465303AB
+:101BF0009B190E461B0208361B0AAA1A8351920A29
+:101C000009E0002D00D101256B039B191D022D0A4F
+:101C10000B460833C550891C42543D463E78204649
+:101C2000FFF7A0FE2878B04214D0000169680830A0
+:101C3000085801F0F8FC01F003FD29786A680901F1
+:101C4000083152580146104600F070F8022801D2BF
+:101C5000FFF7D7FE0198C4E770B50C46054601F0C2
+:101C6000EFFC064621462846FFF7B5FEFF2817D0B1
+:101C7000334D04012046696808300858314600F0A9
+:101C800055F80121090340186968A41C095D400B3F
+:101C9000002901D089020818002800D1012070BD58
+:101CA000002070BDF3B581B00F460198FFF793FE99
+:101CB000FF282AD0224E3578726829460C4604E067
+:101CC000844205D025462301D45CFF2CF8D11CE0CA
+:101CD000FF2C1AD0A5421CD10801105C3070FF28DF
+:101CE00015D000010830105801F09DFC01F0A8FC4F
+:101CF00001463078726800010830105800F016F87C
+:101D0000022806D2FFF77DFE03E00020FEBD01F0B1
+:101D100092FC39460198FFF79FFF22017168FF236B
+:101D2000541C0B558A5C2B01CA54FEBD401A00029C
+:101D30000121000AC905884200D90020704700002F
+:101D4000981B00207372635C736F635F74696D65C9
+:101D5000722E6300F0B500241C4A01211C4B0803BD
+:101D6000546018601B4B1C601B4C20601B480469AE
+:101D7000E443E406E6170469761C10252C4304614D
+:101D8000174C6160174D296000E020BF1F68002FCD
+:101D9000FBD0002E03D107691026B7430761906876
+:101DA0008005906801D5104A10436960A160002148
+:101DB00019600121084A09031160F0BD10B50446FD
+:101DC000FFF7C8FF2060002010BD000000C50040E4
+:101DD00080E100E000C1004080E200E000ED00E0B2
+:101DE00000C3004000C0004000FCFFFF70B51F4969
+:101DF0000A68002A17D000231D4601244A68521C95
+:101E00004A60092A00D34D600E792246B2400E681E
+:101E100016420AD072B60B6893430B6062B64968EB
+:101E20000160002070BD052070BD5B1C092BE5D34F
+:101E30000FA1362003F081F8F5E701201049800555
+:101E400008607047EFF31081CA07D20F72B6012104
+:101E500081400648036819430160002A00D162B638
+:101E6000EBE7024800210160416070470801002053
+:101E70007372635C736F635F6576742E630000003A
+:101E800000E200E00120810708607047012081071F
+:101E9000486070471048C068C00700D001207047F4
+:101EA0000D488068C00700D0012070470A4840698B
+:101EB000C00700D0012070470748C0697047064935
+:101EC0008A69D20306D589698907890F814201D1C0
+:101ED000012070470020704700040040F8B5FE4C18
+:101EE000207BE17A88421AD00126FC4D0027E07A57
+:101EF000215C14200A4642435019037C052B0FD065
+:101F0000062B1BD0072B28D0437C012B33D0F4A108
+:101F1000F64803F012F8207BE17A8842E7D1F8BD59
+:101F20000674E07A0A2807D0E07A401CE072491C67
+:101F3000C8B2AA5802210CE00020F7E70674E07A44
+:101F40000A2808D0E07A401CE072491CC8B2AA589E
+:101F500003219047DFE70020F6E70674E07A0A28BD
+:101F600007D0E07A401CE072491CC8B2AA58082188
+:101F7000EFE70020F7E74774E07A0A2807D0E07A15
+:101F8000401CE072491CC8B2AA580721E1E70020B2
+:101F9000F7E770B5D64D06206872D648002444771E
+:101FA000047738300473C472D34801F0F7FDD34886
+:101FB0000475EC72D249601E88606C71AC70EC7074
+:101FC0002C716C70CF48022104704470CE480470AC
+:101FD000047528300470491EFAD10120F1F76EFD16
+:101FE0000020F1F76BFD0120A871F0F785FDC748CF
+:101FF000F0F794FDC64C2070C648F0F78FFD607076
+:10200000F1F700FD70BD10B5F1F727FDC04C207849
+:10201000F0F7A2FD6078F0F79FFDB54C207A00281C
+:1020200005D0FFF730FAF0F726FE0020207210BD31
+:1020300070B5AF4CA079002804D0A9A1B64802F031
+:102040007CFF70BDE07A002804D11320A4A14001D8
+:1020500002F073FF0126A6710025E572607A042163
+:10206000142250439D4A80180174A5488168491C78
+:1020700004D0691E81600120F1F720FD0020F1F7F6
+:102080001DFDF1F701FD01F023FEF1F706FEA34867
+:10209000056005600120A249C0030860F0F78EFFCB
+:1020A00098480078022804D0032804D1E07800285A
+:1020B00001D0A67000E0A570F1F7DBFD70BD03460E
+:1020C00086490520142242435218203A127F002AE2
+:1020D00004D0401E0006000EF4D170471422424383
+:1020E00051180A46403AD362012220390A777047D4
+:1020F000012805D0032805D1002903D1002070470D
+:102100000029FBD010B47A4C002363707D4A00286C
+:1021100090700CD002280AD007291AD20B007B44F9
+:102120001B79DB189F441505070D0F111300D370A1
+:1021300003E01B2000E03A20D0700120607010BC4A
+:1021400070475820F8E77720F6E79620F4E7B520A7
+:10215000F2E710BC0020704710B56A484078F1F7EC
+:10216000A3FD80B210BD411E1422504310B55B4A3E
+:102170008418203C042902D8207F002803D158A1CC
+:10218000684802F0DAFE207F012803D054A1664897
+:1021900002F0D3FE0020207710BD70B5554C607F53
+:1021A000217F884201D1012500E00025F1F715FDCE
+:1021B000F1F77AFD617F227F914201D1012100E098
+:1021C0000021A942EBD170BDF7B50646481E8446F2
+:1021D0008EB0C0B2142204905043404A851828465D
+:1021E0000595007C2D1D07282AD13B4C0027E07A5D
+:1021F000227B824221D0235C049A934201D10127A1
+:1022000001E0002F04D00A2811D0421CA25C225405
+:102210000A280ED0401C227BC0B28242EBD1002F94
+:102220000BD0207B002806D0207B401E04E000223B
+:10223000ECE70020EFE70A202073059A01201074D4
+:1022400060462B4C04280FD814204143234808181B
+:102250002038007F002807D00598007C012807D08F
+:102260001098807A012807D01DA1304802F065FE41
+:102270001098807A012871D10598184B007C0228AB
+:102280001AD0154C207B0A2874D0207BE17A401CA0
+:10229000884204D1C92012A1800002F04EFE0599A7
+:1022A00001204874217B04986054207B0A2865D063
+:1022B000207B401C20731CE1607A049A0146904206
+:1022C00006D0014614277843C018807C9042F8D18C
+:1022D000627A824235D12BE0A41C0020B41C00207D
+:1022E0007372635C72656D2E63000000D50500009B
+:1022F000381D00206C1C0020441D00208C1C002078
+:10230000181D002012010020C41C0020031A010027
+:1023100010010020DD1E01007F02000000F50040DA
+:1023200080E200E0CD020000CE02000017030000B2
+:10233000617A14225143C918897C61720121A1720A
+:1023400007E014224243D21814277943927CC9181B
+:102350008A74142206215043C01881741098007AA0
+:10236000062819D203007B441B79DB189F4408120E
+:10237000100E0C0AE07A00288CD090E7002099E734
+:1023800000210FE0B4210DE073210BE0322109E0C0
+:102390000A2107E0062105E0FF20FE49E23002F0B5
+:1023A000CCFD0021109802910068401A2860109915
+:1023B000097A002912D00221401A0102090A296073
+:1023C00010980268406810180002000A68601098AF
+:1023D000807A0228109803D0007B74E00421EBE798
+:1023E000007A002813D00222029810188446109810
+:1023F0004268604608301718E748029A40789042D1
+:1024000002D9E278002A04D03846083005E00422D8
+:10241000EAE7029A801AC0190830627A062A1CD0AC
+:10242000627A14235A43DD4BD2185268914214D079
+:10243000DB4B0793617A14225143D84A89184A68C2
+:102440008968921B891B12020902120A090A90422A
+:102450003AD89A4238D8994236D83018C01B000270
+:10246000000A286010996044CE4AC9680002000A38
+:102470009446421A01239B0507929A4201D21046C4
+:1024800014E00A1A09929A4201D207980EE0079ABC
+:102490006346624503D9591A0818401C06E0099A98
+:1024A000624506D9181A4018401C404200285FDCDB
+:1024B00003E0B849BC4802F040FD2868C01900029A
+:1024C000000A686000202872686808270830000247
+:1024D000000A68601098407AA8721098007A6872B2
+:1024E00003280ED200280CD0FFF7D4FC002803D01C
+:1024F00007E0002011B0F0BD02983A210F1A3220F7
+:102500000290A5480178012901D0032909D1417819
+:102510000298814205D9E078002802D10298081A71
+:10252000C71928689E4A801B844601026868090A08
+:10253000801B03021B0A8F421AD81746914217D8F4
+:10254000BB4215D8617A062916D0677A6146062201
+:10255000039200923A4614235A43904BD218936840
+:102560009B1B8B4216D80397977C062FF2D177E0FE
+:10257000049801F059F9BCE7059802220499027405
+:10258000627A062A00D0627A827461720120A07297
+:1025900011B0F0BD062F63D00022394694461422B4
+:1025A0007E4B4A43D21853689B1B834229D2917BAE
+:1025B000AB7A99421FD805980521049C7B4D017484
+:1025C000287B0A2811D0287BE97A401C884203D155
+:1025D0007049774802F0B1FC287B2C54287B0A28EC
+:1025E00007D0287B401C287383E7E87A0028EFD0C7
+:1025F000F2E70020F7E701218C46917C0629CED135
+:1026000002E0604600282AD03D46009114202A4668
+:10261000424362480621161831741038007B0A289C
+:10262000624816D0017BC07A491C814203D161A166
+:10263000634802F082FC5D48017B4554017B0A2916
+:102640000BD0017B491C0173B57C0098A842DDD1F9
+:1026500006E0C07A0028EAD0EDE70021F3E7009712
+:102660000599022008744D4D607AB84207D105994A
+:1026700000988874049860720120A07221E0039889
+:10268000062F0FD0062803D14AA14E4802F055FC70
+:1026900003981422504340190499817405990098B5
+:1026A00088740EE0062803D142A1474802F045FC99
+:1026B0000398142250434019049981740599062007
+:1026C0008874012011B0F0BD70B50D4606463F4933
+:1026D00000242046891BA04103D236A13C4802F0C9
+:1026E0002CFC3C490020491BA04103D231A13A48AF
+:1026F00002F023FC394A70190021821A8C4101D35F
+:102700003749401870BDF8B5401EC0B21421484387
+:1027100022494518687B062813D203007B441B79A5
+:10272000DB189F44020C0A080604002066E0B4206F
+:1027300010E073200EE032200CE00A200AE00620B0
+:1027400008E0FF201BA1E23002F0F7FB697B0020CC
+:10275000002953D0022140186968002440180C2138
+:1027600000026956000A00294ADBF1F79DFA174A70
+:1027700006460C27EF570021101AA14103D20DA1E4
+:10278000134802F0DAFB13490020C91BA0412CD2E8
+:1027900008A127E0E022010012010020B41C002063
+:1027A000FFFF3F00FFFFFF0014070000A41C0020F4
+:1027B000090200007372635C72656D2E6300000095
+:1027C000C7030000DF030000E5030000FF7F841E55
+:1027D000F50300000020A107F60300000080841E1E
+:1027E00000807BE1FB4802F0A8FBFB4AF0190021C6
+:1027F000821A8C4101D3F9494018F8BD0421AAE797
+:10280000F1F752FA0C21695600224018F449091ACE
+:10281000A241F2D24042F8BDF0B5064683B0F1487D
+:102820000190457A029534687068001B0702EE48F3
+:102830003F0A001B0090062D2DD01420294641434D
+:10284000EA480122081884464168E748920586460E
+:10285000081B904210D3631A93420DD30246704670
+:10286000724503D900984018401C05E073450ED905
+:10287000411A0819401C404200280CDA60460295B3
+:10288000857C0198C0790028D5D003B0F0BDD84927
+:10289000D84802F052FB0298854226D014214843C2
+:1028A000D2490123401802908068CF499B058C468D
+:1028B000011B8646994210D3221A9A420DD36346D1
+:1028C000614503D900997144491C06E019466245E7
+:1028D0002DD9091A0819401C4142002905DD02982A
+:1028E000B17A807B814200D37446062D15D0BF4952
+:1028F0001420454368184268121B1202120ABA4299
+:102900000BD2B27A837B9A4200D38468857C01988B
+:10291000C0790028B9D1062DEAD13068A042B4D0E0
+:10292000E0190002000A3460706003B0F0BDB049E5
+:10293000B04802F002FBD8E7F0B5AF49044648685A
+:1029400085B0C005C00D1CD0103840B200280CDA8C
+:102950000207120F083A920892005118C9698007BD
+:10296000C00EC1400806800F09E08108A34A890013
+:10297000891809688007C00EC1400806800F00282A
+:1029800008D000262078002806D0012804D0002096
+:1029900005B0F0BD0126F5E72079062813D2030023
+:1029A0007B441B79DB189F44020C0A0806040020B4
+:1029B00018E0B42010E073200EE032200CE00A2072
+:1029C0000AE0062008E0FF208949E23002F0B5FA6B
+:1029D00021790020002905D002214718814D002EC1
+:1029E00002D003E00421F8E70020E87102AA69465A
+:1029F000A068F1F763F9694608228A56E06801A9E0
+:102A00008018C01C01221F2801DA019209E003AAE4
+:102A1000F1F754F96846007B002802D00198401C69
+:102A2000019000990198401808300002000A0190B6
+:102A3000C81B0002000A00906079694688720098FD
+:102A40000390F1F7CAF8009A019B121A181A6C4900
+:102A500012020002120A000A8A4216D8884214D8CA
+:102A60006846FFF7D9FE00990398814205D0C8193E
+:102A70000002000AF1F718F9A0600120E9790029A5
+:102A800086D0002EB0D005B0F0BD0020F6E7F3B53B
+:102A90008FB05C480C460B9001F088F85A4A0F99A9
+:102AA000504E5518203D594F00280BD05848007DF6
+:102AB000002803D057A15A4802F03FFA2078012895
+:102AC0007DD05FE1787F0A280CD0787F397F401C69
+:102AD000884203D14FA1534802F02FFA20780128F1
+:102AE00004D00CE0387F0028F4D0F7E7E87F002816
+:102AF00003D048A14C4802F020FA0120E877787F03
+:102B00000F991422494D504340190174207802282E
+:102B100023D0787F142148434519207928726079A1
+:102B200068722A460C322946A068F1F7C7F80C20D3
+:102B300028560F2804DD1F3828732868401C286099
+:102B40000C22AA56281DE16802908818C01C1F2874
+:102B50003FDA029901200860FDE027494868C00576
+:102B6000C00D20D0103840B200280CDA0207120F36
+:102B7000083A920892005118C9698007C00EC140F6
+:102B80000806800F09E081081C4A89008918096835
+:102B90008007C00EC1400806800F002803D11DA188
+:102BA000234802F0CAF9787F1421484345190021CF
+:102BB000E0686A460591117303AA05A900E0D8E010
+:102BC000F1F77CF86A460C2010560F2832DD012000
+:102BD00031E0B3E0F60300000080841E00807BE15A
+:102BE000FF7F841E381D0020FFFFFF00B41C002063
+:102BF000B42701001407000000ED00E000E400E04D
+:102C0000FFFF3F00441D0020160100206C1C002027
+:102C10008C1C00207372635C72656D2E6300000073
+:102C200017050000F5040000FA040000AC1B0020AA
+:102C30000605000000200599401808900220A8729F
+:102C40002079287260796872A068291DC01C0391E0
+:102C50001F2801DA01200AE006AAF1F72FF86846DA
+:102C6000007E002804D0039803990068401C086087
+:102C7000287A062813D203007B441B79DB189F4473
+:102C8000020C0A08060400200FE0B4200DE07320B7
+:102C90000BE0322009E00A2007E0062005E0FF20D3
+:102CA000FD49E23002F049F900202179002943D0A2
+:102CB000022141180691686808314018089905906A
+:102CC00008180699401A0C900020F071F0F785FF63
+:102CD00004462860089820180002000AE860707A0C
+:102CE000062825D0707A14214843EC4940184068E2
+:102CF0000090059940180002000A0190687A694620
+:102D000088726846FFF788FD0098019A001B121B25
+:102D100000021202E24B000A120A0C99984207D8EC
+:102D20008A4205D80099069808180002000A28600F
+:102D3000F0790028C8D110E00421BAE704AA02996A
+:102D4000F0F7BCFF6846007C002804D00298029986
+:102D50000068401C08602078A872787F0A2806D096
+:102D6000787F401C78770B9800F038FF47E0002010
+:102D7000F8E7E87F002803D0CAA1CD4802F0DDF8CB
+:102D80000120E877CB490F9808742078022803D1F6
+:102D9000C4A1C94802F0D1F8C64D207928726079E3
+:102DA00068722A460C322946A068F0F787FF0C208B
+:102DB00028560F2804DD1F3828732868401C286017
+:102DC0000C22AA56281DE16802908818C01C1F28F2
+:102DD00003DA0299012008600CE003AA0299F0F7D7
+:102DE0006DFF6846007B002804D0029802990068B5
+:102DF000401C08602078A872AE4901200875797FD0
+:102E0000387F814223D0747A062C22D0F0F7E5FE79
+:102E100014214C43A1496218117C042917D00329BD
+:102E200015D0536892681B1A101A1B0200029C49A5
+:102E30001B0A000A082B0AD30A468B4207D8904285
+:102E400005D8787F397F884201D0F0F712FF11B0A2
+:102E5000F0BD787F397F8842F7D111B0F0BD10B551
+:102E60000020F0F718FE10BD10B50120F0F713FE9A
+:102E700010BDF1B5009802281FD0904C607A06284A
+:102E800003D188A18E4802F058F80026A6710125CA
+:102E9000E572607A03211422804F5043C0190174F7
+:102EA000F0F7ECFE009800280CD001282AD0032867
+:102EB0007CD0B5207BA1C00044E082480078EFF7C9
+:102EC00051FEF8BD8048007F002803D075A17F48DF
+:102ED00002F033F865717C4D00202E60F0F7EEFDB6
+:102EE000A968481C04D0012300221846F0F71CFEF4
+:102EF000607A617A401CC0B2142251437A58012191
+:102F00009047F8BD0120F0F7D9FD607900280DD079
+:102F10006D488068401C09D0607A617A401CC0B25C
+:102F2000142251437A5806219047F8BD6648007F25
+:102F300001280AD0022812D0032824D0042836D031
+:102F400058A1634801F0F9FFF8BD2079002803D0AB
+:102F50002671F0F798FEE5705B480677F8BD207A99
+:102F6000002804D1FEF770FAEFF75CFE2572607A54
+:102F7000617A401CC0B2142251437A580021904714
+:102F800051480677F8BD504F0123397B78680022FD
+:102F9000411A1846F0F7C8FD2079002803D02671A1
+:102FA000F0F771FEE57002203877F8BD1BE0464E61
+:102FB000217870680123411A00221846F0F7B4FD09
+:102FC000207A002804D1FEF73FFAEFF72BFE257296
+:102FD000607A617A401CC0B2142251437A580021B1
+:102FE00090473577F8BD607A617A401CC0B21422F0
+:102FF00051437A5805219047F8BD10B52F4C607A9F
+:10300000062803D127A1334801F097FF607A617A3F
+:10301000401CC0B214225143204A52580421904708
+:1030200010BDF0B583B006200290F0F7D6FD234C1A
+:103030000090617A28480190062920D0617A1420F6
+:10304000414316480918097C042918D0617A1422D2
+:1030500051430818007C03287BD00198009A03682C
+:1030600040689B1A801A1B0200020D491B0A000AC5
+:10307000082B6ED30A468B426BD8904269D812480F
+:103080008068401C03D007A1144801F056FF0020BF
+:103090006071607A062823E0142C0100B41C002023
+:1030A000FFFF3F007372635C72656D2E630000006A
+:1030B0001E0500008C1C002024050000381D002087
+:1030C0005505000010010020181D002061050000BA
+:1030D0009C050000AF050000281D0020EB05000046
+:1030E00007D16078002804D0FE48C178417081780B
+:1030F0000170607A062815D0607A1421FA4A484394
+:103100008018007C04280DD1607A0290617A012039
+:103110001423594389180874617A59438918897CA2
+:103120006172A072F14D687F297FF14F884233D0E0
+:10313000F04E287F142148438019007CC05D01288F
+:10314000287F07D048438019007CC05D02282FD01B
+:1031500044E001E2142148438019807A01280AD012
+:10316000287F0221142250438019007CC155287FFA
+:103170000A2808D009E0297F002014225143891928
+:10318000097CC8552AE0002001E0287F401C2877F0
+:10319000687F297F8842CCD1D74D287D00284CD02C
+:1031A000287CC15D012928D0C05D022830D03AE0DA
+:1031B000287F142148438019807A012803D0CFA1A9
+:1031C000D14801F0BAFE297F002014225143891909
+:1031D0008872297F51438919097CC855287F142199
+:1031E00048438219287F48438019017C0098FEF7E4
+:1031F000EBFF287F0A28C8D1C5E7A97A012904D0A6
+:103200000221C155002028750DE00021C1550AE0BA
+:10321000A87A012803D0B9A1BC4801F08EFE002095
+:10322000A872297CC855287D002806D0297CB24A7E
+:103230000098FEF7C9FF00202875029806281ED0C6
+:1032400014214843A8494018017C012917D10721BE
+:10325000AF4D0174287B0A283CD0287BE97A401CBA
+:10326000884203D1A5A1AB4801F067FE297B0298F3
+:103270006854287B0A2831D0287B401C2873607A48
+:1032800006287DD0A07A00287BD00020A072617A29
+:10329000142041439448A04B0A18566891681D4673
+:1032A000D2687C35DE67AA6069609C4D697E002922
+:1032B00016D00226617A14228B4851430818407BAD
+:1032C00006281BD203007B441B79DB189F440A1499
+:1032D00012100E0CE87A0028C4D0C7E70020CDE712
+:1032E0000426E7E700200FE0B4200DE073200BE098
+:1032F000322009E00A2007E0062005E0FF207FA138
+:10330000E23001F01AFE00202873697E022901D004
+:10331000012910D12969009A09188A1A1202120A81
+:103320003A2A08D90320687632390802000A28614F
+:10333000322028730AE0322808D2207A00280ED1E1
+:10334000FEF782F8EFF76EFC012007E0207A0028F4
+:1033500005D0FEF798F8EFF78EFC00202072614947
+:103360000822487820700978012901D0032906D164
+:1033700001212171297B884201D9421A083201E0DA
+:1033800091E0A1E0A378002B00D0921C21790029C4
+:1033900001D1002B5DD09446614A00990092019AB8
+:1033A000176852687F1A511A3F0209023F0A090A38
+:1033B000BC451BD85A4A974218D8009A914215D852
+:1033C000297B884223D92B69421A9A1A1202120ABF
+:1033D000101880190002000A2A616860002914D0C0
+:1033E000032028770006000E3ED14CE0002020711B
+:1033F000A070297B002925D0286940188019000277
+:10340000000A6860022028772EE00120E9E7814267
+:103410000BD92A69511889190902090A696000281B
+:1034200001D00420DDE70220DBE7002B03D133A12C
+:103430003C4801F082FD286980190002000A68609A
+:10344000002004E0296989190902090A69602877BE
+:1034500019E0287B00280FD029690818801900027C
+:10346000000A686002202877286901238119002258
+:103470001846F0F759FB09E0286980190002000A94
+:103480006860002028770120F0F718FB607A14218B
+:10349000484315490C2240188256012300206968D0
+:1034A000F0F742FB10E00120F0F708FB0020F0F7F6
+:1034B00005FBF0F7E9FA207A002805D0FDF7E3FFD5
+:1034C000EFF7D9FB00202072A078002804D0F0F795
+:1034D000DAFB0020E070A0706078002827D0014857
+:1034E000C17821E012010020B41C00206C1C0020D7
+:1034F00015010020AC1B00208C1C00207372635C43
+:1035000072656D2E630000000D06000029060000A4
+:10351000A41C00203B060000AC1C0020181D00204D
+:10352000FFFF3F008D060000417081780170207917
+:10353000002806D00020CE49E0700978002900D18B
+:103540002071CC48017BC07A814203D0CA484078C0
+:10355000EFF708FB0120E07103B0F0BDF0B5C74CF8
+:103560000746607A83B0062804D16F20C4A1000109
+:1035700001F0E3FC607A1421C44E48438019007CBA
+:10358000032803D0BEA1C24801F0D7FCC14DA868F2
+:10359000401C03D0BAA1C04801F0CFFC607A1421CE
+:1035A000484381190C20085600216A460091117188
+:1035B000C01901AA6946F0F781FB6A46042010563B
+:1035C0000F2801DD012000E0002000994018696803
+:1035D00040180102090AA9606079002804D001237B
+:1035E00000221846F0F7A0FA03B0F0BD70B5AC4C5D
+:1035F000AA4A0B1AA34214D3451AA54211D39342E7
+:1036000003D9101A43185B1C0BE0954204D9511AD8
+:103610000818401C434204E099A1A24801F08DFC27
+:103620000023184670BD10B5014601230022022078
+:10363000F0F77AFA10BD10B50220F0F73FFA10BD8E
+:1036400010B5F0F7CAFA10BDF0B58C4D0446E87A13
+:1036500083B0002803D18AA1934801F06EFC642C4A
+:103660004DD3924A00210846121B884147D3904807
+:10367000417F007F814242D18E48007D00283ED1AB
+:10368000687A1421814F4843824EC519306801AAD7
+:1036900000196946F0F712FB694604200856002815
+:1036A00002DD0098401C0090A96800986B680A1819
+:1036B000D21A1202804B120A9A4220D8AA7C062AF9
+:1036C00008D014235A43D2195268511A0902090A20
+:1036D000814214D3B068401C05D00120F0F7EEF908
+:1036E0000020C043B060306800193060A8680099BD
+:1036F00040180002000A7061012003B0F0BD0020F4
+:1037000003B0F0BDF8B50646401EC4B214205F49B0
+:1037100060434518287C002804D1772058A1000177
+:1037200001F00BFC6248017F407F81420CD0634A6C
+:1037300014234B439B181B7CB3420CD00A290CD09A
+:10374000491CC9B28142F3D15A48017D002961D098
+:10375000007CB0425ED10020F8BD0021F1E70529D0
+:1037600003D0062901D0072928D101212974C17A63
+:103770000023027B8A4221D00246565CA64201D138
+:10378000012301E0002B04D00A2911D04E1C965DC4
+:1037900056540A290ED0491C167BC9B28E42ECD170
+:1037A000002B0BD0117B002906D0117B491E04E0B1
+:1037B0000026ECE70021EFE70A211173697C00295C
+:1037C0002AD06F74C17A0023027B8A4224D0425CE3
+:1037D000A24201D1012301E0002B04D00A2912D01A
+:1037E0004A1C825C42540A290FD0491C027BC9B290
+:1037F0008A42ECD1002B0FD0027B0146002A06D072
+:103800000A7B521E04E00022EBE70021EEE70A22C9
+:103810000A7301E017480027297C01299FD16A7C9F
+:10382000002A9CD10120F8BD70B505461420174A26
+:103830000521684380180F4C0174207B0A2811D0A1
+:10384000207BE17A401C884203D10DA11C4801F085
+:1038500074FB207B2554207B0A2807D0207B401C4A
+:10386000207370BDE07A0028EFD0F2E70020F7E780
+:1038700012010020A41C002010010020381D00208F
+:103880007372635C72656D2E63000000B41C0020CF
+:10389000F1060000181D0020F2060000FF7F841EC4
+:1038A0000020A1071407000033070000FF1FA10735
+:1038B0006C1C00208C1C0020FFFF3F00AC1B002074
+:1038C0000902000010B501462022094801F099F9CB
+:1038D00007490020C877084610BD06490120486105
+:1038E0000548064A0168914201D1002101607047F4
+:1038F000481D0020000500401C010020BEBAFECA81
+:10390000064A10705170704704481C2201784171BA
+:103910004270017070477047704770472001002067
+:1039200030B50346002002460DE09C5C2546303D44
+:103930000A2D02D30020C04330BD0A256843303829
+:103940002018521CD2B28A42EFD330BD70B50D465A
+:10395000144608E00A2101F0CEF92A193031203A44
+:10396000641ED177E4B2002CF4D170BD10B50023F1
+:1039700010E0040A00020443A0B2CC5C44402006DC
+:10398000000F60400407240C44402006C00C604037
+:103990005B1C9BB29342ECD310BD10B520380C4693
+:1039A000030001F0BBFB33E0DBE41B1F23272C31BA
+:1039B000373C41474D5054585C606D71656974786F
+:1039C0007C8084888C9094989C9FA2A6AAAEB2B862
+:1039D000BCC0C5CACFE9F0F3D3D7F800206800F027
+:1039E000DDF8D6E0206800F0E1F8D2E0206800F0D1
+:1039F000F5F8CEE0207840B200F092FAC9E02078E5
+:103A000040B200F0B0FAC4E02078616840B200F043
+:103A1000C3FABEE0207840B200F0D3FAB9E02078D3
+:103A200040B200F0DEFAB4E02078217940B200F034
+:103A3000E9FAAEE02078616840B200F013FBA8E03C
+:103A400000F01FFBA5E0206800F023FBA1E0207838
+:103A500000F038FB9DE02068FDF7F5FD99E0206857
+:103A6000FDF7F5FD95E021792068FDF7F7FD90E081
+:103A70002068FDF73FFC8CE02068FDF740FC88E003
+:103A80002078FDF740FC84E0FDF74EFC81E02078D3
+:103A9000FDF750FC7DE02078FDF762FC79E02068BE
+:103AA000FDF77BFC75E02068FDF77DFC71E0206888
+:103AB000FDF77FFC6DE02068FDF780FC69E0206881
+:103AC000FDF782FC65E02068FDF784FC61E020687A
+:103AD000FDF785FC5DE00846EDF738FB59E0EFF7B0
+:103AE000B4F856E0EFF7E1F853E02068EFF7E9F8B3
+:103AF0004FE0206800F080F84BE0206800F082F88A
+:103B000047E0206800F083F843E02078A26861680D
+:103B100000F082F83DE0207800F089F839E0207864
+:103B200000F091F835E02078616800F098F830E016
+:103B30002078616800F09FF82BE02179207800F070
+:103B4000D5FB26E02068FDF778FE22E02068FEF72E
+:103B50004DF91EE02068FEF731F91AE0204607C84B
+:103B600000F0B9FC15E0206800F00CFD11E0616880
+:103B7000206800F037FD0CE0206800F029FF08E025
+:103B800009E003E0FFE700F03BFF02E0206800F0FF
+:103B900073FF206010BD0120086010BD002101707E
+:103BA000084670470146002008707047EFF3108107
+:103BB000C907C90F72B60278012A01D0012200E0BC
+:103BC000002201230370002900D162B6002A01D02F
+:103BD00000207047012040037047E7E7EFF31081B2
+:103BE000C907C90F72B600220270002900D162B65F
+:103BF00000207047F2E7000038490968C9B2016047
+:103C0000002070473549C0B24860002070473349F2
+:103C1000C0B2886000207047082801D33048704740
+:103C2000C3002E4818180161426100207047022825
+:103C300002D32B48401C70472A4A0121C00080183B
+:103C4000016000207047022802D32548401C7047BD
+:103C5000244A0121C00080184160002070470228DA
+:103C600002D31F48401C70471F4A8000C9B2801809
+:103C7000016000207047022802D31948401C704799
+:103C8000194A800080180068C0B2086000207047A0
+:103C900010B5FF20114AC043906008200021C300E6
+:103CA0009B1819615961401C1028F8D300200E4A56
+:103CB00005E0022803D383009B18196004E0830009
+:103CC0009B181C68E4B21C60401C0428F1D310BD92
+:103CD000FF200249C04388607047000000F50140A2
+:103CE0000820000000F0014000F8014010B572B655
+:103CF00000F0DEF800280BD0EDF7D2FAFEF783F9DA
+:103D000000F0BBFA6F490020C86288626E49086003
+:103D100062B6002010BDF3B5002501200007C06A7F
+:103D200081B0C0430006000E04D168480068401C02
+:103D300000D1012572B600F0BBF8002801D062B6B0
+:103D400087E0EDF719FAEDF7AFFA614C614A00210F
+:103D50002368CB40DB071FD00346CB40DB0718D1DD
+:103D60004BB2002B07DA1E07360F083EB608B60026
+:103D7000B618F66904E09E08574FB600F619366883
+:103D80009B07DB0EDE4033069B0F012B04D0032B79
+:103D900002D062B65148FEBD491C2029D8D3019CEF
+:103DA00001204F49230001F0B9F9142224242424CE
+:103DB000242424240B0D1012142016181A1C1E2F54
+:103DC000002400E00124C86314E00224FBE703247C
+:103DD000F9E70424F7E70824F5E70924F3E70A24C0
+:103DE000F1E70B24EFE70C24EDE70524EBE70724CC
+:103DF00000E00624D06901210002000AC907084337
+:103E0000D061002D04D009E062B601200003FEBDA0
+:103E10002C4D3448E862EDF747FAA8622A49324847
+:103E20000860324902980860EDF73EFA214600F03A
+:103E30000BFAFEF7AEF800F00DFC00F087FA0198DF
+:103E4000EDF7FCF9040062B603D0FFF74FFF204600
+:103E5000FEBD0020FEBD10B5044600F029F8002884
+:103E600000D001202070002010BD214908600020F2
+:103E7000704710B50C46102808D011280BD0122816
+:103E80000CD013280ED00120086010BD6168206896
+:103E9000FFF741FF0AE0FFF729FF07E02068FFF77F
+:103EA000DAFF03E01249206808600020206010BD9E
+:103EB00005480D490068884201D101207047002063
+:103EC00070470000000500401C0100200010001099
+:103ED00000E100E000ED00E000E400E0011000007F
+:103EE0004000004000200000BEBAFECA28010020A9
+:103EF000040000208107C90E002808DA0007000F1F
+:103F000008388008814A80008018C06904E0800871
+:103F10007F4A800080180068C8400006800F704704
+:103F200010B5044600F0DBF8002813D02046FFF758
+:103F3000E1FFC0B200F0E1F800280DD07549E206BB
+:103F40000B78D20E01209040002B08D04A68104315
+:103F5000486006E0704810BD6F48401C10BD6F49B6
+:103F60000860002010BD10B5044600F0B8F8002825
+:103F70000BD06849E2060B78D20E01209040002B4E
+:103F800005D04A6882434A6004E0634810BD634933
+:103F900080310860002010BD70B50D46044600F069
+:103FA0009EF800280BD05E480068E206D20E012180
+:103FB0009140084000D001202860002070BD564884
+:103FC00070BD10B5044600F08AF8002807D0E1065D
+:103FD000C90E0120884052490860002010BD4E489B
+:103FE00010BD10B5044600F07AF8002808D0E106AC
+:103FF000C90E012088404A4980310860002010BD68
+:10400000454810BD70B50D46044600F068F800281C
+:1040100019D0284600F071F8002816D0A007C20E6B
+:10402000FF209040A907090E9140002C10DA2207CA
+:10403000120F083A9308354A9B009B18DA698243AD
+:104040000A43DA610CE0344870BD3348401C70BD4F
+:10405000A3082F4A9B009B181A6882430A431A60E0
+:10406000002070BD70B50C46054600F038F80028F9
+:1040700005D02846FFF73EFF2070002070BD26487F
+:1040800070BDBFF34F8F21492648C860BFF34F8FE3
+:10409000FEE770B51F4C05462178012000290ED19E
+:1040A000207072B600F0F8F81C4E803631688143FB
+:1040B000616000F0F1F8C043306062B60020287003
+:1040C000002070BD13490A78002A06D0002804D1C8
+:1040D000124A48681060002008700020704710B530
+:1040E0000446202805DA00F0D7F80121A140084253
+:1040F00001D0002010BD012010BD012803D00328ED
+:1041000001D00020704701207047000000ED00E062
+:1041100000E400E02C0100200120000000E100E0AC
+:1041200000E200E00400FA05F8B504468007002527
+:104130000126002804DA5A48C563C6630220844376
+:10414000E00404D55748C563C66380148443600007
+:1041500003D55548456080058443E00504D55348A0
+:10416000C563C66380158443A00404D55048C56365
+:10417000C6634014844360042704C00FF90F8842CB
+:1041800003D04CA1612000F0D8FEB80F0AD04E49F0
+:10419000CD634E48C563C563CE63C663C663032063
+:1041A0008003844320050AD5494FFD632F20ECF797
+:1041B000FBFFFE632F20ECF7F7FFF8148443002C7D
+:1041C00003DAFFF765FD640064084248044203D047
+:1041D00038A1902000F0B1FEF8BDF0B500210A46EC
+:1041E000FF230446CC40E4072AD04CB2E606F60E84
+:1041F0000125B540384E3560384E3560002C11DA57
+:1042000025072D0F083DAE08354DB6007619F56926
+:10421000A407E70E1C46BC40A5431446BC402543FA
+:10422000F5610DE0A6082F4DB60076193568A40794
+:10423000E70E1C46BC40A5431446BC4025433560F0
+:10424000491C2029CDD3F0BD70B5274C0D46206008
+:10425000FFF76AFF2068FFF7C0FF2846EEF7BEFDB4
+:10426000FDF7D6FAFDF782F9FFF712FDFDF7D5F855
+:10427000EEF742FC00F06AF870BD10B51A4C2068E9
+:10428000FFF752FF2068FFF7A8FFFFF701FDEEF7E9
+:104290002AFE0020206010BD13480068704700000F
+:1042A000C01F0040C0CF004000E50140C08F00406B
+:1042B000C0DF00407372635C736F635F636F6E6631
+:1042C00069672E6300000000C0EF0040C0FF00409F
+:1042D000C0BF0040FEFF0FFC80E100E080E200E094
+:1042E00000ED00E000E400E03401002070B500249F
+:1042F00002460D4620462146002A1ED0012A04D03F
+:10430000022A04D0032A1ED103E0012002E0022089
+:1043100013E003202B0000F001FF07160507090B2F
+:104320000D0F1600012108E0022106E0032104E040
+:10433000042102E0052100E00621FDF7D9FE002856
+:1043400001D0204670BD0724FBE70000B1480021E2
+:1043500001708170704770B5AF4D01236B60AF4B3A
+:104360001C68002CFCD0002407E00E6806601E6864
+:10437000002EFCD0001D091D641C9442F5D30020C2
+:10438000686018680028FCD070BD70B5A14C0D465F
+:104390006178884203D0A2A16C2000F0CEFD2B00F2
+:1043A00000F0BCFE094F0625254F4F4F4F464F00EA
+:1043B0002078022803D09AA1702000F0BEFD0320CF
+:1043C0002070A078022802D0012804D008E0A0685C
+:1043D00000F0CEFB04E02269E168A068FFF7BBFFB4
+:1043E0000020A070FDF724FE0420207070BDFDF7B2
+:1043F000D4FE01466068FFF7F9F8054620780228E8
+:1044000003D087A1842000F098FD894A89498A4811
+:10441000954206D8401BC86086496078FEF737FB96
+:1044200070BD854202D802224A71F3E7032003E0FF
+:10443000A0780028FAD10220FDF704FD00F0E0F892
+:1044400070BD77A1AD2000F078FD70BD70B5054658
+:10445000FDF7A3FE6F4C60602078012803D070A1A7
+:10446000B42000F06AFD73490220087000220A712E
+:104470008D6003224A71704ACA6020706078FEF72E
+:1044800006FB70BD10B5634CA078002802D12078DF
+:10449000002801D0112010BD6848FDF710FE6070A3
+:1044A0006078002803D001202070002010BD032078
+:1044B00010BD10B50124020B64040121604BA04221
+:1044C00002D29140186802E0203A586891400840B2
+:1044D00000D0012010BDF8B50E46910005464F19D9
+:1044E00014463F1F009100F054FB00998002891987
+:1044F000091FB14201D2012200E00022002C03D0AA
+:10450000FF2101318C4201D90920F8BD4D498D426E
+:1045100019D3AF4217D3854205D2874203D228462A
+:104520003043800701D01020F8BD8E420BD3002A03
+:1045300009D12846FFF7BDFF002804D13846FFF710
+:10454000B8FF002801D00F20F8BD3F483F49006860
+:10455000884205D0224631462846FFF7FCFE0FE090
+:10456000FFF790FF0028EFD12A480121C66085603F
+:10457000046181702046312148431430FFF766FF03
+:104580000020F8BD10B504462E48800A84420BD3A3
+:1045900000F0FFFAA04201D8102010BDA00204468E
+:1045A000FFF787FF002801D00F2010BD26482749BC
+:1045B0000068884203D0204600F0DAFA0AE0FFF7EC
+:1045C00061FF0028F1D113480221846081702048E6
+:1045D000FFF73CFF002010BD1A48010B0120884066
+:1045E000401E704700B50B460246FFF7F5FF10422C
+:1045F00001D00F2000BD124802604360002000BDC2
+:1046000010B5044C6078FDF7AEFD00202070A0705E
+:1046100010BD00003801002000E5014000E4014029
+:104620007372635C736F635F666C6173682E6300A3
+:1046300030750000681D0020D0FB01008B43010095
+:1046400000060040006001001C010020BEBAFECA46
+:1046500010540000F748052181700021017041705D
+:10466000C1708160704710B5F3490A78022A07D0FB
+:10467000CA681018C860C8689638FEF76FFF10BD8A
+:104680008A68101888608868F6E70378EB49EC4A76
+:10469000002B02D0012B10D014E00379002B01D0A5
+:1046A000012B0FD14379002B01D0012B0AD1836854
+:1046B000643B8B4206D2C06810E00379002B03D024
+:1046C000012B01D0002070474379002B01D0012B32
+:1046D000F8D1C368643B8B42F4D280689042F1D831
+:1046E00001207047F8B504460226FEF7BDFB0068BE
+:1046F000002803D0D3A1BE2000F01FFC0127CD4D20
+:10470000002C08D02078002817D0012805D00228D6
+:1047100011D0032813D02F710DE06068C82808D38A
+:10472000FEF792FF002804D06068FFF79CFF012687
+:1047300003E0002601E000F0F9F93046F8BD2878E2
+:104740000028F8D16068FFF7A0FF0028E3D0606878
+:104750000078002826D0A878042803D0B9A1F82032
+:1047600000F0EBFBB44F002038706068007901283E
+:1047700000D00020387160684079002837D00320CD
+:10478000787160688168E868FDF79EFFB8606068CE
+:10479000C0689630F8600320A870A749E878FEF753
+:1047A00076F9C8E7A44802210170616809790129F6
+:1047B00019D00021017161684979002915D00321C0
+:1047C000417161688968963181606168C968C160BA
+:1047D000C068984C14346060FDF7DFFC20606F7097
+:1047E0000220A870A7E70321E4E70221E8E70220FE
+:1047F000C6E7F8B58F4C0D46E178884204D0FF201B
+:1048000090A11A3000F099FB28468A4F0025012616
+:104810001437030000F082FC090612375A7C8D978A
+:10482000C4A0C400A078032807D0A078022804D030
+:10483000FF2084A11E3000F080FBF8BDA078032883
+:1048400007D0A078022804D0FF207EA1223000F0FB
+:1048500074FB0420A07025712078002810D1FFF788
+:1048600002FFE078FDF74FFFE0607D49886A7D4AEE
+:10487000024022617B4AD24310408862002050E00F
+:1048800000F054F9F8BDA078032807D0A0780228DA
+:1048900004D0FF206BA1453000F04FFB20780028AA
+:1048A00002D000F04FF9F8BDA07803281FD10420F2
+:1048B0002AE0091A6048C1600146E078FEF7E7F88F
+:1048C000F8BD0420FDF7BEFAA570F8BDA078032856
+:1048D00007D0A078022804D0FF205AA1663000F04B
+:1048E0002CFB20780028DCD1A07803280BD0FDF722
+:1048F00054FC01463868FEF779FE0028E1DB796850
+:104900008142DEDBD5E70520FDF79CFAA670F8BDF5
+:10491000A078042804D0FF204AA1873000F00DFBC6
+:104920000220A1688847FFF7DDFEFF260546C03656
+:1049300042E0A078042804D0FF2042A18C3000F08F
+:10494000FCFA0120EDE7A078042899D0FF203DA1D2
+:10495000913000F0F2FA93E7A07804280AD060784A
+:10496000002802D0A078022804D0FF2035A196307C
+:1049700000F0E3FA2078002893D12079002804D0B1
+:104980000620FDF75FFA2571C0E76078002805D0A2
+:104990002949E078FEF77BF86570F8BD0720B3E79A
+:1049A000FF2028A1B13046E7002D0AD0012D06D006
+:1049B00024A1304600F0C1FA022DF5D1F8BD042043
+:1049C00000E00320A1688847FFF78CFE0546F3E767
+:1049D00070B5050005D0174CA078052803D011202C
+:1049E00070BD102070BD2048FDF769FBE070E078D5
+:1049F000002803D0A5600020A07070BD032070BD0A
+:104A000010B50C480178002901D0112010BD817823
+:104A100005292BD0817801292AD08178002927D037
+:104A2000012101708178012922D0807800281FD0CF
+:104A300020E000004C010020781D00203D86010090
+:104A4000FF1FA1077372635C736F635F72616469B8
+:104A50006F5F74696D65736C6F742E630000000086
+:104A60000005004002810080F34701000F2010BDC7
+:104A700000F068F8002010BDF8B5394E0446B07853
+:104A8000002801D001280DD1002C0DD02046FFF7C1
+:104A9000FCFD00280AD02078324D002808D0B078DC
+:104AA000012823D00F20F8BD1020F8BD0720F8BD45
+:104AB00002272F702079012814D0002028716079F6
+:104AC000002811D003206871A0689630A860E068C3
+:104AD000E860E868224C14346060FDF75EFB2060FB
+:104AE000B77019E00320E9E70220ECE70020287006
+:104AF0002079012816D0002028716079002813D071
+:104B000003206871A168F068FDF7DEFDA860E06829
+:104B10009630E8600320B0701249F078FDF7B7FFD7
+:104B20000020F8BD0320E7E70220EAE710B50E48B1
+:104B3000816A0E4A11400A4A126911438162FDF7E7
+:104B400077FA10BD10B5064CE078FDF70CFB082095
+:104B5000FDF778F90520A07000202070607010BD6E
+:104B60004C010020781D002000050040FD7EFF7FE5
+:104B70000A4A022151600A490B68002BFCD0906060
+:104B800008680028FCD00020506008680028FCD08D
+:104B900070470120000740697047000000E50140B0
+:104BA00000E4014070477047034610B50B439B0774
+:104BB0000FD1042A0DD308C810C9121FA342F8D080
+:104BC00018BA21BA884201D9012010BD0020C04383
+:104BD00010BD002A03D0D30703D0521C07E00020E9
+:104BE00010BD03780C78401C491C1B1B07D10378AF
+:104BF0000C78401C491C1B1B01D1921EF1D1184698
+:104C000010BDF8B5042A2CD3830712D00B78491CA9
+:104C10000370401C521E83070BD00B78491C037095
+:104C2000401C521E830704D00B78491C0370401CA3
+:104C3000521E8B079B0F05D0C91ADF002023DE1BF5
+:104C400008C90AE0ECF7C0FAF8BD1D4608C9FD40E6
+:104C50001C46B4402C4310C0121F042AF5D2F3089E
+:104C6000C91A521EF0D40B78491C0370401C521E06
+:104C7000EAD40B78491C0370401C521EE4D4097816
+:104C80000170F8BD01E004C0091F0429FBD28B07A5
+:104C900001D50280801CC90700D00270704700292E
+:104CA0000BD0C30702D00270401C491E022904D356
+:104CB000830702D50280801C891EE3E70022EEE70D
+:104CC0000022DFE70378C2781946437812061B02F8
+:104CD00019438378C0781B04194311430902090A58
+:104CE000000608437047020A08704A70020C8A7076
+:104CF000020ECA707047002203098B4273D3030A65
+:104D00008B4258D3030B8B423CD3030C8B4221D3F1
+:104D100012E003460B437FD4002243088B4274D336
+:104D200003098B425FD3030A8B4244D3030B8B42AC
+:104D300028D3030C8B420DD3FF22090212BA030CB5
+:104D40008B4202D31212090265D0030B8B4219D396
+:104D500000E0090AC30B8B4201D3CB03C01A5241B6
+:104D6000830B8B4201D38B03C01A5241430B8B42FE
+:104D700001D34B03C01A5241030B8B4201D30B03E7
+:104D8000C01A5241C30A8B4201D3CB02C01A52410E
+:104D9000830A8B4201D38B02C01A5241430A8B42D1
+:104DA00001D34B02C01A5241030A8B4201D30B02BA
+:104DB000C01A5241CDD2C3098B4201D3CB01C01AD4
+:104DC000524183098B4201D38B01C01A52414309DE
+:104DD0008B4201D34B01C01A524103098B4201D3CC
+:104DE0000B01C01A5241C3088B4201D3CB00C01A39
+:104DF000524183088B4201D38B00C01A52414308B1
+:104E00008B4201D34B00C01A5241411A00D20146D5
+:104E10005241104670475DE0CA0F00D0494203106E
+:104E200000D34042534000229C4603098B422DD3BD
+:104E3000030A8B4212D3FC22890112BA030A8B4265
+:104E40000CD3890192118B4208D3890192118B42B4
+:104E500004D389013AD0921100E08909C3098B4239
+:104E600001D3CB01C01A524183098B4201D38B017C
+:104E7000C01A524143098B4201D34B01C01A52411F
+:104E800003098B4201D30B01C01A5241C3088B4264
+:104E900001D3CB00C01A524183088B4201D38B004F
+:104EA000C01A5241D9D243088B4201D34B00C01AD9
+:104EB0005241411A00D20146634652415B101046EE
+:104EC00001D34042002B00D54942704763465B1036
+:104ED00000D3404201B50020C046C04602BD704725
+:104EE0007047704710B500F059F810BD30B58C18F8
+:104EF0000278401C13071B0F01D10378401C1209D4
+:104F000006D10278401C03E00578401C0D70491C56
+:104F10005B1EF9D101E00B70491C521EFBD1A1426E
+:104F2000E6D3002030BD000001231B68134B18603E
+:104F3000134B1960134B1A607047134A134B1360DD
+:104F40007246053AF0E7114A0F4B1B689A420ED1A0
+:104F50000D4B0020186001980D4B04B598470CBC10
+:104F60009E460246029800990A4B1B68184706980D
+:104F70000599094B1B68DB68184700007001002089
+:104F8000740100207801002068010020EFBEADDE32
+:104F9000C538010028010020040000201D481E49DA
+:104FA0007047FFF7FBFFECF7C9F800BD01200007D1
+:104FB000C06AC0B2FF2804D118481949096888425C
+:104FC00002D01848184901601848194909688842F0
+:104FD00003D1184A13605B68184700BD20BFFDE786
+:104FE00012481349096888420ED1134B18680B49BF
+:104FF0008842F3D080F308881049884204DD1048C5
+:10500000026802210A4302600E4880470E4880472A
+:105010000E480047881D0020881D0020FFFFFFFF6D
+:10502000001000102C0500400800000000100000D7
+:10503000000000200400002000600100002000208B
+:1050400024050040DB380100AD4F0100294F01006D
+:105050001348704502D1EFF3098101E0EFF30881B5
+:10506000886902380078102814DB202810DB2328F8
+:105070000BDB0C4A12680C4B9A4203D1602804DB0C
+:105080000A4A1047022008607047094A104700008A
+:10509000084A1047084A12682C321268104700006C
+:1050A000FDFFFFFF1C010020BEBAFECAAD120000CA
+:1050B0009B390100733E0100040000200D4B0E4996
+:1050C00008470E4B0C4908470D4B0B4908470D4B41
+:1050D000094908470C4B084908470C4B0649084743
+:1050E0000B4B054908470B4B034908470A4B02493C
+:1050F00008470000FD2D00008D3D0000B52F000089
+:10510000333C0000E13B000095390000B91200007B
+:1051100063170000F53C0000A32B000030B4744678
+:10512000641E2578641CAB4200D21D46635D5B00A3
+:10513000E31830BC1847000002490020C86120393C
+:1051400008727047E003002000020207FFFFFFFF24
+:105150000000FFFF0102040810204080555555D67D
+:10516000BE898E00F401FA00960064004B00320004
+:105170001E001400010003000000010000000000F8
+:105180000000000000000000000000008700000098
+:10519000000000000000000000000000000002030A
+:1051A000040500000E0F0000D85101000800002087
+:1051B0001000000004110000E85101001800002058
+:1051C00064010000EC4E01000C5201007C01002043
+:1051D0000C1C000020110000024902220868104245
+:1051E000FCD0704700E200E0E1078F56FF9900CD48
+:1051F00029022B013601000100EC3720FB349B5FB4
+:0C5200008074800010027001E42D4F014A
+:00000001FF