From 10e32cc38d0824906b2699f1d853f6a06b182428 Mon Sep 17 00:00:00 2001 From: Andrey Perminov Date: Tue, 5 May 2020 17:54:16 -0700 Subject: [PATCH] New HCP protocol implementation HCP protocol implementation now in hcp_tiny.c/hcp_tiny.h Removed old hcp folder Using FPC_BEP_RESULT_ codes only Change-Id: I82ba7fdfbcc6aa01889b81974d4003def3338e65 --- .vscode/c_cpp_properties.json | 3 +- .vscode/tasks.json | 3 +- BMLite_example/Makefile | 6 +- BMLite_example/inc/bep_host_if.h | 250 -- BMLite_example/inc/bmlite_if.h | 347 +++ BMLite_example/inc/bmlite_if_callbacks.h | 92 + BMLite_example/inc/com_app_cleartext.h | 59 - BMLite_example/inc/com_common.h | 98 - {hcp => BMLite_example}/inc/fpc_hcp_common.h | 0 BMLite_example/inc/hcp_tiny.h | 63 + BMLite_example/inc/platform.h | 14 +- BMLite_example/src/bep_host_if.c | 534 ---- BMLite_example/src/bmlite_if.c | 308 +++ BMLite_example/src/com_app_cleartext.c | 66 - BMLite_example/src/com_common.c | 193 -- BMLite_example/src/hcp_tiny.c | 291 ++ BMLite_example/src/main.c | 37 +- BMLite_example/src/platform.c | 16 +- HAL_Driver/src/hal_timebase.c | 6 + README.md | 4 +- hcp/LICENSE.txt | 174 -- hcp/doc/img/hcp.eps | 1733 ------------ hcp/doc/img/hcp.pdf | Bin 179702 -> 0 bytes hcp/doc/img/hcp.svg | 247 -- hcp/doc/img/stack.eps | 1019 ------- hcp/doc/img/stack.pdf | Bin 169928 -> 0 bytes hcp/doc/img/stack.svg | 236 -- hcp/doc/md/1_stack.md | 49 - hcp/doc/md/2_hcpframe.md | 28 - hcp/doc/md/4_biometrics.md | 89 - hcp/doc/md/5_image.md | 36 - hcp/doc/md/6_template.md | 40 - hcp/doc/md/7_storage.md | 69 - hcp/doc/md/8_sensor.md | 28 - hcp/doc/md/9_device.md | 10 - hcp/doxygen/HCP.html | 13 - hcp/doxygen/HCP.pdf | Bin 382168 -> 0 bytes hcp/doxygen/html/1__stack_8md.html | 86 - hcp/doxygen/html/1__stack_8md_source.html | 84 - hcp/doxygen/html/2__hcpframe_8md.html | 86 - hcp/doxygen/html/2__hcpframe_8md_source.html | 84 - hcp/doxygen/html/4__biometrics_8md.html | 86 - .../html/4__biometrics_8md_source.html | 84 - hcp/doxygen/html/5__image_8md.html | 86 - hcp/doxygen/html/5__image_8md_source.html | 84 - hcp/doxygen/html/6__template_8md.html | 86 - hcp/doxygen/html/6__template_8md_source.html | 84 - hcp/doxygen/html/7__storage_8md.html | 86 - hcp/doxygen/html/7__storage_8md_source.html | 84 - hcp/doxygen/html/8__sensor_8md.html | 86 - hcp/doxygen/html/8__sensor_8md_source.html | 84 - hcp/doxygen/html/9__device_8md.html | 86 - hcp/doxygen/html/9__device_8md_source.html | 84 - hcp/doxygen/html/annotated.html | 94 - hcp/doxygen/html/annotated_dup.js | 9 - hcp/doxygen/html/arrowdown.png | Bin 246 -> 0 bytes hcp/doxygen/html/arrowright.png | Bin 229 -> 0 bytes hcp/doxygen/html/bc_s.png | Bin 676 -> 0 bytes hcp/doxygen/html/bdwn.png | Bin 147 -> 0 bytes hcp/doxygen/html/bio.html | 90 - hcp/doxygen/html/classes.html | 93 - hcp/doxygen/html/closed.png | Bin 132 -> 0 bytes hcp/doxygen/html/device.html | 81 - hcp/doxygen/html/dir_000001_000000.html | 74 - .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 103 - .../dir_68267d1309a1af8e8297ef4c3efbcdba.js | 6 - ...r_68267d1309a1af8e8297ef4c3efbcdba_dep.map | 5 - ...r_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 | 1 - ...r_68267d1309a1af8e8297ef4c3efbcdba_dep.svg | 38 - .../dir_bfccd401955b95cf8c75461437045ac0.html | 109 - .../dir_bfccd401955b95cf8c75461437045ac0.js | 10 - hcp/doxygen/html/doc.png | Bin 746 -> 0 bytes hcp/doxygen/html/doxygen.css | 1475 ---------- hcp/doxygen/html/doxygen.png | Bin 3779 -> 0 bytes hcp/doxygen/html/dynsections.js | 104 - hcp/doxygen/html/files.html | 99 - hcp/doxygen/html/files.js | 5 - hcp/doxygen/html/folderclosed.png | Bin 616 -> 0 bytes hcp/doxygen/html/folderopen.png | Bin 597 -> 0 bytes hcp/doxygen/html/fpc__com__chain_8h.html | 197 -- hcp/doxygen/html/fpc__com__chain_8h.js | 11 - .../html/fpc__com__chain_8h__dep__incl.map | 8 - .../html/fpc__com__chain_8h__dep__incl.md5 | 1 - .../html/fpc__com__chain_8h__dep__incl.svg | 101 - hcp/doxygen/html/fpc__com__chain_8h__incl.map | 5 - hcp/doxygen/html/fpc__com__chain_8h__incl.md5 | 1 - hcp/doxygen/html/fpc__com__chain_8h__incl.svg | 92 - .../html/fpc__com__chain_8h_source.html | 109 - hcp/doxygen/html/fpc__com__link_8c.html | 235 -- hcp/doxygen/html/fpc__com__link_8c.js | 6 - hcp/doxygen/html/fpc__com__link_8c__incl.map | 7 - hcp/doxygen/html/fpc__com__link_8c__incl.md5 | 1 - hcp/doxygen/html/fpc__com__link_8c__incl.svg | 153 -- ...3a8a308255ea41e7b7cdefd63a90d14_cgraph.map | 3 - ...3a8a308255ea41e7b7cdefd63a90d14_cgraph.md5 | 1 - ...3a8a308255ea41e7b7cdefd63a90d14_cgraph.svg | 31 - .../html/fpc__com__link_8c_source.html | 111 - hcp/doxygen/html/fpc__com__link_8h.html | 242 -- hcp/doxygen/html/fpc__com__link_8h.js | 6 - .../html/fpc__com__link_8h__dep__incl.map | 4 - .../html/fpc__com__link_8h__dep__incl.md5 | 1 - .../html/fpc__com__link_8h__dep__incl.svg | 44 - hcp/doxygen/html/fpc__com__link_8h__incl.map | 6 - hcp/doxygen/html/fpc__com__link_8h__incl.md5 | 1 - hcp/doxygen/html/fpc__com__link_8h__incl.svg | 120 - ...3a8a308255ea41e7b7cdefd63a90d14_cgraph.map | 3 - ...3a8a308255ea41e7b7cdefd63a90d14_cgraph.md5 | 1 - ...3a8a308255ea41e7b7cdefd63a90d14_cgraph.svg | 31 - .../html/fpc__com__link_8h_source.html | 92 - hcp/doxygen/html/fpc__com__packets_8h.html | 231 -- hcp/doxygen/html/fpc__com__packets_8h.js | 15 - .../html/fpc__com__packets_8h__dep__incl.map | 9 - .../html/fpc__com__packets_8h__dep__incl.md5 | 1 - .../html/fpc__com__packets_8h__dep__incl.svg | 114 - .../html/fpc__com__packets_8h__incl.map | 2 - .../html/fpc__com__packets_8h__incl.md5 | 1 - .../html/fpc__com__packets_8h__incl.svg | 28 - .../html/fpc__com__packets_8h_source.html | 102 - hcp/doxygen/html/fpc__com__result_8h.html | 179 -- hcp/doxygen/html/fpc__com__result_8h.js | 12 - .../html/fpc__com__result_8h__dep__incl.map | 9 - .../html/fpc__com__result_8h__dep__incl.md5 | 1 - .../html/fpc__com__result_8h__dep__incl.svg | 119 - .../html/fpc__com__result_8h__incl.map | 2 - .../html/fpc__com__result_8h__incl.md5 | 1 - .../html/fpc__com__result_8h__incl.svg | 28 - .../html/fpc__com__result_8h_source.html | 92 - hcp/doxygen/html/fpc__com__transport_8c.html | 244 -- hcp/doxygen/html/fpc__com__transport_8c.js | 6 - .../html/fpc__com__transport_8c__incl.map | 8 - .../html/fpc__com__transport_8c__incl.md5 | 1 - .../html/fpc__com__transport_8c__incl.svg | 176 -- ...c641d17a6f587ceb132b5500390f99a_cgraph.map | 3 - ...c641d17a6f587ceb132b5500390f99a_cgraph.md5 | 1 - ...c641d17a6f587ceb132b5500390f99a_cgraph.svg | 31 - ...7766ded38ea5a21005d9c99dbd24a72_cgraph.map | 4 - ...7766ded38ea5a21005d9c99dbd24a72_cgraph.md5 | 1 - ...7766ded38ea5a21005d9c99dbd24a72_cgraph.svg | 44 - .../html/fpc__com__transport_8c_source.html | 109 - hcp/doxygen/html/fpc__com__transport_8h.html | 248 -- hcp/doxygen/html/fpc__com__transport_8h.js | 6 - .../fpc__com__transport_8h__dep__incl.map | 3 - .../fpc__com__transport_8h__dep__incl.md5 | 1 - .../fpc__com__transport_8h__dep__incl.svg | 31 - .../html/fpc__com__transport_8h__incl.map | 6 - .../html/fpc__com__transport_8h__incl.md5 | 1 - .../html/fpc__com__transport_8h__incl.svg | 110 - ...c641d17a6f587ceb132b5500390f99a_cgraph.map | 3 - ...c641d17a6f587ceb132b5500390f99a_cgraph.md5 | 1 - ...c641d17a6f587ceb132b5500390f99a_cgraph.svg | 31 - ...7766ded38ea5a21005d9c99dbd24a72_cgraph.map | 4 - ...7766ded38ea5a21005d9c99dbd24a72_cgraph.md5 | 1 - ...7766ded38ea5a21005d9c99dbd24a72_cgraph.svg | 44 - .../html/fpc__com__transport_8h_source.html | 91 - hcp/doxygen/html/fpc__hcp_8c.html | 721 ----- hcp/doxygen/html/fpc__hcp_8c.js | 19 - hcp/doxygen/html/fpc__hcp_8c__incl.map | 7 - hcp/doxygen/html/fpc__hcp_8c__incl.md5 | 1 - hcp/doxygen/html/fpc__hcp_8c__incl.svg | 153 -- ...c5716b3b2adf3204cf135d9ddaa3688_cgraph.map | 3 - ...c5716b3b2adf3204cf135d9ddaa3688_cgraph.md5 | 1 - ...c5716b3b2adf3204cf135d9ddaa3688_cgraph.svg | 31 - ...964fefb0fc68032f44850ee060b8e9b_cgraph.map | 4 - ...964fefb0fc68032f44850ee060b8e9b_cgraph.md5 | 1 - ...964fefb0fc68032f44850ee060b8e9b_cgraph.svg | 44 - ...28e8941753ebcac47c1fc0a06813e61_cgraph.map | 3 - ...28e8941753ebcac47c1fc0a06813e61_cgraph.md5 | 1 - ...28e8941753ebcac47c1fc0a06813e61_cgraph.svg | 31 - ...8ec0a9f397508976922d1833a9a7626_cgraph.map | 4 - ...8ec0a9f397508976922d1833a9a7626_cgraph.md5 | 1 - ...8ec0a9f397508976922d1833a9a7626_cgraph.svg | 44 - ...defbe1e416979abcf59f7bf652e2a77_cgraph.map | 3 - ...defbe1e416979abcf59f7bf652e2a77_cgraph.md5 | 1 - ...defbe1e416979abcf59f7bf652e2a77_cgraph.svg | 31 - ...1b7ce8b198acf7c8f6802300e2591ea_cgraph.map | 3 - ...1b7ce8b198acf7c8f6802300e2591ea_cgraph.md5 | 1 - ...1b7ce8b198acf7c8f6802300e2591ea_cgraph.svg | 31 - hcp/doxygen/html/fpc__hcp_8c_source.html | 140 - hcp/doxygen/html/fpc__hcp_8h.html | 528 ---- hcp/doxygen/html/fpc__hcp_8h.js | 11 - hcp/doxygen/html/fpc__hcp_8h__dep__incl.map | 3 - hcp/doxygen/html/fpc__hcp_8h__dep__incl.md5 | 1 - hcp/doxygen/html/fpc__hcp_8h__dep__incl.svg | 31 - hcp/doxygen/html/fpc__hcp_8h__incl.map | 6 - hcp/doxygen/html/fpc__hcp_8h__incl.md5 | 1 - hcp/doxygen/html/fpc__hcp_8h__incl.svg | 120 - ...964fefb0fc68032f44850ee060b8e9b_cgraph.map | 4 - ...964fefb0fc68032f44850ee060b8e9b_cgraph.md5 | 1 - ...964fefb0fc68032f44850ee060b8e9b_cgraph.svg | 44 - ...8ec0a9f397508976922d1833a9a7626_cgraph.map | 4 - ...8ec0a9f397508976922d1833a9a7626_cgraph.md5 | 1 - ...8ec0a9f397508976922d1833a9a7626_cgraph.svg | 44 - ...defbe1e416979abcf59f7bf652e2a77_cgraph.map | 3 - ...defbe1e416979abcf59f7bf652e2a77_cgraph.md5 | 1 - ...defbe1e416979abcf59f7bf652e2a77_cgraph.svg | 31 - ...1b7ce8b198acf7c8f6802300e2591ea_cgraph.map | 3 - ...1b7ce8b198acf7c8f6802300e2591ea_cgraph.md5 | 1 - ...1b7ce8b198acf7c8f6802300e2591ea_cgraph.svg | 31 - hcp/doxygen/html/fpc__hcp_8h_source.html | 99 - hcp/doxygen/html/fpc__hcp__common_8h.html | 691 ----- hcp/doxygen/html/fpc__hcp__common_8h.js | 112 - .../html/fpc__hcp__common_8h__dep__incl.map | 9 - .../html/fpc__hcp__common_8h__dep__incl.md5 | 1 - .../html/fpc__hcp__common_8h__dep__incl.svg | 119 - .../html/fpc__hcp__common_8h__incl.map | 2 - .../html/fpc__hcp__common_8h__incl.md5 | 1 - .../html/fpc__hcp__common_8h__incl.svg | 38 - .../html/fpc__hcp__common_8h_source.html | 197 -- hcp/doxygen/html/functions.html | 261 -- hcp/doxygen/html/functions_vars.html | 261 -- hcp/doxygen/html/globals.html | 589 ---- hcp/doxygen/html/globals_defs.html | 121 - hcp/doxygen/html/globals_enum.html | 106 - hcp/doxygen/html/globals_eval.html | 432 --- hcp/doxygen/html/globals_func.html | 153 -- hcp/doxygen/html/globals_type.html | 121 - hcp/doxygen/html/graph_legend.html | 103 - hcp/doxygen/html/graph_legend.md5 | 1 - hcp/doxygen/html/graph_legend.svg | 121 - hcp/doxygen/html/hcp.svg | 247 -- hcp/doxygen/html/hcp_8md.html | 86 - hcp/doxygen/html/hcp_8md_source.html | 84 - hcp/doxygen/html/hcpf.html | 103 - hcp/doxygen/html/image.html | 87 - hcp/doxygen/html/index.html | 101 - hcp/doxygen/html/index.js | 47 - hcp/doxygen/html/jquery.js | 68 - hcp/doxygen/html/md_doc_md_1_stack.html | 77 - hcp/doxygen/html/md_doc_md_2_hcpframe.html | 77 - hcp/doxygen/html/md_doc_md_4_biometrics.html | 77 - hcp/doxygen/html/md_doc_md_5_image.html | 77 - hcp/doxygen/html/md_doc_md_6_template.html | 77 - hcp/doxygen/html/md_doc_md_7_storage.html | 77 - hcp/doxygen/html/md_doc_md_8_sensor.html | 77 - hcp/doxygen/html/md_doc_md_9_device.html | 77 - hcp/doxygen/html/nav_f.png | Bin 153 -> 0 bytes hcp/doxygen/html/nav_g.png | Bin 95 -> 0 bytes hcp/doxygen/html/nav_h.png | Bin 98 -> 0 bytes hcp/doxygen/html/navtree.css | 143 - hcp/doxygen/html/navtree.js | 523 ---- hcp/doxygen/html/navtreedata.js | 42 - hcp/doxygen/html/navtreeindex0.js | 253 -- hcp/doxygen/html/navtreeindex1.js | 44 - hcp/doxygen/html/open.png | Bin 123 -> 0 bytes hcp/doxygen/html/pages.html | 89 - hcp/doxygen/html/resize.js | 97 - hcp/doxygen/html/sensor.html | 87 - hcp/doxygen/html/splitbar.png | Bin 314 -> 0 bytes hcp/doxygen/html/stack.html | 116 - hcp/doxygen/html/stack.svg | 236 -- hcp/doxygen/html/storage.html | 93 - hcp/doxygen/html/structfpc__com__chain.html | 524 ---- hcp/doxygen/html/structfpc__com__chain.js | 27 - .../structfpc__com__chain__coll__graph.map | 5 - .../structfpc__com__chain__coll__graph.md5 | 1 - .../structfpc__com__chain__coll__graph.svg | 60 - .../html/structfpc__com__chain__private.html | 158 -- .../html/structfpc__com__chain__private.js | 6 - ...tfpc__com__chain__private__coll__graph.map | 4 - ...tfpc__com__chain__private__coll__graph.md5 | 1 - ...tfpc__com__chain__private__coll__graph.svg | 46 - .../html/structfpc__com__packet__link.html | 169 -- .../html/structfpc__com__packet__link.js | 7 - .../structfpc__com__packet__transport.html | 169 -- .../html/structfpc__com__packet__transport.js | 7 - .../html/structfpc__hcp__arg__data.html | 172 -- hcp/doxygen/html/structfpc__hcp__arg__data.js | 7 - hcp/doxygen/html/structfpc__hcp__packet.html | 161 -- hcp/doxygen/html/structfpc__hcp__packet.js | 6 - .../structfpc__hcp__packet__coll__graph.map | 3 - .../structfpc__hcp__packet__coll__graph.md5 | 1 - .../structfpc__hcp__packet__coll__graph.svg | 32 - hcp/doxygen/html/sync_off.png | Bin 853 -> 0 bytes hcp/doxygen/html/sync_on.png | Bin 845 -> 0 bytes hcp/doxygen/html/tab_a.png | Bin 142 -> 0 bytes hcp/doxygen/html/tab_b.png | Bin 169 -> 0 bytes hcp/doxygen/html/tab_h.png | Bin 177 -> 0 bytes hcp/doxygen/html/tab_s.png | Bin 184 -> 0 bytes hcp/doxygen/html/tabs.css | 60 - hcp/doxygen/html/template.html | 87 - hcp/hcp.doxyfile | 2446 ----------------- hcp/hcp.md | 74 - hcp/hcp.mk | 6 - hcp/inc/fpc_com_chain.h | 154 -- hcp/inc/fpc_com_link.h | 65 - hcp/inc/fpc_com_packets.h | 76 - hcp/inc/fpc_com_result.h | 47 - hcp/inc/fpc_com_transport.h | 63 - hcp/inc/fpc_hcp.h | 125 - hcp/src/fpc_com_link.c | 135 - hcp/src/fpc_com_transport.c | 99 - hcp/src/fpc_hcp.c | 470 ---- 292 files changed, 1161 insertions(+), 26856 deletions(-) delete mode 100644 BMLite_example/inc/bep_host_if.h create mode 100644 BMLite_example/inc/bmlite_if.h create mode 100644 BMLite_example/inc/bmlite_if_callbacks.h delete mode 100644 BMLite_example/inc/com_app_cleartext.h delete mode 100644 BMLite_example/inc/com_common.h rename {hcp => BMLite_example}/inc/fpc_hcp_common.h (100%) create mode 100644 BMLite_example/inc/hcp_tiny.h delete mode 100644 BMLite_example/src/bep_host_if.c create mode 100644 BMLite_example/src/bmlite_if.c delete mode 100644 BMLite_example/src/com_app_cleartext.c delete mode 100644 BMLite_example/src/com_common.c create mode 100644 BMLite_example/src/hcp_tiny.c delete mode 100644 hcp/LICENSE.txt delete mode 100644 hcp/doc/img/hcp.eps delete mode 100644 hcp/doc/img/hcp.pdf delete mode 100644 hcp/doc/img/hcp.svg delete mode 100644 hcp/doc/img/stack.eps delete mode 100644 hcp/doc/img/stack.pdf delete mode 100644 hcp/doc/img/stack.svg delete mode 100644 hcp/doc/md/1_stack.md delete mode 100644 hcp/doc/md/2_hcpframe.md delete mode 100644 hcp/doc/md/4_biometrics.md delete mode 100644 hcp/doc/md/5_image.md delete mode 100644 hcp/doc/md/6_template.md delete mode 100644 hcp/doc/md/7_storage.md delete mode 100644 hcp/doc/md/8_sensor.md delete mode 100644 hcp/doc/md/9_device.md delete mode 100644 hcp/doxygen/HCP.html delete mode 100644 hcp/doxygen/HCP.pdf delete mode 100644 hcp/doxygen/html/1__stack_8md.html delete mode 100644 hcp/doxygen/html/1__stack_8md_source.html delete mode 100644 hcp/doxygen/html/2__hcpframe_8md.html delete mode 100644 hcp/doxygen/html/2__hcpframe_8md_source.html delete mode 100644 hcp/doxygen/html/4__biometrics_8md.html delete mode 100644 hcp/doxygen/html/4__biometrics_8md_source.html delete mode 100644 hcp/doxygen/html/5__image_8md.html delete mode 100644 hcp/doxygen/html/5__image_8md_source.html delete mode 100644 hcp/doxygen/html/6__template_8md.html delete mode 100644 hcp/doxygen/html/6__template_8md_source.html delete mode 100644 hcp/doxygen/html/7__storage_8md.html delete mode 100644 hcp/doxygen/html/7__storage_8md_source.html delete mode 100644 hcp/doxygen/html/8__sensor_8md.html delete mode 100644 hcp/doxygen/html/8__sensor_8md_source.html delete mode 100644 hcp/doxygen/html/9__device_8md.html delete mode 100644 hcp/doxygen/html/9__device_8md_source.html delete mode 100644 hcp/doxygen/html/annotated.html delete mode 100644 hcp/doxygen/html/annotated_dup.js delete mode 100644 hcp/doxygen/html/arrowdown.png delete mode 100644 hcp/doxygen/html/arrowright.png delete mode 100644 hcp/doxygen/html/bc_s.png delete mode 100644 hcp/doxygen/html/bdwn.png delete mode 100644 hcp/doxygen/html/bio.html delete mode 100644 hcp/doxygen/html/classes.html delete mode 100644 hcp/doxygen/html/closed.png delete mode 100644 hcp/doxygen/html/device.html delete mode 100644 hcp/doxygen/html/dir_000001_000000.html delete mode 100644 hcp/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html delete mode 100644 hcp/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js delete mode 100644 hcp/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map delete mode 100644 hcp/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 delete mode 100644 hcp/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.svg delete mode 100644 hcp/doxygen/html/dir_bfccd401955b95cf8c75461437045ac0.html delete mode 100644 hcp/doxygen/html/dir_bfccd401955b95cf8c75461437045ac0.js delete mode 100644 hcp/doxygen/html/doc.png delete mode 100644 hcp/doxygen/html/doxygen.css delete mode 100644 hcp/doxygen/html/doxygen.png delete mode 100644 hcp/doxygen/html/dynsections.js delete mode 100644 hcp/doxygen/html/files.html delete mode 100644 hcp/doxygen/html/files.js delete mode 100644 hcp/doxygen/html/folderclosed.png delete mode 100644 hcp/doxygen/html/folderopen.png delete mode 100644 hcp/doxygen/html/fpc__com__chain_8h.html delete mode 100644 hcp/doxygen/html/fpc__com__chain_8h.js delete mode 100644 hcp/doxygen/html/fpc__com__chain_8h__dep__incl.map delete mode 100644 hcp/doxygen/html/fpc__com__chain_8h__dep__incl.md5 delete mode 100644 hcp/doxygen/html/fpc__com__chain_8h__dep__incl.svg delete mode 100644 hcp/doxygen/html/fpc__com__chain_8h__incl.map delete mode 100644 hcp/doxygen/html/fpc__com__chain_8h__incl.md5 delete mode 100644 hcp/doxygen/html/fpc__com__chain_8h__incl.svg delete mode 100644 hcp/doxygen/html/fpc__com__chain_8h_source.html delete mode 100644 hcp/doxygen/html/fpc__com__link_8c.html delete mode 100644 hcp/doxygen/html/fpc__com__link_8c.js delete mode 100644 hcp/doxygen/html/fpc__com__link_8c__incl.map delete mode 100644 hcp/doxygen/html/fpc__com__link_8c__incl.md5 delete mode 100644 hcp/doxygen/html/fpc__com__link_8c__incl.svg delete mode 100644 hcp/doxygen/html/fpc__com__link_8c_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.map delete mode 100644 hcp/doxygen/html/fpc__com__link_8c_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.md5 delete mode 100644 hcp/doxygen/html/fpc__com__link_8c_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.svg delete mode 100644 hcp/doxygen/html/fpc__com__link_8c_source.html delete mode 100644 hcp/doxygen/html/fpc__com__link_8h.html delete mode 100644 hcp/doxygen/html/fpc__com__link_8h.js delete mode 100644 hcp/doxygen/html/fpc__com__link_8h__dep__incl.map delete mode 100644 hcp/doxygen/html/fpc__com__link_8h__dep__incl.md5 delete mode 100644 hcp/doxygen/html/fpc__com__link_8h__dep__incl.svg delete mode 100644 hcp/doxygen/html/fpc__com__link_8h__incl.map delete mode 100644 hcp/doxygen/html/fpc__com__link_8h__incl.md5 delete mode 100644 hcp/doxygen/html/fpc__com__link_8h__incl.svg delete mode 100644 hcp/doxygen/html/fpc__com__link_8h_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.map delete mode 100644 hcp/doxygen/html/fpc__com__link_8h_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.md5 delete mode 100644 hcp/doxygen/html/fpc__com__link_8h_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.svg delete mode 100644 hcp/doxygen/html/fpc__com__link_8h_source.html delete mode 100644 hcp/doxygen/html/fpc__com__packets_8h.html delete mode 100644 hcp/doxygen/html/fpc__com__packets_8h.js delete mode 100644 hcp/doxygen/html/fpc__com__packets_8h__dep__incl.map delete mode 100644 hcp/doxygen/html/fpc__com__packets_8h__dep__incl.md5 delete mode 100644 hcp/doxygen/html/fpc__com__packets_8h__dep__incl.svg delete mode 100644 hcp/doxygen/html/fpc__com__packets_8h__incl.map delete mode 100644 hcp/doxygen/html/fpc__com__packets_8h__incl.md5 delete mode 100644 hcp/doxygen/html/fpc__com__packets_8h__incl.svg delete mode 100644 hcp/doxygen/html/fpc__com__packets_8h_source.html delete mode 100644 hcp/doxygen/html/fpc__com__result_8h.html delete mode 100644 hcp/doxygen/html/fpc__com__result_8h.js delete mode 100644 hcp/doxygen/html/fpc__com__result_8h__dep__incl.map delete mode 100644 hcp/doxygen/html/fpc__com__result_8h__dep__incl.md5 delete mode 100644 hcp/doxygen/html/fpc__com__result_8h__dep__incl.svg delete mode 100644 hcp/doxygen/html/fpc__com__result_8h__incl.map delete mode 100644 hcp/doxygen/html/fpc__com__result_8h__incl.md5 delete mode 100644 hcp/doxygen/html/fpc__com__result_8h__incl.svg delete mode 100644 hcp/doxygen/html/fpc__com__result_8h_source.html delete mode 100644 hcp/doxygen/html/fpc__com__transport_8c.html delete mode 100644 hcp/doxygen/html/fpc__com__transport_8c.js delete mode 100644 hcp/doxygen/html/fpc__com__transport_8c__incl.map delete mode 100644 hcp/doxygen/html/fpc__com__transport_8c__incl.md5 delete mode 100644 hcp/doxygen/html/fpc__com__transport_8c__incl.svg delete mode 100644 hcp/doxygen/html/fpc__com__transport_8c_acc641d17a6f587ceb132b5500390f99a_cgraph.map delete mode 100644 hcp/doxygen/html/fpc__com__transport_8c_acc641d17a6f587ceb132b5500390f99a_cgraph.md5 delete mode 100644 hcp/doxygen/html/fpc__com__transport_8c_acc641d17a6f587ceb132b5500390f99a_cgraph.svg delete mode 100644 hcp/doxygen/html/fpc__com__transport_8c_af7766ded38ea5a21005d9c99dbd24a72_cgraph.map delete mode 100644 hcp/doxygen/html/fpc__com__transport_8c_af7766ded38ea5a21005d9c99dbd24a72_cgraph.md5 delete mode 100644 hcp/doxygen/html/fpc__com__transport_8c_af7766ded38ea5a21005d9c99dbd24a72_cgraph.svg delete mode 100644 hcp/doxygen/html/fpc__com__transport_8c_source.html delete mode 100644 hcp/doxygen/html/fpc__com__transport_8h.html delete mode 100644 hcp/doxygen/html/fpc__com__transport_8h.js delete mode 100644 hcp/doxygen/html/fpc__com__transport_8h__dep__incl.map delete mode 100644 hcp/doxygen/html/fpc__com__transport_8h__dep__incl.md5 delete mode 100644 hcp/doxygen/html/fpc__com__transport_8h__dep__incl.svg delete mode 100644 hcp/doxygen/html/fpc__com__transport_8h__incl.map delete mode 100644 hcp/doxygen/html/fpc__com__transport_8h__incl.md5 delete mode 100644 hcp/doxygen/html/fpc__com__transport_8h__incl.svg delete mode 100644 hcp/doxygen/html/fpc__com__transport_8h_acc641d17a6f587ceb132b5500390f99a_cgraph.map delete mode 100644 hcp/doxygen/html/fpc__com__transport_8h_acc641d17a6f587ceb132b5500390f99a_cgraph.md5 delete mode 100644 hcp/doxygen/html/fpc__com__transport_8h_acc641d17a6f587ceb132b5500390f99a_cgraph.svg delete mode 100644 hcp/doxygen/html/fpc__com__transport_8h_af7766ded38ea5a21005d9c99dbd24a72_cgraph.map delete mode 100644 hcp/doxygen/html/fpc__com__transport_8h_af7766ded38ea5a21005d9c99dbd24a72_cgraph.md5 delete mode 100644 hcp/doxygen/html/fpc__com__transport_8h_af7766ded38ea5a21005d9c99dbd24a72_cgraph.svg delete mode 100644 hcp/doxygen/html/fpc__com__transport_8h_source.html delete mode 100644 hcp/doxygen/html/fpc__hcp_8c.html delete mode 100644 hcp/doxygen/html/fpc__hcp_8c.js delete mode 100644 hcp/doxygen/html/fpc__hcp_8c__incl.map delete mode 100644 hcp/doxygen/html/fpc__hcp_8c__incl.md5 delete mode 100644 hcp/doxygen/html/fpc__hcp_8c__incl.svg delete mode 100644 hcp/doxygen/html/fpc__hcp_8c_a0c5716b3b2adf3204cf135d9ddaa3688_cgraph.map delete mode 100644 hcp/doxygen/html/fpc__hcp_8c_a0c5716b3b2adf3204cf135d9ddaa3688_cgraph.md5 delete mode 100644 hcp/doxygen/html/fpc__hcp_8c_a0c5716b3b2adf3204cf135d9ddaa3688_cgraph.svg delete mode 100644 hcp/doxygen/html/fpc__hcp_8c_aa964fefb0fc68032f44850ee060b8e9b_cgraph.map delete mode 100644 hcp/doxygen/html/fpc__hcp_8c_aa964fefb0fc68032f44850ee060b8e9b_cgraph.md5 delete mode 100644 hcp/doxygen/html/fpc__hcp_8c_aa964fefb0fc68032f44850ee060b8e9b_cgraph.svg delete mode 100644 hcp/doxygen/html/fpc__hcp_8c_ac28e8941753ebcac47c1fc0a06813e61_cgraph.map delete mode 100644 hcp/doxygen/html/fpc__hcp_8c_ac28e8941753ebcac47c1fc0a06813e61_cgraph.md5 delete mode 100644 hcp/doxygen/html/fpc__hcp_8c_ac28e8941753ebcac47c1fc0a06813e61_cgraph.svg delete mode 100644 hcp/doxygen/html/fpc__hcp_8c_ac8ec0a9f397508976922d1833a9a7626_cgraph.map delete mode 100644 hcp/doxygen/html/fpc__hcp_8c_ac8ec0a9f397508976922d1833a9a7626_cgraph.md5 delete mode 100644 hcp/doxygen/html/fpc__hcp_8c_ac8ec0a9f397508976922d1833a9a7626_cgraph.svg delete mode 100644 hcp/doxygen/html/fpc__hcp_8c_addefbe1e416979abcf59f7bf652e2a77_cgraph.map delete mode 100644 hcp/doxygen/html/fpc__hcp_8c_addefbe1e416979abcf59f7bf652e2a77_cgraph.md5 delete mode 100644 hcp/doxygen/html/fpc__hcp_8c_addefbe1e416979abcf59f7bf652e2a77_cgraph.svg delete mode 100644 hcp/doxygen/html/fpc__hcp_8c_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.map delete mode 100644 hcp/doxygen/html/fpc__hcp_8c_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.md5 delete mode 100644 hcp/doxygen/html/fpc__hcp_8c_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.svg delete mode 100644 hcp/doxygen/html/fpc__hcp_8c_source.html delete mode 100644 hcp/doxygen/html/fpc__hcp_8h.html delete mode 100644 hcp/doxygen/html/fpc__hcp_8h.js delete mode 100644 hcp/doxygen/html/fpc__hcp_8h__dep__incl.map delete mode 100644 hcp/doxygen/html/fpc__hcp_8h__dep__incl.md5 delete mode 100644 hcp/doxygen/html/fpc__hcp_8h__dep__incl.svg delete mode 100644 hcp/doxygen/html/fpc__hcp_8h__incl.map delete mode 100644 hcp/doxygen/html/fpc__hcp_8h__incl.md5 delete mode 100644 hcp/doxygen/html/fpc__hcp_8h__incl.svg delete mode 100644 hcp/doxygen/html/fpc__hcp_8h_aa964fefb0fc68032f44850ee060b8e9b_cgraph.map delete mode 100644 hcp/doxygen/html/fpc__hcp_8h_aa964fefb0fc68032f44850ee060b8e9b_cgraph.md5 delete mode 100644 hcp/doxygen/html/fpc__hcp_8h_aa964fefb0fc68032f44850ee060b8e9b_cgraph.svg delete mode 100644 hcp/doxygen/html/fpc__hcp_8h_ac8ec0a9f397508976922d1833a9a7626_cgraph.map delete mode 100644 hcp/doxygen/html/fpc__hcp_8h_ac8ec0a9f397508976922d1833a9a7626_cgraph.md5 delete mode 100644 hcp/doxygen/html/fpc__hcp_8h_ac8ec0a9f397508976922d1833a9a7626_cgraph.svg delete mode 100644 hcp/doxygen/html/fpc__hcp_8h_addefbe1e416979abcf59f7bf652e2a77_cgraph.map delete mode 100644 hcp/doxygen/html/fpc__hcp_8h_addefbe1e416979abcf59f7bf652e2a77_cgraph.md5 delete mode 100644 hcp/doxygen/html/fpc__hcp_8h_addefbe1e416979abcf59f7bf652e2a77_cgraph.svg delete mode 100644 hcp/doxygen/html/fpc__hcp_8h_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.map delete mode 100644 hcp/doxygen/html/fpc__hcp_8h_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.md5 delete mode 100644 hcp/doxygen/html/fpc__hcp_8h_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.svg delete mode 100644 hcp/doxygen/html/fpc__hcp_8h_source.html delete mode 100644 hcp/doxygen/html/fpc__hcp__common_8h.html delete mode 100644 hcp/doxygen/html/fpc__hcp__common_8h.js delete mode 100644 hcp/doxygen/html/fpc__hcp__common_8h__dep__incl.map delete mode 100644 hcp/doxygen/html/fpc__hcp__common_8h__dep__incl.md5 delete mode 100644 hcp/doxygen/html/fpc__hcp__common_8h__dep__incl.svg delete mode 100644 hcp/doxygen/html/fpc__hcp__common_8h__incl.map delete mode 100644 hcp/doxygen/html/fpc__hcp__common_8h__incl.md5 delete mode 100644 hcp/doxygen/html/fpc__hcp__common_8h__incl.svg delete mode 100644 hcp/doxygen/html/fpc__hcp__common_8h_source.html delete mode 100644 hcp/doxygen/html/functions.html delete mode 100644 hcp/doxygen/html/functions_vars.html delete mode 100644 hcp/doxygen/html/globals.html delete mode 100644 hcp/doxygen/html/globals_defs.html delete mode 100644 hcp/doxygen/html/globals_enum.html delete mode 100644 hcp/doxygen/html/globals_eval.html delete mode 100644 hcp/doxygen/html/globals_func.html delete mode 100644 hcp/doxygen/html/globals_type.html delete mode 100644 hcp/doxygen/html/graph_legend.html delete mode 100644 hcp/doxygen/html/graph_legend.md5 delete mode 100644 hcp/doxygen/html/graph_legend.svg delete mode 100644 hcp/doxygen/html/hcp.svg delete mode 100644 hcp/doxygen/html/hcp_8md.html delete mode 100644 hcp/doxygen/html/hcp_8md_source.html delete mode 100644 hcp/doxygen/html/hcpf.html delete mode 100644 hcp/doxygen/html/image.html delete mode 100644 hcp/doxygen/html/index.html delete mode 100644 hcp/doxygen/html/index.js delete mode 100644 hcp/doxygen/html/jquery.js delete mode 100644 hcp/doxygen/html/md_doc_md_1_stack.html delete mode 100644 hcp/doxygen/html/md_doc_md_2_hcpframe.html delete mode 100644 hcp/doxygen/html/md_doc_md_4_biometrics.html delete mode 100644 hcp/doxygen/html/md_doc_md_5_image.html delete mode 100644 hcp/doxygen/html/md_doc_md_6_template.html delete mode 100644 hcp/doxygen/html/md_doc_md_7_storage.html delete mode 100644 hcp/doxygen/html/md_doc_md_8_sensor.html delete mode 100644 hcp/doxygen/html/md_doc_md_9_device.html delete mode 100644 hcp/doxygen/html/nav_f.png delete mode 100644 hcp/doxygen/html/nav_g.png delete mode 100644 hcp/doxygen/html/nav_h.png delete mode 100644 hcp/doxygen/html/navtree.css delete mode 100644 hcp/doxygen/html/navtree.js delete mode 100644 hcp/doxygen/html/navtreedata.js delete mode 100644 hcp/doxygen/html/navtreeindex0.js delete mode 100644 hcp/doxygen/html/navtreeindex1.js delete mode 100644 hcp/doxygen/html/open.png delete mode 100644 hcp/doxygen/html/pages.html delete mode 100644 hcp/doxygen/html/resize.js delete mode 100644 hcp/doxygen/html/sensor.html delete mode 100644 hcp/doxygen/html/splitbar.png delete mode 100644 hcp/doxygen/html/stack.html delete mode 100644 hcp/doxygen/html/stack.svg delete mode 100644 hcp/doxygen/html/storage.html delete mode 100644 hcp/doxygen/html/structfpc__com__chain.html delete mode 100644 hcp/doxygen/html/structfpc__com__chain.js delete mode 100644 hcp/doxygen/html/structfpc__com__chain__coll__graph.map delete mode 100644 hcp/doxygen/html/structfpc__com__chain__coll__graph.md5 delete mode 100644 hcp/doxygen/html/structfpc__com__chain__coll__graph.svg delete mode 100644 hcp/doxygen/html/structfpc__com__chain__private.html delete mode 100644 hcp/doxygen/html/structfpc__com__chain__private.js delete mode 100644 hcp/doxygen/html/structfpc__com__chain__private__coll__graph.map delete mode 100644 hcp/doxygen/html/structfpc__com__chain__private__coll__graph.md5 delete mode 100644 hcp/doxygen/html/structfpc__com__chain__private__coll__graph.svg delete mode 100644 hcp/doxygen/html/structfpc__com__packet__link.html delete mode 100644 hcp/doxygen/html/structfpc__com__packet__link.js delete mode 100644 hcp/doxygen/html/structfpc__com__packet__transport.html delete mode 100644 hcp/doxygen/html/structfpc__com__packet__transport.js delete mode 100644 hcp/doxygen/html/structfpc__hcp__arg__data.html delete mode 100644 hcp/doxygen/html/structfpc__hcp__arg__data.js delete mode 100644 hcp/doxygen/html/structfpc__hcp__packet.html delete mode 100644 hcp/doxygen/html/structfpc__hcp__packet.js delete mode 100644 hcp/doxygen/html/structfpc__hcp__packet__coll__graph.map delete mode 100644 hcp/doxygen/html/structfpc__hcp__packet__coll__graph.md5 delete mode 100644 hcp/doxygen/html/structfpc__hcp__packet__coll__graph.svg delete mode 100644 hcp/doxygen/html/sync_off.png delete mode 100644 hcp/doxygen/html/sync_on.png delete mode 100644 hcp/doxygen/html/tab_a.png delete mode 100644 hcp/doxygen/html/tab_b.png delete mode 100644 hcp/doxygen/html/tab_h.png delete mode 100644 hcp/doxygen/html/tab_s.png delete mode 100644 hcp/doxygen/html/tabs.css delete mode 100644 hcp/doxygen/html/template.html delete mode 100644 hcp/hcp.doxyfile delete mode 100644 hcp/hcp.md delete mode 100644 hcp/hcp.mk delete mode 100644 hcp/inc/fpc_com_chain.h delete mode 100644 hcp/inc/fpc_com_link.h delete mode 100644 hcp/inc/fpc_com_packets.h delete mode 100644 hcp/inc/fpc_com_result.h delete mode 100644 hcp/inc/fpc_com_transport.h delete mode 100644 hcp/inc/fpc_hcp.h delete mode 100644 hcp/src/fpc_com_link.c delete mode 100644 hcp/src/fpc_com_transport.c delete mode 100644 hcp/src/fpc_hcp.c diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index 528483c..492ad70 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -2,7 +2,7 @@ "configurations": [ { "name": "Linux", - "defines": ["NRF52840_XXAA", "BOARD_PCA10056"], + "defines": ["NRF52840_XXAA", "BOARD_PCA10056", "BMLITE_USE_CALLBACK"], "cStandard": "c11", "cppStandard": "c++17", "intelliSenseMode": "${default}", @@ -20,7 +20,6 @@ "/usr/arm-none-eabi/include/c++/7.3.1/arm-none-eabi", "/usr/arm-none-eabi/include/c++/7.3.1/backward", "${workspaceFolder}/BMLite_example/inc", - "${workspaceFolder}/hcp/inc", "${workspaceFolder}/HAL_Driver/CMSIS/Include", "${workspaceFolder}/HAL_Driver/inc", "${workspaceFolder}/HAL_Driver/sdk", diff --git a/.vscode/tasks.json b/.vscode/tasks.json index e11c1d5..1c7b7ad 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -13,7 +13,8 @@ }, "problemMatcher": { "base": "$gcc", - "fileLocation": ["relative", "${workspaceFolder}/BMLite_example", "absolute"] +// "fileLocation": ["absolute", "${workspaceFolder}/MBLite_exapmle"] + "fileLocation": ["relative", "${workspaceFolder}/BMLite_example"] }, "group": { "kind": "build", diff --git a/BMLite_example/Makefile b/BMLite_example/Makefile index 687ad59..2d6aaed 100644 --- a/BMLite_example/Makefile +++ b/BMLite_example/Makefile @@ -45,6 +45,9 @@ CFLAGS +=\ -mthumb \ -g \ +CFLAGS +=\ + -DBMLITE_USE_CALLBACK + #-Og\ # -g3\ @@ -69,8 +72,7 @@ PATH_INC += inc C_INC = $(addprefix -I,$(PATH_INC)) -# Include HCP -include $(HCP_PATH)/hcp.mk +# Include HAL include $(MCUHAL_PATH)/nordic.mk # Object files and search paths diff --git a/BMLite_example/inc/bep_host_if.h b/BMLite_example/inc/bep_host_if.h deleted file mode 100644 index 1480d66..0000000 --- a/BMLite_example/inc/bep_host_if.h +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Copyright (c) 2020 Fingerprint Cards AB - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef BEP_HOST_IF_H -#define BEP_HOST_IF_H - -/** - * @file bep_host_if.h - * @brief BEP Host Interface API - */ - -#include -#include -#include "fpc_bep_types.h" -#include "fpc_com_chain.h" - -#define REMOVE_ID_ALL_TEMPLATES 0U - - -typedef enum { - BMLITE_ERROR_OK = 0, - BMLITE_ERROR_CAPTURE, - BMLITE_ERROR_CAPTURE_START, - BMLITE_ERROR_ENROLL_START, - BMLITE_ERROR_ENROLL_ADD, - BMLITE_ERROR_ENROLL_FINISH, - BMLITE_ERROR_WRONG_ANSWER, - BMLITE_ERROR_FINGER_WAIT, - BMLITE_ERROR_IDENTYFY, - BMLITE_ERROR_TEMPLATE_SAVE, - BMLITE_ERROR_TEMPLATE_DELETE, - BMLITE_ERROR_TEMPLATE_COUNT, - BMLITE_ERROR_TEMPLATE_GETIDS, - BMLITE_ERROR_IMAGE_EXTRACT, - BMLITE_ERROR_IMAGE_GETSIZE, - BMLITE_ERROR_IMAGE_GET, - BMLITE_ERROR_GETVERSION, - BMLITE_ERROR_SW_RESET, - BMLITE_ERROR_CALIBRATE, - BMLITE_ERROR_CALIBRATE_DELETE, - BMLITE_ERROR_SEND_CMD -} bmlite_error_t; - -/** - * @brief Error Callback function - * - * @param[in] Callback Error Code - * @param[in] BEP result code - */ -void bmlite_on_error(bmlite_error_t error, int32_t value); - -/** - * @brief Starting Capture Callback function - */ -void bmlite_on_start_capture(); - -/** - * @brief Finishing Capture Callback function - */ -void bmlite_on_finish_capture(); - -/** - * @brief Starting Enroll Callback function - */ -void bmlite_on_start_enroll(); - -/** - * @brief Finishing Enroll Callback function - */ -void bmlite_on_finish_enroll(); - -/** - * @brief Starting Capture for Enroll Callback function - */ -void bmlite_on_start_enrollcapture(); - -/** - * @brief Finishing Capture for Enroll Callback function - */ -void bmlite_on_finish_enrollcapture(); - -/** - * @brief Starting Identify Callback function - */ -void bmlite_on_identify_start(); - -/** - * @brief Finishing Identify Callback function - */ -void bmlite_on_identify_finish(); - - -/** - * @brief Sends HCP commands for capturing an image in Bio MCU - * - * @param[in] chain HCP com chain - * @param[in] timeout Timeout in ms - * @return ::fpc_bep_result_t - */ -fpc_bep_result_t bep_capture(fpc_com_chain_t *chain, uint16_t timeout); - -/** - * @brief Sends HCP commands for enrolling a finger in Bio MCU - * - * @param[in] chain HCP com chain - * @return ::fpc_bep_result_t - */ -fpc_bep_result_t bep_enroll_finger(fpc_com_chain_t *chain); - -/** - * @brief Sends HCP commands for identifying a finger in Bio MCU - * - * @param[in] chain HCP com chain - * @param[out] template_id Template id that was identified (only valid if match is true) - * @param[out] match True if match - * @return ::fpc_bep_result_t - */ -fpc_bep_result_t bep_identify_finger(fpc_com_chain_t *chain, uint16_t *template_id, bool *match); - - -/** - * @brief Sends HCP commands for saving template of an enrolled finger in Bio MCU - * - * @param[in] chain HCP com chain - * @param[in] template_id Template id to save - * @return ::fpc_bep_result_t - */ -fpc_bep_result_t bep_save_template(fpc_com_chain_t *chain, uint16_t template_id); - -/** - * @brief Remove template(s) stored - * - * @param[in] chain HCP com chain - * @param[in] template_id template id to remove, if =REMOVE_ID_ALL_TEMPLATES removes all templates - * @return ::fpc_bep_result_t - */ -fpc_bep_result_t bep_delete_template(fpc_com_chain_t *chain, uint16_t template_id); - -/** - * @brief Gets all template ids from Bio MCU - * - * @param[in] chain HCP com chain - * @param[out] template_ids Should be allocated by the caller for storing template ids and should - * have capacity to hold bio_get_template_count - * @param[in] nof_templates This should be acquired using bio_get_template_count - * @return ::fpc_bep_result_t - */ -fpc_bep_result_t bep_get_template_ids(fpc_com_chain_t *chain, uint16_t *template_ids, - uint32_t nof_templates); - -/** - * @brief Get the number of templates in Bio MCU - * - * @param[in] chain HCP com chain - * @param[out] template_count - * @return ::fpc_bep_result_t - */ -fpc_bep_result_t bep_get_template_count(fpc_com_chain_t *chain, uint32_t *template_count); - - -/** - * @brief Sends HCP commands for extracting a template from a previously capture image in Bio MCU - * - * @param[in] chain HCP com chain - * @return ::fpc_bep_result_t - */ -fpc_bep_result_t bep_image_extract(fpc_com_chain_t *chain); - -/** - * @brief Sends HCP commands for getting the image size of a previously capture image in Bio MCU - * - * @param[in] chain HCP com chain - * @return ::fpc_bep_result_t - */ -fpc_bep_result_t bep_image_get_size(fpc_com_chain_t *chain, uint32_t *size); - -/** - * @brief Sends HCP commands for getting the image data of a previously capture image in Bio MCU - * - * @param[in] chain HCP com chain - * @return ::fpc_bep_result_t - */ -fpc_bep_result_t bep_image_get(fpc_com_chain_t *chain, uint8_t *data, uint32_t size); - -/** - * @brief Sends HCP commands for fetching the version of the Bio MCU FW - * - * @param[in] chain HCP com chain - * @param[out] version Version string buffer - * @param[out] len Length of version string buffer - * @return ::fpc_bep_result_t - */ -fpc_bep_result_t bep_version(fpc_com_chain_t *chain, char *version, int len); - -/** - * @brief Sends HCP commands for resetting the Bio MCU - * - * @param[in] chain HCP com chain - * @return ::fpc_bep_result_t - */ -fpc_bep_result_t bep_reset(fpc_com_chain_t *chain); - -/** - * @brief Sends HCP commands for calibrating the sensor in the Bio MCU - * - * @param[in] chain HCP com chain - * @return ::fpc_bep_result_t - */ -fpc_bep_result_t bep_sensor_calibrate(fpc_com_chain_t *chain); - -/** - * @brief Sends HCP commands for removing the sensor calibration in the Bio MCU - * - * @param[in] chain HCP com chain - * @return ::fpc_bep_result_t - */ -fpc_bep_result_t bep_sensor_calibrate_remove(fpc_com_chain_t *chain); - -/** - * @brief Sends HCP commands for setting the sensor in sleep and waiting for finger in the Bio MCU - * - * @param[in] chain HCP com chain - * @param[in] timeout Timeout in ms - * @return ::fpc_bep_result_t - */ -fpc_bep_result_t bep_sensor_wait_for_finger(fpc_com_chain_t *chain, uint16_t timeout); - -/** - * @brief Sends HCP commands that returns when finger is not on the sensor in the Bio MCU - * - * @param[in] chain HCP com chain - * @param[in] timeout Timeout in ms - * @return ::fpc_bep_result_t - */ -fpc_bep_result_t bep_sensor_wait_finger_not_present(fpc_com_chain_t *chain, uint16_t timeout); - -#endif /* BEP_HOST_IF_H */ diff --git a/BMLite_example/inc/bmlite_if.h b/BMLite_example/inc/bmlite_if.h new file mode 100644 index 0000000..d5ebef3 --- /dev/null +++ b/BMLite_example/inc/bmlite_if.h @@ -0,0 +1,347 @@ +#ifndef BMLITE_IF_H +#define BMLITE_IF_H + +#include "hcp_tiny.h" +#include "bmlite_if_callbacks.h" + +/** + * @brief Build and send command to FPC BM-Lite and receive answer + * + * @param[in] chain - HCP com chain + * @param[in] cmd - BM-Lite command + * @param[in] arg_type - Argument without parameters + * set to ARG_NONE if the command has no argument + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bmlite_send_cmd(HCP_comm_t *chain, uint16_t cmd, uint16_t arg_type); + +/** + * @brief Build and send command with additiona argument with parameters + * + * @param[in] chain - HCP com chain + * @param[in] cmd - BM-Lite command + * @param[in] arg1_type - argument 1 without parameters + * set to ARG_NONE if the command has no argument without paramener + * @param[in] arg2_type - argument 2 + * @param[in] arg2_data - data pointer for argument 2 + * set to 0 if argument 2 has no parameter + * @param[in] arg2_length - length of data for argument 2 + * set to 0 if argument 2 has no parameter + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bmlite_send_cmd_arg(HCP_comm_t *chain, uint16_t cmd, uint16_t arg1_type, uint16_t arg2_type, void *arg2_data, uint16_t arg2_length); + +/** + * @brief Wait for finger present on sensor" + * + * @param[in] chain - HCP com chain + * @param[in] timeout - timeout (msec). Maximum timeout 65535 msec + * set to 0 for waiting indefinitely + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t sensor_wait_finger_present(HCP_comm_t *chain, uint16_t timeout); + +/** + * @brief Wait for finger not present on sensor" + * + * @param[in] chain - HCP com chain + * @param[in] timeout - timeout (msec). Maximum timeout 65535 msec + * set to 0 for waiting indefinitely + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t sensor_wait_finger_not_present(HCP_comm_t *chain, uint16_t timeout); + +/** + * @brief Wait for finger present on sensor and capture image" + * + * @param[in] chain - HCP com chain + * @param[in] timeout - timeout (msec). Maximum timeout 65535 msec + * set to 0 for waiting indefinitely + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bep_capture(HCP_comm_t *chain, uint16_t timeout); + +/** + * @brief Get size of captured image + * + * @param[in] chain - HCP com chain + * + * @param[out] size + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bep_image_get_size(HCP_comm_t *chain, uint32_t *size); + +/** + * @brief Allocates image buffer on FPC BM-LIte + * + * @param[in] chain - HCP com chain + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t image_create(HCP_comm_t *chain); + +/** + * @brief Deletes image buffer on FPC BM-LIte + * + * @param[in] chain - HCP com chain + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t image_delete(HCP_comm_t *chain); + +/** + * @brief Pull captured image from FPC BM-Lite + * + * @param[in] chain - HCP com chain + * + * @param[in] data - pointer to image buffer + * @param[in] size - size of the image buffer + * if buffer size is not enough the image + * will be truncated + * chain->arg.size will contain real size of the image + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bep_image_get(HCP_comm_t *chain, uint8_t *data, uint32_t size); + +/** + * @brief Push image to FPC BM-Lite + * + * @param[in] chain - HCP com chain + * + * @param[in] data - pointer to image buffer + * @param[in] size - size of the image buffer + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bep_image_put(HCP_comm_t *chain, uint8_t *data, uint32_t size); + +/** + * @brief Extract image features to prepare image for enrolling or matching + * + * @param[in] chain - HCP com chain + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bep_image_extract(HCP_comm_t *chain); + +/** + * @brief Identify prepared image against existing templates in Flash storage + * + * @param[in] chain - HCP com chain + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bep_identify(HCP_comm_t *chain); + +/** + * @brief Enroll finger. Created template must be saved to FLASH storage + * + * @param[in] chain - HCP com chain + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bep_enroll_finger(HCP_comm_t *chain); + +/** + * @brief Capture and identify finger against existing templates in Flash storage + * + * @param[in] chain - HCP com chain + * @param[in] timeout - timeout (msec). Maximum timeout 65535 msec + * set to 0 for waiting indefinitely + * + * @param[out] template_id - pointer for matched template ID + * @param[out] match - pointer to match result + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bep_identify_finger(HCP_comm_t *chain, uint32_t timeout, + uint16_t *template_id, bool *match); + +/** + * @brief Save template after enroll is finished to FLASH storage + * + * @param[in] chain - HCP com chain + * @param[out] template_id - template ID + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bep_template_save(HCP_comm_t *chain, uint16_t template_id); + +/** + * @brief Remove template from RAM + * + * @param[in] chain - HCP com chain + * @param[in] template_id - template ID + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bep_template_remove_ram(HCP_comm_t *chain); + +/** + * @brief Pull template stored in RAM from FPC BM-Lite + * + * @param[in] chain - HCP com chain + * + * @param[in] data - pointer to template buffer + * @param[in] size - size of the template buffer + * if buffer size is not enough the template + * will be truncated + * chain->arg.size will contain real size of the template + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bep_template_get(HCP_comm_t *chain, uint8_t *data, uint32_t size); + +/** + * @brief Push template to FPC BM-Lite and stored it to RAM + * + * @param[in] chain - HCP com chain + * + * @param[in] data - pointer to template buffer + * @param[in] size - size of the template buffer + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bep_template_put(HCP_comm_t *chain, uint8_t *data, uint16_t length); + +/** + * @brief Remove template from FLASH storage + * + * @param[in] chain - HCP com chain + * @param[in] template_id - template ID + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bep_template_remove(HCP_comm_t *chain, uint16_t template_id); + +/** + * @brief Remove all templates from FLASH storage + * + * @param[in] chain - HCP com chain + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bep_template_remove_all(HCP_comm_t *chain); + +/** + * @brief Copy template from FLASH storage to RAM + * + * @param[in] chain - HCP com chain + * @param[in] template_id - template ID + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bep_template_load_storage(HCP_comm_t *chain, uint16_t template_id); + +/** + * @brief Remove template from FLASH storage + * + * @param[in] chain - HCP com chain + * @param[out] template_id - template ID + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bep_template_get_count(HCP_comm_t *chain, uint16_t *count); + +/** + * @brief Get array of template ID stored on FPC BM-LIte + * + * @param[in] chain - HCP com chain + * @return ::fpc_bep_result_t + * chain->arg.data - pointer to array of uint16_t of IDs + * chain->arg.size - length of the array (in bytes). For calculating + * number of templates divide the arg.size by 2 + */ +fpc_bep_result_t bep_template_get_ids(HCP_comm_t *chain); + +/** + * @brief Software reset of FCP BM-Lite + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bep_sw_reset(HCP_comm_t *chain); + +/** + * @brief Calibrate FPC BM-LIte sensor and store calibration data to FLASH storage + * + * @param[in] chain - HCP com chain + * + * @return ::fpc_bep_result_t + * + * FPC BM-Lite must be restarted to activate new calibration data + */ +fpc_bep_result_t bep_sensor_calibrate(HCP_comm_t *chain); + +/** + * @brief Remove FPC BM-LIte sensor calibration data from FLASH storage + * + * @param[in] chain - HCP com chain + * + * @return ::fpc_bep_result_t + * + * FPC BM-Lite must be restarted to activate + */ +fpc_bep_result_t bep_sensor_calibrate_remove(HCP_comm_t *chain); + +/** + * @brief Get version of FPC BM-LIte firmware + * + * @param[in] chain - HCP com chain + * @param[in] version - pointer to data buffer + * @param[in] size - size of the data buffer + * if buffer size is not enough the data + * will be truncated + * chain->arg.size will contain real size of the data + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bep_version(HCP_comm_t *chain, char *version, int len); + +/** + * @brief Get version of FPC BM-LIte firmware + * + * @param[in] chain - HCP com chain + * @param[in] unique_id - pointer to data buffer + * chain->arg.size will contain real size of the data + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bep_unique_id_get(HCP_comm_t *chain, uint8_t *unique_id); + +/** + * @brief Set requested UART communication speed + * + * @param[in] chain - HCP com chain + * @param[in] speed - UART speed + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bep_uart_speed_set(HCP_comm_t *chain, uint32_t speed); + +/** + * @brief Get current UART communication speed + * + * @param[in] chain - HCP com chain + * @param[out] speed - UART speed + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bep_uart_speed_get(HCP_comm_t *chain, uint32_t *speed); + +/** + * @brief Reset FPC BM-Lite fingerprint sensor + * + * @param[in] chain - HCP com chain + * + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bep_sensor_reset(HCP_comm_t *chain); + +#endif \ No newline at end of file diff --git a/BMLite_example/inc/bmlite_if_callbacks.h b/BMLite_example/inc/bmlite_if_callbacks.h new file mode 100644 index 0000000..de22022 --- /dev/null +++ b/BMLite_example/inc/bmlite_if_callbacks.h @@ -0,0 +1,92 @@ +#ifndef BMLITE_IF_CALLBACKS_H +#define BMLITE_IF_CALLBACKS_H +#include + +#ifndef BMLITE_USE_CALLBACK + #define bmlite_on_error(error, value) + #define bmlite_on_start_capture() + #define bmlite_on_finish_capture() + #define bmlite_on_finish_enroll() + #define bmlite_on_start_enroll() + #define bmlite_on_start_enrollcapture() + #define bmlite_on_finish_enrollcapture() + #define bmlite_on_identify_start() + #define bmlite_on_identify_finish() + +#else + +typedef enum { + BMLITE_ERROR_OK = 0, + BMLITE_ERROR_CAPTURE, + BMLITE_ERROR_CAPTURE_START, + BMLITE_ERROR_ENROLL_START, + BMLITE_ERROR_ENROLL_ADD, + BMLITE_ERROR_ENROLL_FINISH, + BMLITE_ERROR_WRONG_ANSWER, + BMLITE_ERROR_FINGER_WAIT, + BMLITE_ERROR_IDENTYFY, + BMLITE_ERROR_TEMPLATE_SAVE, + BMLITE_ERROR_TEMPLATE_DELETE, + BMLITE_ERROR_TEMPLATE_COUNT, + BMLITE_ERROR_TEMPLATE_GETIDS, + BMLITE_ERROR_IMAGE_EXTRACT, + BMLITE_ERROR_IMAGE_GETSIZE, + BMLITE_ERROR_IMAGE_GET, + BMLITE_ERROR_GETVERSION, + BMLITE_ERROR_SW_RESET, + BMLITE_ERROR_CALIBRATE, + BMLITE_ERROR_CALIBRATE_DELETE, + BMLITE_ERROR_SEND_CMD, + BMLITE_ERROR_GET_ARG, +} bmlite_error_t; + +/** + * @brief Error Callback function + * + * @param[in] Callback Error Code + * @param[in] BEP result code + */ +void bmlite_on_error(bmlite_error_t error, int32_t value); + +/** + * @brief Starting Capture Callback function + */ +void bmlite_on_start_capture(); + +/** + * @brief Finishing Capture Callback function + */ +void bmlite_on_finish_capture(); + +/** + * @brief Starting Enroll Callback function + */ +void bmlite_on_start_enroll(); + +/** + * @brief Finishing Enroll Callback function + */ +void bmlite_on_finish_enroll(); + +/** + * @brief Starting Capture for Enroll Callback function + */ +void bmlite_on_start_enrollcapture(); + +/** + * @brief Finishing Capture for Enroll Callback function + */ +void bmlite_on_finish_enrollcapture(); + +/** + * @brief Starting Identify Callback function + */ +void bmlite_on_identify_start(); + +/** + * @brief Finishing Identify Callback function + */ +void bmlite_on_identify_finish(); +#endif // BMLITE_USE_CALLBACK + +#endif \ No newline at end of file diff --git a/BMLite_example/inc/com_app_cleartext.h b/BMLite_example/inc/com_app_cleartext.h deleted file mode 100644 index 0c9a972..0000000 --- a/BMLite_example/inc/com_app_cleartext.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2020 Fingerprint Cards AB - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file com_app_cleartext.h - * @brief TODO - */ - -#ifndef COM_APP_CLEARTEXT_H -#define COM_APP_CLEARTEXT_H - -#include "fpc_com_chain.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** - * Sends a packet over the physical link in blocking mode. - * - * @param packet Packet to transmit. - * @param chain The transmit chain to use. - * @return ::fpc_com_result_t - */ -fpc_com_result_t com_app_clr_transmit(fpc_com_chain_t *chain); - -/** - * Receives a packet from the physical link. - * - * @param packet Packet to populate. - * @param chain The transmit chain to use. - * @return ::fpc_com_result_t - */ -fpc_com_result_t com_app_clr_receive(fpc_com_chain_t *chain); - -/** - * @brief Returns the overhead of the layer. - * @return Overhead size in bytes. - */ -uint16_t com_app_clr_get_overhead(uint16_t *offset); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* COM_APP_CLEARTEXT_H */ diff --git a/BMLite_example/inc/com_common.h b/BMLite_example/inc/com_common.h deleted file mode 100644 index 83ef972..0000000 --- a/BMLite_example/inc/com_common.h +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright (c) 2020 Fingerprint Cards AB - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * 04/14/2020: Added SPI interfcae support - */ - - -#ifndef COM_COMMON_H -#define COM_COMMON_H - -/** - * @file com_common.h - * @brief Communication common interface. - */ - -#include -#include - -#include "fpc_bep_types.h" -#include "fpc_hcp_common.h" -#include "fpc_com_chain.h" - -/** - * @brief Allocates or assigns memory for arguments during HCP packet reassembly. - - * @param[in] cmd HCP command. - * @param[in] arg HCP argument. - * @param[in] size size of allocation. - * @param[out] free_data Should data be freed by caller. - * @param[in] context User defined context pointer. - * - * @return Pointer to allocation or NULL if allocation failed. - */ -void *argument_allocator(fpc_hcp_cmd_t cmd, fpc_hcp_arg_t arg, uint16_t size, bool *free_data, - void *context); - -/** - * @brief Frees memory for arguments during HCP packet destruction. - * - * @param[in] cmd HCP Command. - * @param[in] arg_data Argument data. - * @param[in] context User defined context pointer. - */ -void argument_free(fpc_hcp_cmd_t cmd, fpc_hcp_arg_data_t *arg_data, void *context); - -/** - * @brief Prints packet information to the log. - * - * @param[in] packet Packet to print. - * @param[in] msg Optional message to print. Set NULL if not needed. - */ -void print_packet(fpc_hcp_packet_t *packet, const char *msg); - -/** - * @brief Initialize the chain used during communication with the host. - * - * @param[in, out] chain The chain structure to populate. - * @param[in] buffer The buffer to use during communication. - * @param[in] size An array of two sizes, one for the TX buffer size and one for the RX. - * @param[in] context Application context. - * @param[in] spi_enabled Use SPI instead of COM. - */ -void init_com_chain(fpc_com_chain_t *chain, uint8_t *buffer, uint16_t size[2], void *context); - -/** - * @brief Convert a COM result from HCP to a BEP result. - * - * @param[in] result COM result to convert. - * @return ::fpc_bep_result_t - */ -fpc_bep_result_t com_to_bep_result(fpc_com_result_t result); - -/** - * @brief Allocate and add data to an argument. - * - * @param[in, out] cmd Command to add argument to. - * @param[in] arg Argument to add. - * @param[in] data Data to copy to allocated memory. - * @param[in] size Size of data. - * @return ::fpc_bep_result_t - */ -fpc_bep_result_t arg_add(fpc_hcp_packet_t *cmd, fpc_hcp_arg_t arg, const void *data, uint16_t size); - -#endif /* COM_COMMON_H */ diff --git a/hcp/inc/fpc_hcp_common.h b/BMLite_example/inc/fpc_hcp_common.h similarity index 100% rename from hcp/inc/fpc_hcp_common.h rename to BMLite_example/inc/fpc_hcp_common.h diff --git a/BMLite_example/inc/hcp_tiny.h b/BMLite_example/inc/hcp_tiny.h new file mode 100644 index 0000000..e19c673 --- /dev/null +++ b/BMLite_example/inc/hcp_tiny.h @@ -0,0 +1,63 @@ +#ifndef HCP_H +#define HCP_H + +#include "fpc_bep_types.h" +#include "fpc_hcp_common.h" + +/** MTU for HCP physical layer */ +#define MTU 256 + +/** Communication acknowledge definition */ +#define FPC_BEP_ACK 0x7f01ff7f + +typedef struct { + uint32_t size; + uint8_t *data; +} HCP_arg_t; + +typedef struct { + /** Send data to BM-Lite */ + fpc_bep_result_t (*write) (uint16_t, const uint8_t *, uint32_t, void *); + /** Receive data from BM-Lite */ + fpc_bep_result_t (*read)(uint16_t, uint8_t *, uint32_t, void *); + /** Receive timeout (msec). Applys ONLY to receiving packet from BM-Lite on physical layer */ + uint32_t phy_rx_timeout; + /** Data buffer for application layer */ + uint8_t *pkt_buffer; + /** Size of data buffer */ + uint32_t pkt_size_max; + /** Current size of incoming or outcoming command packet */ + uint32_t pkt_size; + /** Buffer of MTU size for transport layer */ + uint8_t *txrx_buffer; + /** Values of last argument pulled by bmlite_get_arg + Values are valid only right after bmlite_get_arg() call */ + HCP_arg_t arg; + /** Result of execution command on BM-Lite */ + fpc_bep_result_t bep_result; +} HCP_comm_t; + +/** + * @brief Helper function for receiving HCP commands + + * @param command_id command to send + * @param arg_key1 first key to receive + * @param arg_data1 first argument data + * @param arg_data1_length first argument data length + * @param arg_key2 second key to receive + * @param arg_data2 second argument data + * @param arg_data2_length second argument + * @return ::fpc_bep_result_t + */ +fpc_bep_result_t bmlite_receive(HCP_comm_t *hcp_comm); +fpc_bep_result_t bmlite_send(HCP_comm_t *hcp_comm); +fpc_bep_result_t bmlite_tranceive(HCP_comm_t *hcp_comm); + +fpc_bep_result_t bmlite_init_cmd(HCP_comm_t *hcp_comm, uint16_t cmd, uint16_t arg); +fpc_bep_result_t bmlite_add_arg(HCP_comm_t *hcp_comm, uint16_t arg, void *data, uint16_t size); +fpc_bep_result_t bmlite_get_arg(HCP_comm_t *hcp_comm, uint16_t arg_type); +fpc_bep_result_t bmlite_copy_arg(HCP_comm_t *hcp_comm, uint16_t arg_key, void *arg_data, uint16_t arg_data_length); + + + +#endif \ No newline at end of file diff --git a/BMLite_example/inc/platform.h b/BMLite_example/inc/platform.h index 89ca9f4..2e55478 100644 --- a/BMLite_example/inc/platform.h +++ b/BMLite_example/inc/platform.h @@ -26,7 +26,7 @@ #include #include -#include "fpc_com_result.h" +#include "fpc_bep_types.h" /** * @brief LED status. @@ -64,7 +64,7 @@ void platform_bmlite_reset(void); * * @return ::fpc_com_result_t */ -fpc_com_result_t platform_bmlite_send(uint16_t size, const uint8_t *data, uint32_t timeout, +fpc_bep_result_t platform_bmlite_send(uint16_t size, const uint8_t *data, uint32_t timeout, void *session); /** @@ -76,7 +76,7 @@ fpc_com_result_t platform_bmlite_send(uint16_t size, const uint8_t *data, uint32 * * @return ::fpc_com_result_t */ -fpc_com_result_t platform_bmlite_receive(uint16_t size, uint8_t *data, uint32_t timeout, +fpc_bep_result_t platform_bmlite_receive(uint16_t size, uint8_t *data, uint32_t timeout, void *session); /** @@ -96,4 +96,12 @@ void platform_sw_reset(void) __attribute__((__noreturn__)); */ uint32_t platform_get_button_press_time(void); +/** + * @brief Check if button was pressed and released. + * + * @return Button press time in milli seconds. + */ +uint32_t platform_check_button_pressed(void); + + #endif /* PLATFORM_H */ diff --git a/BMLite_example/src/bep_host_if.c b/BMLite_example/src/bep_host_if.c deleted file mode 100644 index abb6945..0000000 --- a/BMLite_example/src/bep_host_if.c +++ /dev/null @@ -1,534 +0,0 @@ -/* - * Copyright (c) 2020 Fingerprint Cards AB - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file bep_host_if.c - * @brief BEP Host Interface implementation. - */ - -#include -#include -#include - -#include "fpc_bep_types.h" -#include "fpc_hcp_common.h" -#include "fpc_com_result.h" -#include "fpc_hcp.h" -#include "platform.h" -#include "com_common.h" - -#include "bep_host_if.h" - -/** Returns the number of elements in an array. */ -#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) - -#define RECEIVE_TIMEOUT 10 - -/** Maximum attempts for capture image */ -static const uint8_t MAX_CAPTURE_ATTEMPTS = 15U; -static const uint16_t CAPTURE_TIMEOUT = 3000; - -/** - * @brief Mock callback functions - */ -__attribute__((weak)) void bmlite_on_error(bmlite_error_t error, int32_t value) { (void)error; (void)value; } - -__attribute__((weak)) void bmlite_on_start_capture() {} -__attribute__((weak)) void bmlite_on_finish_capture() {} - -__attribute__((weak)) void bmlite_on_finish_enroll() {} -__attribute__((weak)) void bmlite_on_start_enroll() {} - -__attribute__((weak)) void bmlite_on_start_enrollcapture() {} -__attribute__((weak)) void bmlite_on_finish_enrollcapture() {} - -__attribute__((weak)) void bmlite_on_identify_start() {} -__attribute__((weak)) void bmlite_on_identify_finish() {} - - - -/** - * @brief Helper function for sending HCP commands - * - * @param chain HCP communication chain - * @param command_id command to send - * @param arg_key1 first key to add to the command - * @param arg_data1 first argument data to add - * @param arg_data1_length first data length of argument data - * @param arg_key2 second key to add to the command - * @param arg_data2 second argument data to add - * @param arg_data2_length second data length of argument data - * @return ::fpc_bep_result_t - */ -static fpc_bep_result_t send_command_args2(fpc_com_chain_t *chain, fpc_hcp_cmd_t command_id, - fpc_hcp_arg_t arg_key1, void *arg_data1, uint16_t arg_data1_length, - fpc_hcp_arg_t arg_key2, void *arg_data2, uint16_t arg_data2_length) -{ - fpc_hcp_packet_t command; - fpc_bep_result_t bep_result; - fpc_com_result_t com_result; - fpc_hcp_arg_data_t args_tx[10] = {{ 0 }}; - - memset(&command, 0x0, sizeof(command)); - command.arguments = args_tx; - command.num_args = ARRAY_SIZE(args_tx); - command.id = command_id; - - if (arg_key1 != ARG_NONE) { - if (!fpc_hcp_arg_add(&command, arg_key1, arg_data1_length, false, arg_data1)) { - bep_result = FPC_BEP_RESULT_NO_MEMORY; - goto exit; - } - } - - if (arg_key2 != ARG_NONE) { - if (!fpc_hcp_arg_add(&command, arg_key2, arg_data2_length, false, arg_data2)) { - bep_result = FPC_BEP_RESULT_NO_MEMORY; - goto exit; - } - } - - com_result = fpc_hcp_transmit(&command, chain); - bep_result = com_to_bep_result(com_result); - - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_SEND_CMD, bep_result); - } - -exit: - fpc_hcp_free(chain, &command); - - return bep_result; -} - -static fpc_bep_result_t send_command_no_args(fpc_com_chain_t *chain, fpc_hcp_cmd_t command_id) -{ - return send_command_args2(chain, command_id, ARG_NONE, NULL, 0, ARG_NONE, NULL, 0); -} - -static fpc_bep_result_t send_command(fpc_com_chain_t *chain, fpc_hcp_cmd_t command_id, - fpc_hcp_arg_t arg_key, void *arg_data, uint16_t arg_data_length) -{ - return send_command_args2(chain, command_id, arg_key, arg_data, arg_data_length, - ARG_NONE, NULL, 0); -} - -/** - * @brief Helper function for receiving HCP commands - - * @param command_id command to send - * @param arg_key1 first key to receive - * @param arg_data1 first argument data - * @param arg_data1_length first argument data length - * @param arg_key2 second key to receive - * @param arg_data2 second argument data - * @param arg_data2_length second argument - * @return ::fpc_bep_result_t - */ -static fpc_bep_result_t receive_result_args2(fpc_com_chain_t *chain, - fpc_hcp_arg_t arg_key1, void *arg_data1, uint16_t arg_data1_length, - fpc_hcp_arg_t arg_key2, void *arg_data2, uint16_t arg_data2_length) -{ - fpc_hcp_packet_t response; - fpc_hcp_arg_data_t args_rx[10] = {{ 0 }}; - fpc_bep_result_t bep_result = FPC_BEP_RESULT_GENERAL_ERROR; - fpc_hcp_arg_data_t *arg_data; - - memset(&response, 0x0, sizeof(fpc_hcp_cmd_t)); - response.arguments = args_rx; - response.num_args = ARRAY_SIZE(args_rx); - - do { - fpc_com_result_t com_result = fpc_hcp_receive(&response, chain); - bep_result = com_to_bep_result(com_result); - } while (bep_result == FPC_BEP_RESULT_TIMEOUT); - - if (bep_result != FPC_BEP_RESULT_OK) { - goto exit; - } - - /* Check bep result first */ - arg_data = fpc_hcp_arg_get(&response, ARG_RESULT); - if (arg_data) { - bep_result = *(int8_t *)arg_data->data; - } else { - bep_result = FPC_BEP_RESULT_INVALID_ARGUMENT; - } - if (bep_result != FPC_BEP_RESULT_OK) { - goto exit; - } - - /* Get first argument */ - if (arg_key1 != ARG_NONE) { - arg_data = fpc_hcp_arg_get(&response, arg_key1); - if (arg_data && arg_data->size <= arg_data1_length) { - memcpy(arg_data1, arg_data->data, arg_data->size); - } else { - bep_result = FPC_BEP_RESULT_INVALID_ARGUMENT; - goto exit; - } - } - - /* Get second argument */ - if (arg_key2 != ARG_NONE) { - arg_data = fpc_hcp_arg_get(&response, arg_key2); - if (arg_data && arg_data->size <= arg_data2_length) { - memcpy(arg_data2, arg_data->data, arg_data->size); - } - } - -exit: - fpc_hcp_free(chain, &response); - - return bep_result; -} - -static fpc_bep_result_t receive_result_no_args(fpc_com_chain_t *chain) -{ - return receive_result_args2(chain, ARG_NONE, NULL, 0, ARG_NONE, NULL, 0); -} - -static fpc_bep_result_t receive_result_args1(fpc_com_chain_t *chain, - fpc_hcp_arg_t arg_key, void *arg_data, uint16_t arg_data_length) -{ - return receive_result_args2(chain, arg_key, arg_data, arg_data_length, ARG_NONE, NULL, 0); -} - - -fpc_bep_result_t bep_capture(fpc_com_chain_t *chain, uint16_t timeout) -{ - fpc_bep_result_t bep_result; - - /* Capture finger down */ - bep_result = send_command(chain, CMD_CAPTURE, ARG_TIMEOUT, &timeout, sizeof(timeout)); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_CAPTURE_START, bep_result); - return bep_result; - } - - bmlite_on_start_capture(); - bep_result = receive_result_no_args(chain); - bmlite_on_finish_capture(); - - return bep_result; -} - -fpc_bep_result_t bep_enroll_finger(fpc_com_chain_t *chain) -{ - uint32_t samples_remaining = 0; - fpc_bep_result_t bep_result = FPC_BEP_RESULT_OK; - bool enroll_done = false; - - bmlite_on_start_enroll(); - - /* Enroll start */ - bep_result = send_command(chain, CMD_ENROLL, ARG_START, NULL, 0); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_ENROLL_START, bep_result); - goto exit; - } - - bep_result = receive_result_no_args(chain); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_WRONG_ANSWER, bep_result); - goto exit; - } - - for (uint8_t i = 0; i < MAX_CAPTURE_ATTEMPTS; ++i) { - - bmlite_on_start_enrollcapture(); - bep_result = bep_capture(chain, CAPTURE_TIMEOUT); - bmlite_on_finish_enrollcapture(); - - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_CAPTURE, bep_result); - break; - } - - /* Enroll add */ - bep_result = send_command(chain, CMD_ENROLL, ARG_ADD, NULL, 0); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_ENROLL_ADD, bep_result); - continue; - } - - bep_result = receive_result_args1(chain, ARG_COUNT, &samples_remaining, - sizeof(samples_remaining)); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_WRONG_ANSWER, bep_result); - continue; - } - - if (samples_remaining == 0U) { - enroll_done = true; - break; - } - - bep_result = send_command(chain, CMD_WAIT, ARG_FINGER_UP, NULL, 0); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_FINGER_WAIT, bep_result); - continue; - } - - /* Wait for finger to be lifted from sensor */ - bep_result = receive_result_no_args(chain); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_WRONG_ANSWER, bep_result); - continue; - } - } - - bep_result = send_command(chain, CMD_ENROLL, ARG_FINISH, NULL, 0); - if (bep_result == FPC_BEP_RESULT_OK) { - bep_result = receive_result_no_args(chain); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_ENROLL_FINISH, bep_result); - } - } - -exit: - bmlite_on_finish_enroll(); - return (!enroll_done) ? FPC_BEP_RESULT_GENERAL_ERROR : bep_result; -} - -fpc_bep_result_t bep_identify_finger(fpc_com_chain_t *chain, uint16_t *template_id, bool *match) -{ - fpc_bep_result_t bep_result = FPC_BEP_RESULT_OK; - - *match = false; - - bmlite_on_identify_start(); - bep_result = bep_capture(chain, CAPTURE_TIMEOUT); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_CAPTURE, bep_result); - goto exit; - } - - bep_result = bep_image_extract(chain); - if (bep_result != FPC_BEP_RESULT_OK) { - goto exit; - } - - bep_result = send_command(chain, CMD_IDENTIFY, ARG_NONE, NULL, 0); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_IDENTYFY, bep_result); - goto exit; - } - - bep_result = receive_result_args2(chain, ARG_MATCH, match, sizeof(bool), - ARG_ID, template_id, sizeof(uint16_t)); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_WRONG_ANSWER, bep_result); - goto exit; - } - -exit: - bmlite_on_identify_finish(); - return bep_result; -} - -fpc_bep_result_t bep_save_template(fpc_com_chain_t *chain, uint16_t template_id) -{ - fpc_bep_result_t bep_result = FPC_BEP_RESULT_OK; - - bep_result = send_command_args2(chain, CMD_TEMPLATE, ARG_SAVE, NULL, 0, ARG_ID, &template_id, - sizeof(template_id)); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_TEMPLATE_SAVE, bep_result); - return bep_result; - } - - return receive_result_no_args(chain); -} - -fpc_bep_result_t bep_delete_template(fpc_com_chain_t *chain, uint16_t template_id) -{ - fpc_bep_result_t bep_result = FPC_BEP_RESULT_OK; - - if (template_id == REMOVE_ID_ALL_TEMPLATES) { - bep_result = send_command_args2(chain, CMD_STORAGE_TEMPLATE, ARG_DELETE, NULL, 0, - ARG_ALL, NULL, 0); - } else { - bep_result = send_command_args2(chain, CMD_STORAGE_TEMPLATE, ARG_DELETE, NULL, 0, - ARG_ID, &template_id, sizeof(template_id)); - } - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_TEMPLATE_DELETE, bep_result); - return bep_result; - } - - return receive_result_no_args(chain); -} - -fpc_bep_result_t bep_get_template_count(fpc_com_chain_t *chain, uint32_t *template_count) -{ - fpc_bep_result_t bep_result = FPC_BEP_RESULT_OK; - - bep_result = send_command(chain, CMD_STORAGE_TEMPLATE, ARG_COUNT, NULL, 0); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_TEMPLATE_COUNT, bep_result); - return bep_result; - } - - bep_result = receive_result_args1(chain, ARG_COUNT, template_count, sizeof(template_count[0])); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_WRONG_ANSWER, bep_result); - return bep_result; - } - - return bep_result; -} - -fpc_bep_result_t bep_get_template_ids(fpc_com_chain_t *chain, uint16_t *template_ids, - uint32_t nof_templates) -{ - fpc_bep_result_t bep_result = FPC_BEP_RESULT_OK; - - bep_result = send_command(chain, CMD_STORAGE_TEMPLATE, ARG_ID, NULL, 0); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_TEMPLATE_GETIDS, bep_result); - return bep_result; - } - - bep_result = receive_result_args1(chain, ARG_DATA, template_ids, nof_templates * - sizeof(template_ids[0])); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_WRONG_ANSWER, bep_result); - - return bep_result; - } - - return bep_result; -} - -fpc_bep_result_t bep_image_extract(fpc_com_chain_t *chain) -{ - fpc_bep_result_t bep_result; - - bep_result = send_command(chain, CMD_IMAGE, ARG_EXTRACT, NULL, 0); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_IMAGE_EXTRACT, bep_result); - return bep_result; - } - - return receive_result_no_args(chain); -} - -fpc_bep_result_t bep_image_get_size(fpc_com_chain_t *chain, uint32_t *size) -{ - fpc_bep_result_t bep_result; - - bep_result = send_command(chain, CMD_IMAGE, ARG_SIZE, NULL, 0); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_IMAGE_GETSIZE, bep_result); - return bep_result; - } - - return receive_result_args1(chain, ARG_SIZE, size, sizeof(size)); -} - -fpc_bep_result_t bep_image_get(fpc_com_chain_t *chain, uint8_t *data, uint32_t size) -{ - fpc_bep_result_t bep_result; - - bep_result = send_command(chain, CMD_IMAGE, ARG_UPLOAD, NULL, 0); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_IMAGE_GET, bep_result); - return bep_result; - } - - return receive_result_args1(chain, ARG_DATA, data, size); -} - -fpc_bep_result_t bep_version(fpc_com_chain_t *chain, char *version, int len) -{ - fpc_bep_result_t bep_result; - - bep_result = send_command_args2(chain, CMD_INFO, ARG_GET, NULL, 0, ARG_VERSION, NULL, 0); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_GETVERSION, bep_result); - return bep_result; - } - - return receive_result_args1(chain, ARG_VERSION, version, len); -} - -fpc_bep_result_t bep_reset(fpc_com_chain_t *chain) -{ - fpc_bep_result_t bep_result; - - bep_result = send_command_no_args(chain, CMD_RESET); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_SW_RESET, bep_result); - return bep_result; - } - - return receive_result_no_args(chain); -} - -fpc_bep_result_t bep_sensor_calibrate(fpc_com_chain_t *chain) -{ - fpc_bep_result_t bep_result; - - bep_result = send_command_no_args(chain, CMD_STORAGE_CALIBRATION); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_CALIBRATE, bep_result); - return bep_result; - } - - return receive_result_no_args(chain); -} - -fpc_bep_result_t bep_sensor_calibrate_remove(fpc_com_chain_t *chain) -{ - fpc_bep_result_t bep_result; - - bep_result = send_command(chain, CMD_STORAGE_CALIBRATION, ARG_DELETE, NULL, 0); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_CALIBRATE_DELETE, bep_result); - return bep_result; - } - - return receive_result_no_args(chain); -} - -fpc_bep_result_t bep_sensor_wait_for_finger(fpc_com_chain_t *chain, uint16_t timeout) -{ - fpc_bep_result_t bep_result; - - bep_result = send_command(chain, CMD_WAIT, ARG_FINGER_DOWN, NULL, 0); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_FINGER_WAIT, bep_result); - return bep_result; - } - - /* Wait for finger on sensor */ - return receive_result_no_args(chain); -} - -fpc_bep_result_t bep_sensor_wait_finger_not_present(fpc_com_chain_t *chain, uint16_t timeout) -{ - fpc_bep_result_t bep_result; - - bep_result = send_command(chain, CMD_WAIT, ARG_FINGER_UP, NULL, 0); - if (bep_result != FPC_BEP_RESULT_OK) { - bmlite_on_error(BMLITE_ERROR_FINGER_WAIT, bep_result); - return bep_result; - } - - /* Wait for finger to be lifted from sensor */ - return receive_result_no_args(chain); -} diff --git a/BMLite_example/src/bmlite_if.c b/BMLite_example/src/bmlite_if.c new file mode 100644 index 0000000..dcd8947 --- /dev/null +++ b/BMLite_example/src/bmlite_if.c @@ -0,0 +1,308 @@ +#include "hcp_tiny.h" +#include "bmlite_if.h" +#include "bmlite_hal.h" +#include "platform.h" +#include + +#include "bmlite_if_callbacks.h" + +#define MAX_CAPTURE_ATTEMPTS 15 +#define CAPTURE_TIMEOUT 3000 + +#define exit_if_err(c) { bep_result = c; if(bep_result) goto exit; } + +#define assert(c) { fpc_bep_result_t res = c; if(res) return res; } + +#ifdef BMLITE_USE_CALLBACK +/** + * @brief Mock callback functions + */ +__attribute__((weak)) void bmlite_on_error(bmlite_error_t error, int32_t value) { (void)error; (void)value; } + +__attribute__((weak)) void bmlite_on_start_capture() {} +__attribute__((weak)) void bmlite_on_finish_capture() {} + +__attribute__((weak)) void bmlite_on_start_enroll() {} +__attribute__((weak)) void bmlite_on_finish_enroll() {} + +__attribute__((weak)) void bmlite_on_start_enrollcapture() {} +__attribute__((weak)) void bmlite_on_finish_enrollcapture() {} + +__attribute__((weak)) void bmlite_on_identify_start() {} +__attribute__((weak)) void bmlite_on_identify_finish() {} +#endif + +fpc_bep_result_t bmlite_send_cmd(HCP_comm_t *chain, uint16_t cmd, uint16_t arg_type) +{ + assert(bmlite_init_cmd(chain, cmd, arg_type)); + return bmlite_tranceive(chain); +} + +fpc_bep_result_t bmlite_send_cmd_arg(HCP_comm_t *chain, uint16_t cmd, uint16_t arg1_type, uint16_t arg2_type, void *arg2_data, uint16_t arg2_length) +{ + assert(bmlite_init_cmd(chain, cmd, arg1_type)); + assert(bmlite_add_arg(chain, arg2_type, arg2_data, arg2_length)); + + return bmlite_tranceive(chain); +} + +fpc_bep_result_t sensor_wait_finger_present(HCP_comm_t *chain, uint16_t timeout) +{ + fpc_bep_result_t bep_result; + uint32_t prev_timeout = chain->phy_rx_timeout; + + bmlite_on_start_capture(); + chain->phy_rx_timeout = timeout; + bep_result = bmlite_send_cmd_arg(chain, CMD_WAIT, ARG_FINGER_DOWN, ARG_TIMEOUT, &timeout, sizeof(timeout)); + chain->phy_rx_timeout = prev_timeout; + bmlite_on_finish_capture(); + + return bep_result; +} + +fpc_bep_result_t sensor_wait_finger_not_present(HCP_comm_t *chain, uint16_t timeout) +{ + fpc_bep_result_t bep_result; + uint32_t prev_timeout = chain->phy_rx_timeout; + + chain->phy_rx_timeout = timeout; + bep_result = bmlite_send_cmd_arg(chain, CMD_WAIT, ARG_FINGER_UP, ARG_TIMEOUT, &timeout, sizeof(timeout)); + chain->phy_rx_timeout = prev_timeout; + + return bep_result; +} + +fpc_bep_result_t bep_capture(HCP_comm_t *chain, uint16_t timeout) +{ + fpc_bep_result_t bep_result; + uint32_t prev_timeout = chain->phy_rx_timeout; + + bmlite_on_start_capture(); + chain->phy_rx_timeout = timeout; + bep_result = bmlite_send_cmd_arg(chain, CMD_CAPTURE, ARG_NONE, ARG_TIMEOUT, &timeout, sizeof(timeout)); + chain->phy_rx_timeout = prev_timeout; + bmlite_on_finish_capture(); + + return bep_result; +} + +fpc_bep_result_t bep_image_get_size(HCP_comm_t *chain, uint32_t *size) +{ + assert(bmlite_send_cmd(chain, CMD_IMAGE, ARG_SIZE)); + assert(bmlite_get_arg(chain, ARG_SIZE)); + + *size = *(uint32_t*)chain->arg.data; + + return FPC_BEP_RESULT_OK; +} + +fpc_bep_result_t image_create(HCP_comm_t *chain) +{ + return bmlite_send_cmd(chain, CMD_IMAGE, ARG_CREATE); +} + +fpc_bep_result_t image_delete(HCP_comm_t *chain) +{ + return bmlite_send_cmd(chain, CMD_IMAGE, ARG_DELETE); +} + +fpc_bep_result_t bep_image_get(HCP_comm_t *chain, uint8_t *data, uint32_t size) +{ + assert(bmlite_send_cmd(chain, CMD_IMAGE, ARG_UPLOAD)); + return bmlite_copy_arg(chain, ARG_DATA, data, size); +} + +fpc_bep_result_t bep_image_put(HCP_comm_t *chain, uint8_t *data, uint32_t size) +{ + return bmlite_send_cmd_arg(chain, CMD_IMAGE, ARG_DOWNLOAD, ARG_DATA, data, size); +} + +fpc_bep_result_t bep_image_extract(HCP_comm_t *chain) +{ + return bmlite_send_cmd(chain, CMD_IMAGE, ARG_EXTRACT); +} + +fpc_bep_result_t bep_identify(HCP_comm_t *chain) +{ + return bmlite_send_cmd(chain, CMD_IDENTIFY, ARG_NONE); +} + +fpc_bep_result_t bep_enroll_finger(HCP_comm_t *chain) +{ + uint32_t samples_remaining = 0; + fpc_bep_result_t bep_result = FPC_BEP_RESULT_OK; + bool enroll_done = false; + + bmlite_on_start_enroll(); + /* Enroll start */ + exit_if_err(bmlite_send_cmd(chain, CMD_ENROLL, ARG_START)); + + for (uint8_t i = 0; i < MAX_CAPTURE_ATTEMPTS; ++i) { + + bmlite_on_start_enrollcapture(); + bep_result = bep_capture(chain, CAPTURE_TIMEOUT); + bmlite_on_finish_enrollcapture(); + + if (bep_result != FPC_BEP_RESULT_OK) { + continue; + } + + /* Enroll add */ + bep_result = bmlite_send_cmd(chain, CMD_ENROLL, ARG_ADD); + if (bep_result != FPC_BEP_RESULT_OK) { + continue; + } + + bmlite_get_arg(chain, ARG_COUNT); + samples_remaining = *(uint32_t *)chain->arg.data; + +// log_info("Enroll samples remaining: %d\n", samples_remaining); + + /* Break enrolling if we can't collect enough correct images for enroll*/ + if (samples_remaining == 0U) { + enroll_done = true; + break; + } + + sensor_wait_finger_not_present(chain, 0); + } + + bep_result = bmlite_send_cmd(chain, CMD_ENROLL, ARG_FINISH); + +exit: + bmlite_on_finish_enroll(); + return (!enroll_done) ? FPC_BEP_RESULT_GENERAL_ERROR : bep_result; +} + +fpc_bep_result_t bep_identify_finger(HCP_comm_t *chain, uint32_t timeout, uint16_t *template_id, bool *match) +{ + fpc_bep_result_t bep_result; + *match = false; + + bmlite_on_identify_start(); + + exit_if_err(bep_capture(chain, timeout)); + exit_if_err(bep_image_extract(chain)); + exit_if_err(bep_identify(chain)); + exit_if_err(bmlite_get_arg(chain, ARG_MATCH)); + *match = *(bool *)chain->arg.data; + if(*match) { + bmlite_get_arg(chain, ARG_ID); + *template_id = *(uint16_t *)chain->arg.data; + // Delay for possible updating template on BM-Lite + hal_timebase_busy_wait(50); + } + + bep_result = sensor_wait_finger_not_present(chain, 0); + +exit: + bmlite_on_identify_finish(); + return bep_result; +} + +fpc_bep_result_t bep_template_save(HCP_comm_t *chain, uint16_t template_id) +{ + return bmlite_send_cmd_arg(chain, CMD_TEMPLATE, ARG_SAVE, ARG_ID, &template_id, sizeof(template_id)); +} + +fpc_bep_result_t bep_template_remove_ram(HCP_comm_t *chain) +{ + return bmlite_send_cmd(chain, CMD_TEMPLATE, ARG_DELETE); +} + +fpc_bep_result_t bep_template_get(HCP_comm_t *chain, uint8_t *data, uint32_t size) +{ + assert(bmlite_send_cmd(chain, CMD_TEMPLATE, ARG_UPLOAD)); + return bmlite_copy_arg(chain, ARG_DATA, data, size); +} + +fpc_bep_result_t bep_template_put(HCP_comm_t *chain, uint8_t *data, uint16_t length) +{ + return bmlite_send_cmd_arg(chain, CMD_TEMPLATE, ARG_DOWNLOAD, + ARG_DATA, data, length); +} + +fpc_bep_result_t bep_template_remove(HCP_comm_t *chain, uint16_t template_id) +{ + return bmlite_send_cmd_arg(chain, CMD_STORAGE_TEMPLATE, ARG_DELETE, + ARG_ID, &template_id, sizeof(template_id)); +} + +fpc_bep_result_t bep_template_remove_all(HCP_comm_t *chain) +{ + return bmlite_send_cmd_arg(chain, CMD_STORAGE_TEMPLATE, ARG_DELETE, + ARG_ALL, 0, 0); +} + +fpc_bep_result_t bep_template_load_storage(HCP_comm_t *chain, uint16_t template_id) +{ + return bmlite_send_cmd_arg(chain, CMD_STORAGE_TEMPLATE, ARG_UPLOAD, + ARG_ID, &template_id, sizeof(template_id)); +} + +fpc_bep_result_t bep_template_get_count(HCP_comm_t *chain, uint16_t *count) +{ + assert(bmlite_send_cmd(chain, CMD_STORAGE_TEMPLATE, ARG_COUNT)); + assert(bmlite_get_arg(chain, ARG_COUNT)); + *count = *(uint16_t*)chain->arg.data; + return FPC_BEP_RESULT_OK; +} + +fpc_bep_result_t bep_template_get_ids(HCP_comm_t *chain) +{ + assert(bmlite_send_cmd(chain, CMD_STORAGE_TEMPLATE, ARG_ID)); + return bmlite_get_arg(chain, ARG_DATA); +} + +fpc_bep_result_t bep_sw_reset(HCP_comm_t *chain) +{ + return bmlite_send_cmd(chain, CMD_RESET, ARG_NONE); +} + +fpc_bep_result_t bep_sensor_calibrate(HCP_comm_t *chain) +{ + return bmlite_send_cmd(chain, CMD_STORAGE_CALIBRATION, ARG_NONE); +} + +fpc_bep_result_t bep_sensor_calibrate_remove(HCP_comm_t *chain) +{ + return bmlite_send_cmd(chain, CMD_STORAGE_CALIBRATION, ARG_DELETE); +} + +fpc_bep_result_t bep_version(HCP_comm_t *chain, char *version, int len) +{ + assert(bmlite_send_cmd_arg(chain, CMD_INFO, ARG_GET, ARG_VERSION, 0, 0)); + return bmlite_copy_arg(chain, ARG_VERSION, version, len); +} + +fpc_bep_result_t bep_unique_id_get(HCP_comm_t *chain, uint8_t *unique_id) +{ + assert(bmlite_send_cmd_arg(chain, CMD_INFO, ARG_GET, ARG_UNIQUE_ID, 0, 0)); + return bmlite_copy_arg(chain, ARG_UNIQUE_ID, unique_id, 12); +} + +fpc_bep_result_t bep_uart_speed_set(HCP_comm_t *chain, uint32_t speed) +{ + assert(bmlite_init_cmd(chain, CMD_COMMUNICATION, ARG_SPEED)); + assert(bmlite_add_arg(chain, ARG_SET, 0, 0)); + assert(bmlite_add_arg(chain, ARG_DATA, (uint8_t*)&speed, sizeof(speed))); + return bmlite_tranceive(chain); + +} + +fpc_bep_result_t bep_uart_speed_get(HCP_comm_t *chain, uint32_t *speed) +{ + assert(bmlite_init_cmd(chain, CMD_COMMUNICATION, ARG_SPEED)); + assert(bmlite_add_arg(chain, ARG_GET, 0, 0)); + assert(bmlite_tranceive(chain)); + return bmlite_copy_arg(chain, ARG_DATA, speed, sizeof(speed)); + +} + +fpc_bep_result_t bep_sensor_reset(HCP_comm_t *chain) +{ + // Delay for possible updating template on BM-Lite + hal_timebase_busy_wait(50); + + return bmlite_send_cmd(chain, CMD_SENSOR, ARG_RESET); +} diff --git a/BMLite_example/src/com_app_cleartext.c b/BMLite_example/src/com_app_cleartext.c deleted file mode 100644 index 41a5d6d..0000000 --- a/BMLite_example/src/com_app_cleartext.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 2020 Fingerprint Cards AB - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file com_app_cleartext.c - * @brief TODO - */ - -#include -#include - -#include "com_app_cleartext.h" -#include "fpc_hcp.h" - -fpc_com_result_t com_app_clr_transmit(fpc_com_chain_t *chain) -{ - fpc_com_packet_tsp_t tsp_packet = { 0 }; - uint16_t tsp_offset; - uint16_t link_offset; - - /* Get offsets */ - chain->link_overhead_get(&link_offset); - chain->tsp_overhead_get(&tsp_offset); - - /* Create header */ - tsp_packet.data = chain->phy_mtu_buffer[FPC_COM_CHAIN_TX] + link_offset + tsp_offset; - tsp_packet.size = chain->app_packet_size[FPC_COM_CHAIN_TX]; - tsp_packet.seq_len = chain->private_vars.hcp_seq_len; - tsp_packet.seq_nr = chain->private_vars.hcp_seq_nr; - - return chain->tsp_tx(&tsp_packet, chain); -} - -fpc_com_result_t com_app_clr_receive(fpc_com_chain_t *chain) -{ - fpc_com_result_t result; - fpc_com_packet_tsp_t tsp_packet = { 0 }; - - result = chain->tsp_rx(&tsp_packet, chain); - - chain->app_packet_size[FPC_COM_CHAIN_RX] = tsp_packet.size; - - return result; -} - -uint16_t com_app_clr_get_overhead(uint16_t *offset) -{ - if (offset) { - *offset = 0; - } - - return 0; -} diff --git a/BMLite_example/src/com_common.c b/BMLite_example/src/com_common.c deleted file mode 100644 index 7444525..0000000 --- a/BMLite_example/src/com_common.c +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Copyright (c) 2020 Fingerprint Cards AB - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * 04/14/2020: Added SPI interfcae support - */ - -/** - * @file com_common.c - * @brief TODO - */ - -#include -#include -#include - -#include "fpc_com_transport.h" -#include "fpc_com_link.h" -#include "fpc_hcp.h" -#include "fpc_crc.h" - -#include "platform.h" -#include "com_app_cleartext.h" -#include "com_common.h" - -#define UNUSED(x) (void)(x) - -__attribute__((weak)) void *argument_allocator(fpc_hcp_cmd_t cmd, fpc_hcp_arg_t arg, uint16_t size, - bool *free_data, void *context) -{ - void *pointer = NULL; - - UNUSED(cmd); - UNUSED(arg); - UNUSED(context); - - /* Default behavior */ - pointer = malloc(size); - - if (free_data != NULL) { - *free_data = true; - } - - return pointer; -} - -__attribute__((weak)) void argument_free(fpc_hcp_cmd_t cmd, fpc_hcp_arg_data_t *arg_data, - void *context) -{ - UNUSED(cmd); - UNUSED(context); - - if (arg_data->free_data) { - free(arg_data->data); - arg_data->data = NULL; - } -} - -__attribute__((weak)) void print_packet(fpc_hcp_packet_t *packet, const char* msg) -{ -#if (FPC_LOG_INCLUDE == 1) - if (!packet) { - fpc_log_app_var(FPC_LOG_LEVEL_INFO, "Invalid argument"); - return; - } - - fpc_log_app_var(FPC_LOG_LEVEL_DEBUG, "%sPacket cmd id=0x%04X", msg != NULL ? msg : "", - packet->id); - - for (int i = 0; i < packet->num_args; ++i) { - if (packet->arguments[i].arg != ARG_NONE) { - fpc_log_app_var(FPC_LOG_LEVEL_DEBUG, "\tArg[%02d]: key=0x%04X, size=%d free=%d", i, - packet->arguments[i].arg, packet->arguments[i].size, - packet->arguments[i].free_data); - } - } -#else - UNUSED(packet); - UNUSED(msg); -#endif -} - -__attribute__((weak)) void init_com_chain(fpc_com_chain_t *chain, uint8_t *buffer, uint16_t size[2], - void *context) -{ - chain->initialized = true; - - /* CRC */ - chain->crc_calc = fpc_crc; - - /* HCP */ - chain->app_tx = com_app_clr_transmit; - chain->app_rx = com_app_clr_receive; - chain->app_overhead_get = com_app_clr_get_overhead; - chain->argument_allocator = argument_allocator; - chain->argument_free = argument_free; - chain->app_packet_size[FPC_COM_CHAIN_TX] = 0; - chain->app_packet_size[FPC_COM_CHAIN_RX] = 0; - chain->app_mtu_buffer[FPC_COM_CHAIN_TX] = NULL; - chain->app_mtu_buffer[FPC_COM_CHAIN_RX] = NULL; - chain->app_mtu_size[FPC_COM_CHAIN_TX] = 0; - chain->app_mtu_size[FPC_COM_CHAIN_RX] = 0; - - /* Transport */ - chain->tsp_tx = fpc_com_transport_transmit; - chain->tsp_rx = fpc_com_transport_receive; - chain->tsp_overhead_get = fpc_com_transport_get_overhead; - - /* Link */ - chain->link_overhead_get = fpc_com_link_get_overhead; - - /* Phy */ - chain->phy_tx = platform_bmlite_send; - chain->phy_rx = platform_bmlite_receive; - - chain->phy_mtu_size[FPC_COM_CHAIN_TX] = size[FPC_COM_CHAIN_TX]; - chain->phy_mtu_size[FPC_COM_CHAIN_RX] = size[FPC_COM_CHAIN_RX]; - chain->phy_mtu_buffer[FPC_COM_CHAIN_TX] = buffer; - chain->phy_mtu_buffer[FPC_COM_CHAIN_RX] = buffer + size[FPC_COM_CHAIN_TX]; - chain->phy_timeout_tx = 2000; - chain->phy_timeout_rx = 2000; - - chain->session = NULL; - chain->context = context; -} - -fpc_bep_result_t com_to_bep_result(fpc_com_result_t result) -{ - fpc_bep_result_t bep_result; - switch (result) { - case FPC_COM_RESULT_OK : - bep_result = FPC_BEP_RESULT_OK; - break; - case FPC_COM_RESULT_NO_MEMORY: - bep_result = FPC_BEP_RESULT_NO_MEMORY; - break; - case FPC_COM_RESULT_INVALID_ARGUMENT: - bep_result = FPC_BEP_RESULT_INVALID_ARGUMENT; - break; - case FPC_COM_RESULT_NOT_IMPLEMENTED: - bep_result = FPC_BEP_RESULT_NOT_IMPLEMENTED; - break; - case FPC_COM_RESULT_IO_ERROR: - bep_result = FPC_BEP_RESULT_IO_ERROR; - break; - case FPC_COM_RESULT_TIMEOUT: - bep_result = FPC_BEP_RESULT_TIMEOUT; - break; - default: - bep_result = FPC_BEP_RESULT_GENERAL_ERROR; - break; - } - return bep_result; -} - -fpc_bep_result_t arg_add(fpc_hcp_packet_t *cmd, fpc_hcp_arg_t arg, const void *data, uint16_t size) -{ - fpc_bep_result_t result = FPC_BEP_RESULT_OK; - uint32_t *pointer; - - if (cmd == NULL || data == NULL || size == 0) { - result = FPC_BEP_RESULT_INVALID_ARGUMENT; - goto exit; - } - - pointer = malloc(size); - if (pointer == NULL) { - result = FPC_BEP_RESULT_NO_MEMORY; - goto exit; - } - - memcpy(pointer, data, size); - if (fpc_hcp_arg_add(cmd, arg, size, true, pointer) == false) { - free(pointer); - result = FPC_BEP_RESULT_NO_RESOURCE; - } - -exit: - return result; -} diff --git a/BMLite_example/src/hcp_tiny.c b/BMLite_example/src/hcp_tiny.c new file mode 100644 index 0000000..c461f71 --- /dev/null +++ b/BMLite_example/src/hcp_tiny.c @@ -0,0 +1,291 @@ +#include + +#include "platform.h" +#include "fpc_crc.h" +#include "fpc_hcp_common.h" +#include "hcp_tiny.h" + +#include "bmlite_if_callbacks.h" + +#ifdef DEBUG +#include +#include +#define LOG_DEBUG(...) printf(__VA_ARGS__) +#else +#define LOG_DEBUG(...) +#endif + +static uint32_t fpc_com_ack = FPC_BEP_ACK; + +static fpc_bep_result_t _rx_link(HCP_comm_t *hcp_comm); +static fpc_bep_result_t _tx_link(HCP_comm_t *hcp_comm); + +typedef struct { + uint16_t cmd; + uint16_t args_nr; + uint8_t args[]; +} _HCP_cmd_t; + +typedef struct { + uint16_t arg; + uint16_t size; + uint8_t pld[]; +} _CMD_arg_t; + +typedef struct { + uint16_t lnk_chn; + uint16_t lnk_size; + uint16_t t_size; + uint16_t t_seq_nr; + uint16_t t_seq_len; + _HCP_cmd_t t_pld; +} _HPC_pkt_t; + +fpc_bep_result_t bmlite_init_cmd(HCP_comm_t *hcp_comm, uint16_t cmd, uint16_t arg_key) +{ + fpc_bep_result_t bep_result; + + _HCP_cmd_t *out = (_HCP_cmd_t *)hcp_comm->pkt_buffer; + out->cmd = cmd; + out->args_nr = 0; + hcp_comm->pkt_size = 4; + + if(arg_key != ARG_NONE) { + bep_result = bmlite_add_arg(hcp_comm, arg_key, NULL, 0); + if(bep_result) { + bmlite_on_error(BMLITE_ERROR_SEND_CMD, bep_result); + return bep_result; + } + } + + return FPC_BEP_RESULT_OK; +} + +fpc_bep_result_t bmlite_add_arg(HCP_comm_t *hcp_comm, uint16_t arg, void *data, uint16_t size) +{ + if(hcp_comm->pkt_size + 4 + size > hcp_comm->pkt_size_max) { + bmlite_on_error(BMLITE_ERROR_SEND_CMD, FPC_BEP_RESULT_NO_MEMORY); + return FPC_BEP_RESULT_NO_MEMORY; + } + + ((_HCP_cmd_t *)hcp_comm->pkt_buffer)->args_nr++; + _CMD_arg_t *args = (_CMD_arg_t *)(&hcp_comm->pkt_buffer[hcp_comm->pkt_size]); + args->arg = arg; + args->size = size; + if(size) { + memcpy(&args->pld, data, size); + } + hcp_comm->pkt_size += 4 + size; + return FPC_BEP_RESULT_OK; +} + +fpc_bep_result_t bmlite_get_arg(HCP_comm_t *hcp_comm, uint16_t arg_type) +{ + uint16_t i = 0; + uint8_t *buffer = hcp_comm->pkt_buffer; + uint16_t args_nr = ((_HCP_cmd_t *)(buffer))->args_nr; + uint8_t *pdata = (uint8_t *)&((_HCP_cmd_t *)(buffer))->args; + while (i < args_nr && (uint32_t)(pdata - buffer) <= hcp_comm->pkt_size) { + _CMD_arg_t *parg = (_CMD_arg_t *)pdata; + if(parg->arg == arg_type) { + hcp_comm->arg.size = parg->size; + hcp_comm->arg.data = parg->pld; + return FPC_BEP_RESULT_OK; + } else { + i++; + pdata += 4 + parg->size; + } + } + + // Ignore missing ARG_RESULT because some command return result other way + // if (arg_type != ARG_RESULT) { + bmlite_on_error(BMLITE_ERROR_GET_ARG, FPC_BEP_RESULT_INVALID_ARGUMENT); + // } + return FPC_BEP_RESULT_INVALID_ARGUMENT; +} + +fpc_bep_result_t bmlite_copy_arg(HCP_comm_t *hcp_comm, uint16_t arg_key, void *arg_data, uint16_t arg_data_length) +{ + fpc_bep_result_t bep_result; + bep_result = bmlite_get_arg(hcp_comm, arg_key); + if(bep_result == FPC_BEP_RESULT_OK) { + if(arg_data == NULL) { + bmlite_on_error(BMLITE_ERROR_GET_ARG, FPC_BEP_RESULT_NO_MEMORY); + return FPC_BEP_RESULT_NO_MEMORY; + } + memcpy(arg_data, hcp_comm->arg.data, HCP_MIN(arg_data_length, hcp_comm->arg.size)); + } else { + bmlite_on_error(BMLITE_ERROR_GET_ARG, FPC_BEP_RESULT_INVALID_ARGUMENT); + return FPC_BEP_RESULT_INVALID_ARGUMENT; + } + + return bep_result; +} + +fpc_bep_result_t bmlite_tranceive(HCP_comm_t *hcp_comm) +{ + fpc_bep_result_t bep_result; + + bep_result = bmlite_send(hcp_comm); + if (bep_result == FPC_BEP_RESULT_OK) { + bep_result = bmlite_receive(hcp_comm); + + if (bmlite_get_arg(hcp_comm, ARG_RESULT) == FPC_BEP_RESULT_OK) { + hcp_comm->bep_result = *(int8_t*)hcp_comm->arg.data; + } else { + hcp_comm->bep_result = FPC_BEP_RESULT_OK; + } + } + + return bep_result; +} + +fpc_bep_result_t bmlite_receive(HCP_comm_t *hcp_comm) +{ + fpc_bep_result_t bep_result = FPC_BEP_RESULT_OK; + fpc_bep_result_t com_result = FPC_BEP_RESULT_OK; + uint16_t seq_nr = 0; + uint16_t seq_len = 1; + uint8_t *p = hcp_comm->pkt_buffer; + _HPC_pkt_t *pkt = (_HPC_pkt_t *)hcp_comm->txrx_buffer; + uint16_t buf_len = 0; + + while(seq_nr < seq_len) { + bep_result = _rx_link(hcp_comm); + + if (!bep_result) { + seq_nr = pkt->t_seq_nr; + seq_len = pkt->t_seq_len; + if(pkt->t_size != pkt->lnk_size - 6) { + com_result = FPC_BEP_RESULT_IO_ERROR; + continue; + } + if(buf_len + pkt->t_size < hcp_comm->pkt_size_max) { + memcpy(p, &pkt->t_pld, pkt->t_size); + p += pkt->t_size; + buf_len += pkt->t_size; + } else { + com_result = FPC_BEP_RESULT_NO_MEMORY; + } +#ifdef DEBUG + if (seq_len > 1) + LOG_DEBUG("Received data chunk %d of %d\n", seq_nr, seq_len); +#endif + } else { + bmlite_on_error(BMLITE_ERROR_SEND_CMD, bep_result); + return bep_result; + } + } + + hcp_comm->pkt_size = buf_len; + if(com_result != FPC_BEP_RESULT_OK) { + bmlite_on_error(BMLITE_ERROR_SEND_CMD, com_result); + } + return com_result; +} + +static fpc_bep_result_t _rx_link(HCP_comm_t *hcp_comm) +{ + // Get size, msg and CRC + uint16_t result = hcp_comm->read(4, hcp_comm->txrx_buffer, hcp_comm->phy_rx_timeout, NULL); + _HPC_pkt_t *pkt = (_HPC_pkt_t *)hcp_comm->txrx_buffer; + uint16_t size; + + if (result) { + LOG_DEBUG("Timed out waiting for response.\n"); + return result; + } + + size = pkt->lnk_size; + + // Check if size plus header and crc is larger than max package size. + if (MTU < size + 8) { + // LOG_DEBUG("S: Invalid size %d, larger than MTU %d.\n", size, MTU); + bmlite_on_error(BMLITE_ERROR_SEND_CMD, FPC_BEP_RESULT_IO_ERROR); + return FPC_BEP_RESULT_IO_ERROR; + } + + hcp_comm->read(size + 4, hcp_comm->txrx_buffer + 4, 100, NULL); + + uint32_t crc = *(uint32_t *)(hcp_comm->txrx_buffer + 4 + size); + uint32_t crc_calc = fpc_crc(0, hcp_comm->txrx_buffer+4, size); + + if (crc_calc != crc) { + LOG_DEBUG("CRC mismatch. Calculated %08X, received %08X\n", crc_calc, crc); + bmlite_on_error(BMLITE_ERROR_SEND_CMD, FPC_BEP_RESULT_IO_ERROR); + return FPC_BEP_RESULT_IO_ERROR; + } + + // Send Ack + hcp_comm->write(4, (uint8_t *)&fpc_com_ack, 0, NULL); + + return FPC_BEP_RESULT_OK; +} + +fpc_bep_result_t bmlite_send(HCP_comm_t *hcp_comm) +{ + uint16_t seq_nr = 1; + fpc_bep_result_t bep_result = FPC_BEP_RESULT_OK; + uint16_t data_left = hcp_comm->pkt_size; + uint8_t *p = hcp_comm->pkt_buffer; + + _HPC_pkt_t *phy_frm = (_HPC_pkt_t *)hcp_comm->txrx_buffer; + + // Application MTU size is PHY MTU - (Transport and Link overhead) + uint16_t app_mtu = MTU - 6 - 8; + + // Calculate sequence length + uint16_t seq_len = (data_left / app_mtu) + 1; + + phy_frm->lnk_chn = 0; + phy_frm->t_seq_len = seq_len; + + for (seq_nr = 1; seq_nr <= seq_len && !bep_result; seq_nr++) { + phy_frm->t_seq_nr = seq_nr; + if (data_left < app_mtu) { + phy_frm->t_size = data_left; + } else { + phy_frm->t_size = app_mtu; + } + memcpy(&phy_frm->t_pld, p, phy_frm->t_size); + phy_frm->lnk_size = phy_frm->t_size + 6; + p += phy_frm->t_size; + data_left -= phy_frm->t_size; + + bep_result = _tx_link(hcp_comm); + } + + if(bep_result) { + bmlite_on_error(BMLITE_ERROR_SEND_CMD, bep_result); + } + return bep_result; +} + +fpc_bep_result_t _tx_link(HCP_comm_t *hcp_comm) +{ + fpc_bep_result_t bep_result; + + _HPC_pkt_t *pkt = (_HPC_pkt_t *)hcp_comm->txrx_buffer; + + uint32_t crc_calc = fpc_crc(0, &pkt->t_size, pkt->lnk_size); + *(uint32_t *)(hcp_comm->txrx_buffer + pkt->lnk_size + 4) = crc_calc; + uint16_t size = pkt->lnk_size + 8; + + bep_result = hcp_comm->write(size, hcp_comm->txrx_buffer, 0, NULL); + + // Wait for ACK + uint32_t ack; + bep_result = hcp_comm->read(4, (uint8_t *)&ack, 500, NULL); + if (bep_result == FPC_BEP_RESULT_TIMEOUT) { + LOG_DEBUG("ASK read timeout\n"); + bmlite_on_error(BMLITE_ERROR_SEND_CMD, FPC_BEP_RESULT_TIMEOUT); + return FPC_BEP_RESULT_IO_ERROR; + } + + if(ack != fpc_com_ack) { + return FPC_BEP_RESULT_IO_ERROR; + } + + return FPC_BEP_RESULT_OK; +} + diff --git a/BMLite_example/src/main.c b/BMLite_example/src/main.c index a3fa340..ff7bb1f 100644 --- a/BMLite_example/src/main.c +++ b/BMLite_example/src/main.c @@ -27,11 +27,25 @@ #include #include -#include "bep_host_if.h" -#include "com_common.h" +#include "bmlite_if.h" +#include "hcp_tiny.h" #include "platform.h" #include "bmlite_hal.h" +#define DATA_BUFFER_SIZE (1024*5) +static uint8_t hcp_txrx_buffer[MTU]; +static uint8_t hcp_data_buffer[DATA_BUFFER_SIZE]; + +static HCP_comm_t hcp_chain = { + .read = platform_bmlite_receive, + .write = platform_bmlite_send, + .pkt_buffer = hcp_data_buffer, + .txrx_buffer = hcp_txrx_buffer, + .pkt_size = 0, + .pkt_size_max = sizeof(hcp_data_buffer), + .phy_rx_timeout = 2000, +}; + void bmlite_on_error(bmlite_error_t error, int32_t value) { if(value != FPC_BEP_RESULT_TIMEOUT) { @@ -76,15 +90,8 @@ void bmlite_on_identify_start() int main (int argc, char **argv) { int baudrate = 4000000; - uint8_t buffer[512]; - uint16_t size[2] = { 256, 256 }; - fpc_com_chain_t hcp_chain; - platform_init(baudrate); - init_com_chain(&hcp_chain, buffer, size, NULL); - hcp_chain.channel = 1; - { char version[100]; uint16_t template_id; @@ -104,15 +111,19 @@ int main (int argc, char **argv) } else if (btn_time < 5000) { // Enroll res = bep_enroll_finger(&hcp_chain); - res = bep_save_template(&hcp_chain, current_id++); + res = bep_template_save(&hcp_chain, current_id++); } else { // Erase All templates hal_set_leds(BMLITE_LED_STATUS_DELETE_TEMPLATES, true); - res = bep_delete_template(&hcp_chain, REMOVE_ID_ALL_TEMPLATES); + res = bep_template_remove_all(&hcp_chain); + current_id = 0; } - res = bep_identify_finger(&hcp_chain, &template_id, &match); - if (res != FPC_BEP_RESULT_OK) + res = bep_identify_finger(&hcp_chain, 0, &template_id, &match); + if (res == FPC_BEP_RESULT_TIMEOUT) { + platform_bmlite_reset(); + } else if (res != FPC_BEP_RESULT_OK) { continue; + } hal_set_leds(BMLITE_LED_STATUS_MATCH, match); } } diff --git a/BMLite_example/src/platform.c b/BMLite_example/src/platform.c index 2f50243..7dc4251 100644 --- a/BMLite_example/src/platform.c +++ b/BMLite_example/src/platform.c @@ -20,7 +20,7 @@ */ -#include "fpc_com_result.h" +#include "fpc_bep_types.h" #include "platform.h" #include "bmlite_hal.h" @@ -41,7 +41,7 @@ void platform_bmlite_reset(void) hal_timebase_busy_wait(100); } -fpc_com_result_t platform_bmlite_send(uint16_t size, const uint8_t *data, uint32_t timeout, +fpc_bep_result_t platform_bmlite_send(uint16_t size, const uint8_t *data, uint32_t timeout, void *session) { uint8_t buff[size]; @@ -49,16 +49,20 @@ fpc_com_result_t platform_bmlite_send(uint16_t size, const uint8_t *data, uint32 return hal_bmlite_spi_write_read((uint8_t *)data, buff, size, false); } -fpc_com_result_t platform_bmlite_receive(uint16_t size, uint8_t *data, uint32_t timeout, +fpc_bep_result_t platform_bmlite_receive(uint16_t size, uint8_t *data, uint32_t timeout, void *session) { volatile uint32_t start_time = hal_timebase_get_tick(); volatile uint32_t curr_time = start_time; + // Wait for BM_Lite Ready for timeout or indefinitely if timeout is 0 while (!hal_bmlite_get_status() && - (curr_time = hal_timebase_get_tick()) - start_time < timeout) { + (!timeout || (curr_time = hal_timebase_get_tick()) - start_time < timeout)) { + if(platform_check_button_pressed()) { + return FPC_BEP_RESULT_TIMEOUT; + } } - if(curr_time - start_time >= timeout) { - return FPC_COM_RESULT_TIMEOUT; + if(timeout && curr_time - start_time >= timeout) { + return FPC_BEP_RESULT_TIMEOUT; } uint8_t buff[size]; diff --git a/HAL_Driver/src/hal_timebase.c b/HAL_Driver/src/hal_timebase.c index 1c5aae5..0780bed 100755 --- a/HAL_Driver/src/hal_timebase.c +++ b/HAL_Driver/src/hal_timebase.c @@ -121,3 +121,9 @@ uint32_t platform_get_button_press_time() button_pressed_time = 0; return time; } + +uint32_t platform_check_button_pressed() +{ + uint32_t time = button_pressed_time; + return time; +} \ No newline at end of file diff --git a/README.md b/README.md index 16f1c1c..dac137f 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,8 @@ Platform-independent interface implemented in [platform.c](BMLite_example/src/pl | :-------- | :-------- | | bool **platform_init**(uint32_t speed_hz) | Initilalizes hardware | | void **platform_bmlite_reset**(void) | Implements BM-Lite HW Reset | -| fpc_com_result_t **platform_bmlite_send**(uint16_t size, const uint8_t *data, uint32_t timeout, void *session) | Send data packet to FPC BM-LIte (session parameter is for compatibility and can be safely ignored) | -| fpc_com_result_t **platform_bmlite_receive**(uint16_t size, uint8_t *data, uint32_t timeout, void *session) | Receive data packet from FPC BM-LIte (session parameter is for compatibility and can be safely ignored) | +| fpc_bep_result_t**platform_bmlite_send**(uint16_t size, const uint8_t *data, uint32_t timeout, void *session) | Send data packet to FPC BM-LIte (session parameter is for compatibility and can be safely ignored) | +| fpc_bep_result_t**platform_bmlite_receive**(uint16_t size, uint8_t *data, uint32_t timeout, void *session) | Receive data packet from FPC BM-LIte (session parameter is for compatibility and can be safely ignored) | Currently **platform_bmlite_send()** and **platform_bmlite_receive()** are implemented for SPI interface. For UART interface there is no need to wait **IRQ** pin ready. However because in UART mode there is no signal from FPC-BM-LIte that it will send data, I would recommend to use UART interrupt or DMA to receive data from UART and store it to a separate buffer and read data in **platform_bmlite_receive()** from that buffer. Activation UART data reading only inside **platform_bmlite_receive()** could lead to loosing some incoming data and causing HCP protocol errors. diff --git a/hcp/LICENSE.txt b/hcp/LICENSE.txt deleted file mode 100644 index 298f0e2..0000000 --- a/hcp/LICENSE.txt +++ /dev/null @@ -1,174 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. diff --git a/hcp/doc/img/hcp.eps b/hcp/doc/img/hcp.eps deleted file mode 100644 index 0b2a2ca..0000000 --- a/hcp/doc/img/hcp.eps +++ /dev/null @@ -1,1733 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: cairo 1.15.10 (http://cairographics.org) -%%CreationDate: Tue Apr 03 17:58:42 2018 -%%Pages: 1 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%BoundingBox: 0 0 483 193 -%%EndComments -%%BeginProlog -50 dict begin -/q { gsave } bind def -/Q { grestore } bind def -/cm { 6 array astore concat } bind def -/w { setlinewidth } bind def -/J { setlinecap } bind def -/j { setlinejoin } bind def -/M { setmiterlimit } bind def -/d { setdash } bind def -/m { moveto } bind def -/l { lineto } bind def -/c { curveto } bind def -/h { closepath } bind def -/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto - 0 exch rlineto 0 rlineto closepath } bind def -/S { stroke } bind def -/f { fill } bind def -/f* { eofill } bind def -/n { newpath } bind def -/W { clip } bind def -/W* { eoclip } bind def -/BT { } bind def -/ET { } bind def -/BDC { mark 3 1 roll /BDC pdfmark } bind def -/EMC { mark /EMC pdfmark } bind def -/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def -/Tj { show currentpoint cairo_store_point } bind def -/TJ { - { - dup - type /stringtype eq - { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse - } forall - currentpoint cairo_store_point -} bind def -/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore - cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def -/Tf { pop /cairo_font exch def /cairo_font_matrix where - { pop cairo_selectfont } if } bind def -/Td { matrix translate cairo_font_matrix matrix concatmatrix dup - /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point - /cairo_font where { pop cairo_selectfont } if } bind def -/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def - cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def -/g { setgray } bind def -/rg { setrgbcolor } bind def -/d1 { setcachedevice } bind def -/cairo_data_source { - CairoDataIndex CairoData length lt - { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } - { () } ifelse -} def -/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def -/cairo_image { image cairo_flush_ascii85_file } def -/cairo_imagemask { imagemask cairo_flush_ascii85_file } def -%%EndProlog -%%BeginSetup -%%BeginResource: font Calibri-Light -11 dict begin -/FontType 42 def -/FontName /Calibri-Light def -/PaintType 0 def -/FontMatrix [ 1 0 0 1 0 0 ] def -/FontBBox [ 0 0 0 0 ] def -/Encoding 256 array def -0 1 255 { Encoding exch /.notdef put } for -Encoding 32 /space put -Encoding 40 /parenleft put -Encoding 41 /parenright put -Encoding 45 /hyphen put -Encoding 48 /zero put -Encoding 49 /one put -Encoding 50 /two put -Encoding 51 /three put -Encoding 53 /five put -Encoding 54 /six put -Encoding 65 /A put -Encoding 66 /B put -Encoding 67 /C put -Encoding 68 /D put -Encoding 75 /K put -Encoding 76 /L put -Encoding 78 /N put -Encoding 80 /P put -Encoding 83 /S put -Encoding 84 /T put -Encoding 97 /a put -Encoding 98 /b put -Encoding 100 /d put -Encoding 101 /e put -Encoding 102 /f put -Encoding 103 /g put -Encoding 105 /i put -Encoding 108 /l put -Encoding 109 /m put -Encoding 110 /n put -Encoding 111 /o put -Encoding 114 /r put -Encoding 115 /s put -Encoding 116 /t put -Encoding 117 /u put -Encoding 121 /y put -Encoding 122 /z put -/CharStrings 38 dict dup begin -/.notdef 0 def -/A 1 def -/r 2 def -/g 3 def -/u 4 def -/m 5 def -/e 6 def -/n 7 def -/t 8 def -/space 9 def -/one 10 def -/two 11 def -/B 12 def -/y 13 def -/s 14 def -/S 15 def -/i 16 def -/z 17 def -/D 18 def -/a 19 def -/K 20 def -/N 21 def -/C 22 def -/o 23 def -/d 24 def -/b 25 def -/f 26 def -/P 27 def -/l 28 def -/zero 29 def -/hyphen 30 def -/six 31 def -/five 32 def -/parenleft 33 def -/three 34 def -/T 35 def -/L 36 def -/parenright 37 def -end readonly def -/sfnts [ -<000100000009008000030010637674203ff35086000020dc000002986670676d70f5847d0000 -2374000006c3676c7966a5aab16a0000009c00002040686561640508a57500002a3800000036 -686865610e2803fd00002a7000000024686d74788f1e11d500002a940000009c6c6f63610002 -b3ec00002b30000000a06d617870037f063d00002bd00000002070726570e082493100002bf0 -0000040a0004002e000003cd050e000300070039004d004a40242d07023ab2440ead17441744 -17020120ae080401021f08010323350603511911493f0401002fdddedddecd3fdddecd111239 -39012fdddddeed111239392f2f10ed10ed10ddce3031011121110111211101140e0207071406 -23222e02352734363333323e0235342623220e0223222e02353436373e0333321e0203140e02 -23222e0235343e0233321e0203cdfc610353fcf60281244158340516150a0e0a05041a151431 -4128115862273f302007030705030508072837432145664322e0060e171112180f06060f1812 -11170e06050efaf2050efb380482fb7e03163c5e402301aa080702040504c817151b2e402450 -5c11151103090f0c0c13080713120d26425afd7c12180f06060f181212180f06060f18000000 -00020028fffa045a05140022002600a5b326230123b8fff0400b0c10480523010876220122b8 -fff8404c0c0f48781801260b0a230a2223230c25240d240dc31616371577150215240ac30101 -380278020202181f245f24022424232625b90c0b0c22181d230a0d1601040c230c230c121d52 -12550555003f3f3f1239392f2f11173911123939113310ed32113301192f5d3318c45d3210ed -10cd5d3210ed107d87c4c4013311331087c4c43031015d2b5d5e5d2b5d25160e0223222e0227 -0321030e0323222e0237013e0333321e021707230321045406010d1b1515190e07037cfdc877 -02080e1913151c0d010601c5030c131b11121b130b035401f401ef290f130a0303060a070159 -fea9070a0704040a120f04cf080b060303060b086dfd48000000000100a7fffa029d03c20033 -00254013260fb15f0001001a0aa52b4a260f152049154c003f3f1239393fed012fc45ded3930 -3101140e0223222e0223220e020711140e0223222e023511343e0233321e0215153e0333321e -06029d0205070609182026171b34393f26060d171211170e05050e151111160c0527423c391e -0d22271f0c040301036f0f150d07090a091733543dfd9c060a060404060a060389060a070303 -070a068f3946270e03080b09070b130000030043fe93037c03c2003e004e005f00ba407d2935 -3935020c311c31022b303b30022f200c10480c2b1c2b0208392849280238234823021a232a23 -02171d271d0236194619021519251902150925090212b02d47b1333fb2074fb11b040f300333 -072d33071b1b07332d040000010058b12a25600f300703384aa40c53a41515603803a43c492a -2042a4384a5ba4204f003fed3fed12393fed1112392fedd6ed1217390110de32edc45d17392f -2f2f2f1112173910ed10ed10ed10ed30315d5d5d5d5d5d5d5e5d2b5d5d5d0114062323161615 -140e0223222627060615141617171e0315140e0223222e0235343e0237262635343637262635 -343e023332161721321603342623220e0215141633323e0213342627250e0315141633323e02 -037c120e8f2a21315a7c4b3d6e1f141a493af53e6d52303167a06f6a955f2b10213120333030 -221d2032597c4a27451d010b110fdf71683550341a71663651341a5f6b5afef9242e1b0a9585 -5471461e037f1c162b65384d78532c22191434222634020a021e3b563a3c6e53312541583323 -3e38341b1a4a2a3e5f26265a3f4c79542d09071afeeb6774243e522e6473243d51fd63424603 -091c322f2d174a4c21364600000100a3ffef038103b70032003f40270a111a11022910391002 -0b101b1002080b27b13f0001001fb1132d49270b05194924a40e4d054c003f3fed3f1239393f -012fedd45ded3930315e5d5d5d25140e0223222e023535060623222e023511343e0233321e02 -1511141e023332363711343e0233321e02150381050e161012160c054e954a597a4b21050e17 -1112170d061a34513645894d050e171211170d0614060a060404060a0680574e3c6788600223 -060a070303070a06fde8546a4b29625f0289060a070303070a06000100a7fffa05b103c20050 -00774050474d01264d364d02004d104d0205451545022744374402064416440208473f013626 -4626024612014613b11e1e320ab11f504f5002005001503e27b13210a44b4a24a4414a3e462d -38492d4c194c054c003f3f3f3f1239393fed3fed012fed39d45d5ded11392fed3930315d5d5d -5e5d5d5d5d5d5d25140e0223222e023511342e022322060711140e0223222e023511342e0223 -22060711140e0223222e023511343e0233321e021515363633321e02173e0333321e021505b1 -060d171112170e0517314b333f814d060d171111170e0518314b333f814c060d171211170e05 -050e151111160c054e8c45395944300f2f534b46225575471f14060a060404060a06022d4069 -4b29625ffd77060a060404060a06022d40694b29625ffd77060a060404060a060389060a0703 -03070a0680574e1b31442934472b133c66884c0000020068ffef038903c2002b003400634041 -7631863102782e019729a729029628a628020923192302091f191f020866077607021313212c -b2002b012b3404b221352ca304041c2fa4264a18a40e2209a41c4d003ffdf4ed3fed12392fed -0110deed32dd5ded12392f30315d5e5d5d5d5d5d5d0114062321141e0233323e0233321e0215 -140e0623222e0235343e0233321e021527362623220e020703892612fd97214c7a593f64492f -0a060a06030203060a34546f4069a26e393b6e9b5f66905d2b7b038a8444674726030207241b -54886134161b16060d140f070d0b0a0a1919143f7bb67873b67f43447398540b90a233546f3c -0000000100a7fffa038503c2003200414029033013300208162f262f362f0336124612022a13 -b11e0bb13f0001001e10a42d4a2a192449194c054c003f3f3f12393fed012fd45ded10ed3930 -315d5d5e5d25140e0223222e023511342e022322060711140e0223222e023511343e0233321e -021515363633321e02150385060d171112170d061a345136458a4c060d171211170e05050e15 -1111160c054e964a597a4b2114060a060404060a06021954694b29625ffd77060a060404060a -060389060a070303070a0680574e3c668860000000010027fff1025b04aa003a005540380a10 -0d10482b0a3b0a4b0a030d0a1d0a02232db117000d100d020d0d112929000f111f113f114f11 -0408112da423491d0da4174931a4074d003fed3fedcd3fed012f5e5dc4322f12392f5d33ed32 -30315d5d2b25140e0423222e02351123222635343e02333335343e0233321e02151533321e02 -151406232311141633323e0233321e02025b070f1d262a14435e3c1b870e1004080b0787050e -171112170d06fa070b0804110dfa3b4e18271e1508050805034a151a0f0d09052449704c0233 -19190d130d06de060a070303070a06de060d130d1919fddd676c0a0c0a040b11000100bd0000 -03960516002e002f401a0029c21e1f1801181f0b010b101101111312bd23522910b90654003f -ed323ffdc6012f5dcd5dc45d33fdcd303125140e022321222e0235343e023321110506062626 -35343e0237253e0333321e02151133321e020396060a0c06fd70060b0a0605090c07011ffeee -10140c04020609070136030a0e100b11180e06f6070d0905320e130c05050c130e0c140d0704 -26a70a030a17100d130e0a05c60204030104060a06fb6a070d14000100800000038b051f003e -00544031273101053115310208891999190278190178130116c333253325330039c50b113839 -2020391bba3316062e531039ba0654003fed323f123939ed11392f123939012fedcd39392f2f -10ed30315d5d5d5e5d5d25140e022321222e0235343e0237013e0335342e0223220e0223222e -0235343e0633321e0215140e02070721321e02038b05090e09fd4509100c0602060a08010963 -753e131f3c593a3f644b320c060a070302040717375466375b875a2c1545836dec0250080e0a -05380c150f08060d160f0d14101009011868a4846c3030574127232b23060d140d0c100d0c14 -222319365c79433e7b91b073f7070e14000300bd000003e4050e001e002b00380038401d2633 -c20b1fc31a0b15150b00c32c0b1a27ba31310724ba105134ba0754003fed3fed12392fed3901 -2fdced11392f1239ed10ed32303101140e0423212226351134363321321e0215140e02071e03 -03342e0223231133323e0213342e0223231121323e0203e41b32485b6a46feb1122626120116 -718c5b2d152a3f2b345c4528d61c3d6252cade495a3a1c54294f7456e9011a3e5f492b016a39 -62503e2b161b240490241b2e55794a2e54483a140a37546f021433533b20fe30274257fdcf40 -624222fe071f3d5b00010029fe93035e03b7002400524030691979190201b220090109090e00 -1a1bb1241a0a1a18b22f0e7f0e020e0f1a5f1a02081a1f49190a13490a4b044f004b003f3f3f -3f12393f01192f5e5d18d45ded123910dded123912392f5ded30315d2103060623222e023713 -262627012634363633321e02170133013e0233321616140702077e05202312180d020580080c -02feb7050b1915161a0f0703011b04011605111c1413190c05fead0b0f040b110c0141030e07 -03730e110a0303060a07fcea03160e0903040a110d0000010055ffef02bb03c200490066403e -87489748021a26010b260115020104020141b0242432320c1bb1000001000c4a2ea4370aa511 -603770370250110137113711163ca4411b05294a16a4054d003fed3f123939ed1139392f2f5d -5d10ed10ed0110ded45ded12392f322fed30315d5d5d5d5d01140e0223222e0435343e023332 -1e0233323e0235342e0635343e0233321e0615140e0223222e0223220e0215141e0602bb3059 -7c4b2f54442f160a04060a060b2a3f57392e4c381f28415357534128244b7550224337281507 -030203060906082034482f2f472e17284254575442280105416748260f171a141e190d140e07 -1c211c14283f2a2a3a2b21232a3c543b2f5b482c0b1215100b0c110c0c130e07161a16162836 -202c3c2c2222293a51000001004cffef034c051f00490052402b41c2243224320c1bc3000c4a -231b3c2ebb370aba1120370137113711163cba491641411b05295316ba0556003fed3f123939 -111239ed1139392f2f5d10ed10ed1112390110ded4ed1239392f2fed303101140e0223222e04 -35343e0233321e0233323e0235342e0635343e0233321e0615140e0223222e0223220e021514 -1e06034c3e709a5b3e6e563b160a04070b060e3351714b3d664a2934556c716c553436628952 -29544b3b13050402030609060b2d445e3c3b583a1d34566d716d5634015e56885f3217202117 -1f1711160e05232923213e5b3a3c564135353e53704d4b77532c10191f13090e130e0d150f08 -1d241d20374a293c564235353d536f0000020094fffa0130051f00150021001b400d16b51c15 -b10a1fa9191049054c003f3fdeed012fedd4ed303125140e0223222e023511343e0233321e02 -15131406232226353436333216011e060d171211170e05050e171112170d0612222d2c21222d -2c2114060a060404060a060389060a070303070a0601313022213030222100010064000002ca -03b2002b00444013072601072557250210b11f141f141f0026b109b8ffc040120a004d1f0901 -092c2511a419490f27a4054b003fed323fed320110de5d2bedcd39392f2f10ed30315d5d2514 -0e02232122263535343e02370121222635343e023321321e021515140e02070121321e0202ca -05080c07fde5121904080d0a01aefe5a0e1205080c0701f409100b0703080e0afe5301cc070c -0805340d140d06181c1c0b1214170f02a3191b0d140d06060c140e170a14151910fd5d060d14 -0000000200bd00000474050e0012001f001c400e13c3001ac20918ba0e511bba0554003fed3f -ed012fedd4ed303101140e0223232226351134363321321e0207342e0223231133323e020474 -52a0eba3ff122626120110a5e3994e833977b68dc7c884b77a3d029aa3f9a8561b240490241b -5aa5e79471c18c4ffbcc4188cf00000000020068ffef032103c2003300400061b59738a73802 -31b8fff040350a0d4828133813020a131a1302080f180a0d48091734b10027271f0001003ab2 -11412aa622231da42e35a316162e4a3da40c4d044c003f3fed3f392fed10fdf4ed0110deedc4 -5d392f10ed323930312b5e5d5d2b5d25140606232226263535060623222e0235343e02333335 -342e0223220e0223222e0235343e0433321e02150723220e021514163332363703210d151211 -180d3d934f47714e2a3e72a062901836563e3c60482f0a060a07030619405360305d804f2277 -a5486c4823635a477b45140a0b05050b0a6542482545623d4b6f4a254e3a593c1e1d241d040b -110c151919221d122d547b4eb91a32462d4e5d494c00000100bdfffa03d1051400330032401a -30c4210ac21522c42c2c1509c400152752210a101b5210550555003f3f3f1239393f012fd4ed -12392fed10fd32ed303125140e0223222626270111140e0223222e023511343e0233321e0215 -11013e0333321e02151406070101161603d1040e181312251407fdf5060e171211180e06060e -181112170e0601f5060e12181212160d040b0dfe2901f70e0616070a0704040d090298fd6806 -0a060404060a0604e6060a060404060a06fdb4024c070a0603040709060b140efde5fd89120e -0000000100bdfffa045e0510003d0033401b270f0f14c21e0a2e2e32c2001e38520a2e0f2704 -19225119550655003f3f3f1217393f012fd4ed32113310ed322f33303125140e022323222e02 -27012626272316141511140e0223222e02351134363333321e0217011e03173326343511343e -0233321e0215045e0b1115091914211f1f13fe3822451f0101060e171211180e062612321820 -1a190f015d213b38371b0101060e171210180e073b12180f060a192a2103283b7d3b499949fc -ba060a060404060a0604bb241b0813231bfd953a6b67643354b65402f1060a070303070a0600 -00000001006bfff3040c051b0039002740141c002bc30e3a18bb2126ba135304ba3530bb0956 -003ffdd4ed3ffdd4ed0110deedd4c4303125140e0623222e0235343e0233321e0615140e0223 -222e0223220e0215141e0233323e0233321e02040c0204071340617e4c7ac68b4b5091cb7b3a -6d5c491b07040203070a070e335378535b986d3d386a9c63517956370f06080503b00b120e0c -132b2a1e55a4f09a9efbaf5d16222c1b0c0f130c0e150f08293229498ed08781c88948293229 -050d160000020064ffef03c803c200130027005c404069257925026621762102661b761b0269 -177917028712019711010611861102080d0188080109078907020703010814b2400001001eb2 -0a2819a40f4a23a5054d003fed3fed0110deedd45ded30315e5d5d5d5d5d5d5d5d5d5d5d0114 -0e0223222e0235343e0233321e0207342e0223220e0215141e0233323e0203c8386fa66e6a9f -6b35376fa66f6a9f6a367e1e46765851764b241e46765851764b2401e26cb6864b437db2706c -b6854a427db27a4d8c6b3f3a678c514e8d6a3e3a668c0002006bffef0381056d002600390077 -400c37281416004c76328632022db8fff0b316004d2db8fff8403c15004d762c862c02281015 -16004c671a0109151915020910191002080b1b39b10e342a1804002fb2133a21460b39271b04 -0e2aa4184a34a40e4d054c003f3fed3fed1217393f0110deedd41739ed323930315e5d5d5d2b -5d2b2b5d2b25140e0223222e023535060623222e0235343e023332161711343e0233321e0215 -03262623220e0215141e0233323e02370381050d140f10150d07489a5b628a57283262905f52 -8842050e171112170d06774b8b4c45623e1c183a60482444484d2c14070a060303060a07824e -594c82af6273b9824649470221060a060404060a06fd4e5b60426c88464b8e6f43142e493600 -0000000200a7ffef03bd0572002a003d004f4033793b893b02792e892e020528152802680901 -0503150302080a2136b1152bb200150a363521040530a4264a1b46104c39a4054d003fed3f3f -3fed121739012fd4ed10ed323930315e5d5d5d5d5d01140e0223222e022715140e0223222e02 -3511343e0233321e0215113e0333321e0207342e0223220e020711161633323e0203bd326391 -5e2a47444729060e140f0f150d05050e171112170d062b4e4a4927628b57287d183a60482345 -484d2b4b8b4b45623e1c01e474b9824611263a2975070a060303060a070544060a070303070a -06fdcb2d3d25104c82ae754c8e6e43142e4936fe765b61436c880001002bfffa027c0578003c -003f40273320080c48161010002000300003001bb1300f2a012a3f2501250aa436471a26a430 -49204c1049003f3f3fed323fed012f5dc45d33fdc45d33c430312b01140e0223222e0223220e -02151533321e02151406232311140e0223222e02351123222635343e02333335343e0233321e -04027c030507050816212d1e2a3a240fde070a0804100dde060d181111170e05880e0f04070b -0788224568452240210b0703051f0e110a040a0c0a1b3b5d426b060d130d1919fcc7060a0604 -04060a06033919190d130d06675f8654260d0f0b1015000200bdfffa03a6050e001c00290026 -40132406c2111dc3001125ba06060c23ba15510c55003f3fed12392fed012fd4ed10ed323031 -01140e02232311140e0223222e02351134363321321e0407342e0223231133323e0203a63d72 -a474a8060e171211180e0626120107274a6367482781425f672eb8b055724e29039b5a966c3c -fe11060a060404060a0604bb241b07173f5b75515475390ffdce2b4c6b00000100a7fffa011e -057200150010b600b10a1046054c003f3f012fed303125140e0223222e023511343e0233321e -0215011e060d171211170e05050e171112170d0614060a060404060a060544060a070303070a -0600000000020050ffef03bf051f0013002b0076405569287928026a277a2702482758270265 -23752302651d751d02471d571d026a187a1802b71201871101061101080d01670c770c02b808 -0109070107030108590269020214c34000010020c30a2c1bb90f5325b90556003fed3fed0110 -deedd45ded30315d5e5d5d5d5d5d5d5d5d5d5d5d5d5d5d5d01140e0223222e0235343e023332 -1e0207342e0423220e0215141e0233323e0403bf2e6bad7f75a3652d2e6aad7f75a3662d800f -2031455837637b4518224a74534262462e1a0a028992f4b16355a8f7a291f5b16355a8f7ad63 -a17e5d3d1d5d9ac66a94d78b432a4c687a8800000001004a01c80228022c000f000eb400070b -a404002fed012fcd3031011406232122263534363321321e020228100dfe5d0d11110d01a306 -0b080401fa1d15161c1c16050c130000ffff0077ffef03b3051d02060026000000010068ffef -0387050e003e0072404b973da73db73d03053d01973ca73cb73c038b20018b1a01781a010602 -0137c17028802802283228320e1dc3000e3f0aba13131836ba2c3ab900223022602270220408 -2222052c5118ba0556003fed3f12392f5e5ded10ed11392fed0110ded4ed1239392f2f5ded30 -315d5d5d5d5d5d5d01140e0223222e0635343e0233321e0233323e0235342e02232206232226 -351134363321321e02151406232111363633321e020387447cad683c6c54350e05040203070a -060a2b4a6d4b477a5a332c5a895c3f55241a181f1a0227080e0a051312fe11234b3572a96f37 -019d67a06e391319190d090d130d0c140e071a1f1a234c7553466946220d192401fc1c1f070e -140d1720fe6605023762880000010094feab01dc05880023001a400c1aaf0010af0603b2151f -0b85003f2f012ffdd6edd6ed3031010602151412171616060623222e02272e0335343e02373e -0333321e0201d96560636004010914110c130f0a033653391d203b533301060c15110f130b01 -0567ccfe54d3d5fe56cf090d09040204070564d0d8de7171ded9d2660305050305080d000000 -00010071ffef037e051f00580085405486579657027557017656010756017750875002374c01 -254c01044c144c0298340189189918021703010502010831c34e53264e40264e4e2640030e1b -c3000e593b113b111636ba49532cba202005495316ba0556003fed3f12392fed3910ed113939 -2f2f0110ded4ed1217392f2f2f11123910ed30315e5d5d5d5d5d5d5d5d5d5d5d5d01140e0223 -222e0635343633321e0233323e0235342e022323222e0235343e023333323e0235342e022322 -0e0223222e0235343e0633321e0215140e0207151e03037e376ca26a4070573a0e0705030d0b -0937577346486c4a25305a825180060d0b07060a0d08714671502b1d39573a3d644d310a060a -0703020608123851683b5983562a21405d3c4371532f016d548c6638161e200c0c0f17101e16 -22282226455f383c614626060d140f0d130d062647633d2d503c22242b24040c15110b110e0d -12242218305473433e6b53380a020634526d00010011fffa03cd050e0022001a400c0006c218 -110612ba1d510c55003f3fed32012fc4fdcd303101140e02232111140e0223222e0235112122 -2e0235343e023321321e0203cd04080c07fe7e060e181111180e06fe7e080b080404080b0803 -7e070c080404d60d140d07fb73060a060404060a06048d070d140d0e150e07070e1500000001 -00bd000003460514001a0016400a15c200090f5215ba0654003fed3f012fcded303125140e02 -232122263511343e0233321e02151121321e02034604080c08fdcf1226060e181112170e0601 -ef080c0804380e140f071b2404bb060a060404060a06fb75070d1500000000010087feab01cf -05880021001c400d00b2121505af0f1faf151a0a85003f2f012fedd6ed10d6ed303101140e02 -070e03232226263637361235340227263e0233321e0217161201cf1d395236030a0f130c1214 -0902046162616403010b130f10150d0502667a021871ded8d0640507040204090d09cd01acd5 -d301accc070d080503050503cbfe4d00000000020077ffef03b3051d00340048006940456742 -77420296330115332533353303043301953201992c0136289628020908018b07010503850302 -087702012b3fcf0c1c1c0c35cf000c493ac830300526c8136344c80569003fed3fed12392fed -0110ded4ed12392f10ed3230315d5e5d5d5d5d5d5d5d5d5d5d01140e0223222e0435343e0433 -321e0615140e0223222e0223220e02073e0333321e0207342e0223220e0207141e0233323e02 -03b33068a3734c76593c261114304f76a069254a3f2b0e06040201050a080b25374e3565915e -2e031c45525c336d925825801a3e674c2a554f471c25486b474a6c4621019c4e9a794c27496b -8aa56056ad9d886339090e120b0b0c0f0a0b120c070e120e548eba66102019103a6587583f68 -4a290f1a23148cbf7533395b6f00079e056d03b8fe9300000000050efdda0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000047005e007600a3005200730000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000 -00000576000b03b1000600130000fffaffedfea6ffedfeb8050e000600130000fffaffedfe93 -00000000041d00060011000000000000ff09ffee050e0013041d0006000f0000fffafff1fe93 -0000feb803420006050e0006000bfdc7fffafff50000ff2503090006000dff36fffafff30287 -0006000d0000fffafff1079efeaffea703090006000b0437019bfdda0053003a0041004c0054 -005e0055005f006b007e0041004a00550062007a004a005b006c007500820043004b0056005f -0066006d0076007f009c00a300c000d2004c0055005e006700700077007e00870090009700ab -00c9005d0064006d0074007b008a00a100bd00680071007a0083008c009800ab005d0066006d -007600ad006600700079008000890091009a00ab0048005d006c0075004f007100780064008a -006a007f0090008c007700660000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000055a001500a0fff8ff42fea2fdbc0325030c01cc007b008700800075004800fa -00620514006b052cfff60122fff1050affec047ffff10131fff2000a037c0366404065585554 -535251504f4e4d4c4b4a494847464544434241403f3e3d3c3b3a39383736352f2e2d2c282625 -2423221f181411100f0d0b0a090807060504030201002c4523466020b02660b004262348482d -2c452346236120b02661b004262348482d2c45234660b0206120b04660b004262348482d2c45 -23462361b0206020b02661b02061b004262348482d2c45234660b0406120b06660b004262348 -482d2c4523462361b0406020b02661b04061b004262348482d2c0110203c003c2d2c20452320 -b0cd442320b8015a51582320b08d44235920b0ed51582320b04d44235920b0042651582320b0 -0d44235921212d2c20204518684420b001602045b04676688a4560442d2c01b10b0a43234365 -0a2d2c00b10a0b4323430b2d2c00b0282370b101283e01b0282370b10228453ab10200080d2d -2c2045b00325456164b050515845441b2121592d2c2045b0004360442d2c01b00643b0074365 -0a2d2c2069b04061b0008b20b12cc08a8cb8100062602b0c642364615c58b00361592d2c8a03 -458a8a87b0112bb0292344b0297ae4182d2c4565b02c234445b02b23442d2c4b525845441b21 -21592d2c01b005251023208af500b0016023edec2d2c01b005251023208af500b0016123edec -2d2c01b0062510f500edec2d2c20b001600110203c003c2d2c20b001610110203c003c2d2c00 -b00743b006430b2d2c21210c6423648bb84000622d2c21b08051580c6423648bb82000621bb2 -00402f2b59b002602d2c21b0c051580c6423648bb81555621bb200802f2b59b002602d2c0c64 -23648bb84000626023212d2c4523456023456023456023766818b08062202d2cb00426b00426 -b00425b0042545234520b003266062636820b0032661658a2344442d2c2045b0005458b04044 -2045b04061441b2121592d2c45b1302f4523456160b0016069442d2c4b5158b02f2370b01423 -421b2121592d2c4b515820b0032545695358441b2121591b2121592d2c45b01443b0006063b0 -016069442d2cb02f45442d2c452320458a60442d2c45234560442d2c4b235158b90033ffe0b1 -34201bb3330034005944442d2cb0164358b00326458a586466b01f601b64b020606620581b21 -b04059b001615923586559b02923442310b029e01b2121212121592d2cb0164358b004254564 -b020606620581b21b04059b0016123586559b0292344b00425b00725082058021b0359b00525 -10b004252046b0042523423cb0072510b006252046b00425b0016023423c2058011b0059b005 -2510b00425b029e0b0072510b00625b029e0b00425b00725082058021b0359b00425b0032543 -48b00625b00325b0016043481b2159212121212121212d2cb0164358b004254564b020606620 -581b21b04059b0016123581b6559b0292344b00525b00825082058021b0359b0042510b00525 -2046b0042523423cb00425b0072508b0072510b006252046b00425b0016023423c2058011b00 -59b0042510b00525b029e0b02920456544b0072510b00625b029e0b00525b00825082058021b -0359b00525b003254348b00425b0072508b00625b00325b0016043481b215921212121212121 -2d2c02b00425202046b004252342b0052508b003254548212121212d2c02b0032520b0042508 -b0022543482121212d2c452320451820b00050205823652359236820b040505821b040592358 -65598a60442d2c4b53234b515a5820458a60441b2121592d2c4b545820458a60441b2121592d -2c4b53234b515a58381b2121592d2c4b5458381b2121592d2cb002435458b0462b1b21212121 -592d2cb002435458b0472b1b212121592d2cb002435458b0482b1b21212121592d2cb0024354 -58b0492b1b212121592d2c208a08234b538a4b515a5823381b2121592d2c0020b200400325b0 -062649618b3812342d2c014623466023466123201020468a61b8ff80628ab140408a70456068 -3a2d2c208a2349648a2353583c1b21592d2c4b52587d1b7a592d2cb012004b014b54422d2cb1 -020042b123018851b1400188535a58b910000020885458b202010243604259b12401885158b9 -20000040885458b2020202436042b12401885458b2022002436042004b014b5258b202080243 -6042591bb940000080885458b202040243604259b94000008063b80100885458b20208024360 -4259b94000010063b80200885458b202100243604259b94000020063b80400885458b2024002 -43604259595959592d2c451868234b51582320452064b04050587c59688a6059442d2cb00016 -b00225b0022501b001233e00b002233eb10102060cb00a236542b00b234201b001233f00b002 -233fb10102060cb006236542b0072342b00116012d2c00456823b140408a7045606823456861 -65b200010115132338b1010011362d0000010000000633334303dd2a5f0f3cf5001b08000000 -0000c9dc9d7000000000d5968a5bfbe9fdda0a78079e00000009000200010000000000010000 -0600fe0001c40acdfbe9fb080a78000100000000000000000000000000000027040e002e0482 -002802c200a703c00043042800a3065400a703f40068042800a702a1002701cf0000040e00bd -040e0080044800bd0387002903180055039f004c01c400940326006404db00bd03c400680409 -00bd051b00bd0448006b042c00640428006b042800a70264002b041000bd01c400a7040e0050 -0273004a040e0077040e006802640094040e007103de0011035a00bd02640087040e00770000 -00000000012c0000025000000304000004c800000594000006e4000007dc000008ac0000099c -0000099c00000a5400000b5400000c3000000cfc00000e2000000f3000000fb0000010780000 -10f800001208000012d8000013bc0000147c0000154c000016680000176400001844000018e4 -0000193c00001a3000001a7800001a8800001ba400001c3000001d9800001e1c00001e880000 -1f140000204000010000002704250017010a000800020010002f0066000002ba00dc00080001 -b1092f410e013c003f013c0002013901360038001f013801360038001f01370136b2381fd041 -3e01360001014800380147005501460038014500550144003801430055014200380141005501 -400038013f0055012f0038012e0055012d0038012c00550080014b00010080014a0001014900 -38012e0055004f0147000100f0013f00010000013d0030013d00020000013d0070013d008001 -3d00e0013d0004ffc0013db30e114600410e0134003001340080013400d00134000400000133 -0020013300800133b2030c2f410c01310001000f0131001f0131006f0131007f0131008f0131 -b2050f00b8012e409b0114e2a4ff1fe1b1ff1fdb94711fd9d72e1fdad6691fd8d49d1fd7d62c -1fd5d6371fd0ce1a1fcfce681fcdceae1fccce801f0fce016d1fce010fce013bcac8821fc9c8 -8c1fc7c8361fc6c24e1fc5c2581fc4c25f1fc3c2661fc1c26d1fc0c2801f00c210c220c2036d -20c230c20210c220c20200c210c2023b20c201bfba261fbeba3a1fbdba521fbcba6d1fbbba73 -1fb9ba831fb8ba791f50ba01b8ffc0b3ba7a8246b8ffc0b3ba686e46b8ffc0b3ba555a46b8ff -c0b3ba424646b8ffc040ffba2f3246b5b14b1fb4b15d1fb3b1631fb2b16a1fb0b1771fafb182 -1faeb15b1fa6a4711fa5a47a1fa3a48c1f9f9d1d1f9e9d391f9c9d931f9998551f988c301f8a -01895585032b1f8403471f825b805581ab80557f5b7d557eab7d552f7d012f7d3f7d6f7d9f7d -cf7dff7d06795b775578ab77551f778f779f770377017a557c5b7a557bab7a55707a01885b86 -5587ab86551f868f869f8603860372555076607602760372556e666d55b06d015f6d6f6d7f6d -036d037255745b725573ab725540726072707280720472026f55715b6f5570ab6f556f06011f -6a032b1f6947675568ab67556647645565ab645563476255614760554060015c475a555bab5a -404a5557032b1f5647545555ab54555347515552ab51555106461f4f474e554e03251f4d474b -554cab4b554a47485549ab485548022b1f4747465546012b1f24220a1f2322181f0003010803 -bd0100010000050001019000542b4bb807ff524bb008505bb00188b02553b00188b040515ab0 -0688b000555a5b58b101018e59b21a01024354234b515a58b101018e59858d8d001d424bb01d -5358b203a0a01d42594bb0805358b20340401d42594bb0ff5358b20300001d42595e732b2b2b -2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b732b2b2b2b2b2b2b2b2b2b2b732b2b2b73732b2b732b -732b2b732b2b2b732b2b73742b2b2b2b2b2b2b2b2b012b2b2b002b2b2b012b2b2b2b2b2b2b00 -2b2b2b2b2b742b2b2b2b2b2b2b01755e7374755e732b2b2b2b2b2b002b2b2b015e73745e732b -2b2b2b002b2b012b2b2b002b2b012b005e735e73745e73732b737473732b73732b2b2b2b2b2b -2b732b2b2b74185e000000> -] def -/f-0-0 currentdict end definefont pop -%%EndResource -%%EndSetup -%%Page: 1 1 -%%BeginPageSetup -%%PageBoundingBox: 0 0 483 193 -%%EndPageSetup -q 0 0 483 193 rectclip -1 0 0 -1 0 193 cm q -0 g -0.24 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -0.375 -106.621 m 0.375 -96.152 l 0.375 -85.98 8.625 -77.73 18.801 -77.73 - c 319.27 -77.73 l 329.449 -77.73 337.699 -69.48 337.699 -59.301 c 337.699 - -69.48 345.949 -77.73 356.121 -77.73 c 463.84 -77.73 l 474.02 -77.73 482.262 - -85.98 482.262 -96.152 c 482.262 -106.621 l S Q -0.976471 0.768627 0.6 rg -0.375 106.625 160.629 28.348 re f* -0 g -0.75 w -q 1 0 0 -1 0 0 cm -0.375 -106.625 160.629 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 54.599999 124.575997 Tm -/f-0-0 1 Tf -[(A)31(r)12(g)3(u)-12(m)59(e)-36(n)53(t)-3( )26(1)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -53.918 163.316 53.543 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -53.918 -163.316 53.543 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 64.749999 181.450996 Tm -/f-0-0 1 Tf -[(2)39( )-39(By)40(t)-3(e)26(s)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -107.461 163.316 53.543 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -107.461 -163.316 53.543 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 112.579998 181.450996 Tm -/f-0-0 1 Tf -[(S)-12(i)20(z)-4(e)28( )26(By)-21(t)63(e)-37(s)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -0.375 163.316 53.543 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -0.375 -163.316 53.543 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 11.15 181.450996 Tm -/f-0-0 1 Tf -[(2)41( )-39(By)45(t)-3(e)28(s)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -53.918 134.973 53.543 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -53.918 -134.973 53.543 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 60.649999 153.000997 Tm -/f-0-0 1 Tf -[(D)10(a)6(ta)-196(S)55(i)-44(z)62(e)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -107.461 134.973 53.543 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -107.461 -134.973 53.543 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 124.129997 153.000997 Tm -/f-0-0 1 Tf -[(D)10(a)6(ta)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -0.375 134.973 53.543 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -0.375 -134.973 53.543 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 19.275 153.000997 Tm -/f-0-0 1 Tf -[(K)37(e)-37(y)]TJ -ET - Q -Q -0.976471 0.768627 0.6 rg -161 106.625 160.629 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -161 -106.625 160.629 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 215.449995 124.575997 Tm -/f-0-0 1 Tf -[(A)29(r)10(gu)-13(m)57(e)-38(n)51(t)-5( )26(2)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -214.551 163.316 53.543 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -214.551 -163.316 53.543 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 225.629995 181.450996 Tm -/f-0-0 1 Tf -[(2)41( )-39(By)45(t)-3(e)28(s)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -268.09 163.316 53.543 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -268.09 -163.316 53.543 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 273.419994 181.450996 Tm -/f-0-0 1 Tf -[(S)-12(i)20(z)-4(e)28( )26(By)-23(t)63(e)-39(s)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -161 163.316 53.543 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -161 -163.316 53.543 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 171.999996 181.450996 Tm -/f-0-0 1 Tf -[(2)41( )-39(By)45(t)-3(e)28(s)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -214.551 134.973 53.543 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -214.551 -134.973 53.543 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 221.499995 153.000997 Tm -/f-0-0 1 Tf -[(D)7(a)4(t)-5(a)-197(S)53(i)-47(z)60(e)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -268.09 134.973 53.543 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -268.09 -134.973 53.543 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 284.969994 153.000997 Tm -/f-0-0 1 Tf -[(D)10(a)6(ta)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -161 134.973 53.543 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -161 -134.973 53.543 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 180.149996 153.000997 Tm -/f-0-0 1 Tf -[(K)39(e)-35(y)]TJ -ET - Q -Q -0.976471 0.768627 0.6 rg -321.629 106.625 160.633 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -321.629 -106.625 160.633 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 375.599992 124.575997 Tm -/f-0-0 1 Tf -[(A)31(r)12(g)3(u)-12(m)59(e)-36(n)53(t)-3( )26(N)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -375.18 163.316 53.543 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -375.18 -163.316 53.543 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 386.469991 181.450996 Tm -/f-0-0 1 Tf -[(2)41( )-39(By)45(t)-3(e)28(s)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -428.719 163.316 53.543 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -428.719 -163.316 53.543 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 434.29999 181.450996 Tm -/f-0-0 1 Tf -[(S)-12(i)20(z)-4(e)28( )26(By)-21(t)63(e)-37(s)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -321.629 163.316 53.543 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -321.629 -163.316 53.543 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 332.849993 181.450996 Tm -/f-0-0 1 Tf -[(2)39( )-39(By)40(t)-3(e)26(s)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -375.18 134.973 53.543 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -375.18 -134.973 53.543 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 382.379992 153.000997 Tm -/f-0-0 1 Tf -[(D)10(a)6(ta)-196(S)55(i)-44(z)62(e)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -428.719 134.973 53.543 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -428.719 -134.973 53.543 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 445.81999 153.000997 Tm -/f-0-0 1 Tf -[(D)7(a)4(ta)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -321.629 134.973 53.543 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -321.629 -134.973 53.543 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 340.999992 153.000997 Tm -/f-0-0 1 Tf -[(K)39(e)-35(y)]TJ -ET - Q -Q -0.976471 0.768627 0.6 rg -0.375 106.625 160.629 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -0.375 -106.625 160.629 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 54.599999 124.575997 Tm -/f-0-0 1 Tf -[(A)31(r)12(g)3(u)-12(m)59(e)-36(n)53(t)-3( )26(1)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -53.918 163.316 53.543 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -53.918 -163.316 53.543 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 64.749999 181.450996 Tm -/f-0-0 1 Tf -[(2)39( )-39(By)40(t)-3(e)26(s)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -107.461 163.316 53.543 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -107.461 -163.316 53.543 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 112.579998 181.450996 Tm -/f-0-0 1 Tf -[(S)-12(i)20(z)-4(e)28( )26(By)-21(t)63(e)-37(s)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -0.375 163.316 53.543 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -0.375 -163.316 53.543 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 11.15 181.450996 Tm -/f-0-0 1 Tf -[(2)41( )-39(By)45(t)-3(e)28(s)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -53.918 134.973 53.543 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -53.918 -134.973 53.543 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 60.649999 153.000997 Tm -/f-0-0 1 Tf -[(D)10(a)6(ta)-196(S)55(i)-44(z)62(e)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -107.461 134.973 53.543 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -107.461 -134.973 53.543 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 124.129997 153.000997 Tm -/f-0-0 1 Tf -[(D)10(a)6(ta)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -0.375 134.973 53.543 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -0.375 -134.973 53.543 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 19.275 153.000997 Tm -/f-0-0 1 Tf -[(K)37(e)-37(y)]TJ -ET - Q -Q -0.976471 0.768627 0.6 rg -161 106.625 160.629 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -161 -106.625 160.629 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 215.449995 124.575997 Tm -/f-0-0 1 Tf -[(A)29(r)10(gu)-13(m)57(e)-38(n)51(t)-5( )26(2)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -214.551 163.316 53.543 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -214.551 -163.316 53.543 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 225.629995 181.450996 Tm -/f-0-0 1 Tf -[(2)41( )-39(By)45(t)-3(e)28(s)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -268.09 163.316 53.543 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -268.09 -163.316 53.543 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 273.419994 181.450996 Tm -/f-0-0 1 Tf -[(S)-12(i)20(z)-4(e)28( )26(By)-23(t)63(e)-39(s)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -161 163.316 53.543 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -161 -163.316 53.543 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 171.999996 181.450996 Tm -/f-0-0 1 Tf -[(2)41( )-39(By)45(t)-3(e)28(s)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -214.551 134.973 53.543 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -214.551 -134.973 53.543 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 221.499995 153.000997 Tm -/f-0-0 1 Tf -[(D)7(a)4(t)-5(a)-197(S)53(i)-47(z)60(e)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -268.09 134.973 53.543 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -268.09 -134.973 53.543 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 284.969994 153.000997 Tm -/f-0-0 1 Tf -[(D)10(a)6(ta)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -161 134.973 53.543 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -161 -134.973 53.543 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 180.149996 153.000997 Tm -/f-0-0 1 Tf -[(K)39(e)-35(y)]TJ -ET - Q -Q -0.976471 0.768627 0.6 rg -321.629 106.625 160.633 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -321.629 -106.625 160.633 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 375.599992 124.575997 Tm -/f-0-0 1 Tf -[(A)31(r)12(g)3(u)-12(m)59(e)-36(n)53(t)-3( )26(N)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -375.18 163.316 53.543 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -375.18 -163.316 53.543 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 386.469991 181.450996 Tm -/f-0-0 1 Tf -[(2)41( )-39(By)45(t)-3(e)28(s)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -428.719 163.316 53.543 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -428.719 -163.316 53.543 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 434.29999 181.450996 Tm -/f-0-0 1 Tf -[(S)-12(i)20(z)-4(e)28( )26(By)-21(t)63(e)-37(s)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -321.629 163.316 53.543 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -321.629 -163.316 53.543 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 332.849993 181.450996 Tm -/f-0-0 1 Tf -[(2)39( )-39(By)40(t)-3(e)26(s)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -375.18 134.973 53.543 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -375.18 -134.973 53.543 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 382.379992 153.000997 Tm -/f-0-0 1 Tf -[(D)10(a)6(ta)-196(S)55(i)-44(z)62(e)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -428.719 134.973 53.543 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -428.719 -134.973 53.543 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 445.81999 153.000997 Tm -/f-0-0 1 Tf -[(D)7(a)4(ta)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -321.629 134.973 53.543 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -321.629 -134.973 53.543 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 340.999992 153.000997 Tm -/f-0-0 1 Tf -[(K)39(e)-35(y)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -60.895 28.727 85.039 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -60.895 -28.727 85.039 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 87.519998 46.400999 Tm -/f-0-0 1 Tf -[(2)42( )-38(B)4(y)43(te)27(s)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -145.93 28.727 85.039 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -145.93 -28.727 85.039 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 174.799996 46.400999 Tm -/f-0-0 1 Tf -(2)Tj -ET - Q -Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 182.879996 46.400999 Tm -/f-0-0 1 Tf -[(B)4(y)43(te)]TJ -ET - Q -Q -0.976471 0.768627 0.6 rg -60.895 0.375 85.039 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -60.895 -0.375 85.039 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 80.749998 17.981 Tm -/f-0-0 1 Tf -[(Co)59(m)-6(m)-6(a)4(n)54(d)]TJ -ET - Q -Q -0.976471 0.768627 0.6 rg -145.93 0.375 85.039 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -145.93 -0.375 85.039 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 164.769996 11.351 Tm -/f-0-0 1 Tf -[(N)39(u)-11(m)-6(b)53(e)28(r)-53( )26(o)56(f)]TJ -ET - Q -Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 164.419996 24.600999 Tm -/f-0-0 1 Tf -[(A)31(r)12(g)3(u)-12(m)59(e)-36(n)53(t)-3(s)]TJ -ET - Q -Q -0.976471 0.768627 0.6 rg -230.969 0.375 212.602 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -230.969 -0.375 212.602 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 320.429993 17.981 Tm -/f-0-0 1 Tf -[(P)42(a)5(y)-25(l)21(o)-9(a)4(d)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -230.969 28.727 212.602 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -230.969 -28.727 212.602 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 271.199994 46.400999 Tm -/f-0-0 1 Tf -(0)Tj -ET - Q -Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 276.769994 46.400999 Tm -/f-0-0 1 Tf -(-)Tj -ET - Q -Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 280.149994 46.400999 Tm -/f-0-0 1 Tf -[(6)42(5)-23(5)42(2)-24(6)42( )27(\()-32(1)42(6)-23(3)42(6)-24(3)42( )27 -(f)-32(o)57(r)12( )-38(T)19(L)21(S)-12(\))34( )27(B)4(y)-23(t)64(e)-36(s) -]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -60.895 28.727 85.039 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -60.895 -28.727 85.039 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 87.519998 46.400999 Tm -/f-0-0 1 Tf -[(2)42( )-38(B)4(y)43(te)27(s)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -145.93 28.727 85.039 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -145.93 -28.727 85.039 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 174.799996 46.400999 Tm -/f-0-0 1 Tf -(2)Tj -ET - Q -Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 182.879996 46.400999 Tm -/f-0-0 1 Tf -[(B)4(y)43(te)]TJ -ET - Q -Q -0.976471 0.768627 0.6 rg -60.895 0.375 85.039 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -60.895 -0.375 85.039 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 80.749998 17.981 Tm -/f-0-0 1 Tf -[(Co)59(m)-6(m)-6(a)4(n)54(d)]TJ -ET - Q -Q -0.976471 0.768627 0.6 rg -145.93 0.375 85.039 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -145.93 -0.375 85.039 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 164.769996 11.351 Tm -/f-0-0 1 Tf -[(N)39(u)-11(m)-6(b)53(e)28(r)-53( )26(o)56(f)]TJ -ET - Q -Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 164.419996 24.600999 Tm -/f-0-0 1 Tf -[(A)31(r)12(g)3(u)-12(m)59(e)-36(n)53(t)-3(s)]TJ -ET - Q -Q -0.976471 0.768627 0.6 rg -230.969 0.375 212.602 28.348 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -230.969 -0.375 212.602 -28.348 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.274999 0 0 -11.274999 320.429993 17.981 Tm -/f-0-0 1 Tf -[(P)42(a)5(y)-25(l)21(o)-9(a)4(d)]TJ -ET - Q -Q -0.984314 0.843137 0.733333 rg -230.969 28.727 212.602 28.344 re f* -0 g -0.75 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -1 0 0 cm -230.969 -28.727 212.602 -28.344 re S Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 271.199994 46.400999 Tm -/f-0-0 1 Tf -(0)Tj -ET - Q -Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 276.769994 46.400999 Tm -/f-0-0 1 Tf -(-)Tj -ET - Q -Q -q -0 0 483 193 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -11.3 0 0 -11.3 280.149994 46.400999 Tm -/f-0-0 1 Tf -[(6)42(5)-23(5)42(2)-24(6)42( )27(\()-32(1)42(6)-23(3)42(6)-24(3)42( )27 -(f)-32(o)57(r)12( )-38(T)19(L)21(S)-12(\))34( )27(B)4(y)-23(t)64(e)-36(s) -]TJ -ET - Q -Q -Q Q -showpage -%%Trailer -end -%%EOF diff --git a/hcp/doc/img/hcp.pdf b/hcp/doc/img/hcp.pdf deleted file mode 100644 index bf60a1f53bf186b923c47317a749b3957e668aa6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179702 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ν?8ofKSt_2gpW@b@wVz{8v61E2#(KVEvkkYmaCBxY!X}n7_DaYJYr>Nd zN6QzH&0~9=iaDnJhWd)1WspX|pN!$ywJA;Jm{QPm9{CWO$C2SOdJ1vhTk3CW551%I z>2!M6C3iS|@1F0TZ=LB*bEjFA?hJQ^b(TBZonsAl7rG0rbKFJlBI{iDM)yW*h`Y>P zW({?3b#JqVxp%sES|i-M-Mg)k?)~lqR+amZ`;b-bKH@%VjdovhU$({?UYXW;g}HT> zPHvs0lUrw>#jW$2bL*63TBl^wI;EJ_SqivymI7{_GED0%3*0)l#;sGxw9dSWu2>1G zHD<-`r{hnbEcdFBs8Fa+O{K6*dmy_lg`v!7MoJ}q` zo~>SFyK5?F$sE;&c=b5Er$mnZ*t&4^m%yHMikiZnlp{S#fs&ArK}G;8p|+yj}3nLpr@-&5Fwwo^UuD=z6Azx}|R;K+?E zj@u+(~wgrA7fZ39l zR|Kep=c#z)c_NQ9i%M}erE_dPoU%9~AH#MiL)IYIMB0?Y@pU)0L)~R}wnJ62nhLNQ z#T-xHLbZ8K?xGT`Ng2n`>!}{rp+453oTKQ^sUi5-2z+eJadZ+j;Yd1-nwm(OT9`PR zP6B6JgR^Zoik?lUAbReo-_svbC%sqir5^eV{RQ>Z`}Kb6rN7i)Qg8j0{*LMgOdh~JaUQ@r#d!eF$PyMMaUQ^OZ88BenLsL;Tp*q0fU`QvFj*bdFj*b*NDIxj zEFvN#OkPJ4a-%u3%V%$Oh~?7d=sSsOVqI%<H17vN!|5eeJ;z#Fg=W=p-NX#UtO(7Q$IaUkEa28qMpc-Flt*8zDUoeA$p#kMs_&r5#%9^uj;}fW?5*xY@oP@|V$?r#&BNkiF`H#}o|wtn^m+VbraD z;k``dflTEgh54Q)GMLx45R?f|n8+I)#1SQEID#Do7pJbEHs5 z#Ce_J`9^VmKa#59|HiWan@r=>dCb|VY8v|zQ;(U;(UsxmJUxU*ybzJw+xFW$viI!w zc=S6sV+`24>|K!I=(A$xh0-DTYl>!8-oK*HE!y5JAK|tNe|45AJj*ml(H!<0nc@<0 z3D0bixPrCv4si!d&RyazQnH0?Nm{m&typqSmZ$KH+sh7=D^HcDQl9KAE2x$nDMwPF zTqqY(k-SV^#yMucLTIaYs-4tceaf*{2jt+!a}zvw;8$XX1ddU!*tS}^K?7ijtFvXu|#)|_JnAe5Ea{T*F|^9JZAdV?R9&;uA}B`QFqbZn9_qKKJ|C5 zj_&Yz+{8iL>$!-75)gBcs-w7)yB^{VtXZD^~4wra$D|0i-MT7&88RWZC81u7dv z<}L3@%$t1X%^Tt)QsP_j6MNDCdy1CKiMgzUX5PIKv9B_Egt!xVB=SXDXR!Qcy9sV7 z?wk81{AqI?bnZm1%SWCazk<3wpvP6s}wF&}qR z6L7FSxYpH~>0C|S!L?&=_Uy+0PxJC2vm>C5XHlO;EVT{y?aSh5L3){9w#tz`9iwu; za;m)18)>0#pqo&sQ|-*4@<``MXO7;hB2{#1WOigWs(-&XgOFFLo6QlEM69nkV!D)l zyNUQC;#Q8Evc=uv9?C`Bl!v&fKs?W}QXyicBDI?5TC8j68dP70bch*jxEtdkO}J6^%FS&q>ek6D2+jz&#!l3U56n~s{|MRBV#*;|#_ajWv2w;!r1ZdIPc zs+c``ed1Q-IaK178u^iru{21mePN^`Qb8>u)sbpy8JQcIi{Hxlz4dTV>omv%pzMh0Y@G zzu0-!d5+4QHO?BU@4Vo=Kn0}KkKmJpLN9W&-%&m&-&T$j~9#i7f3Sv3#1tS1yT+F0%?YS zfebgrJuP6n!`$J4evqSSkgY|Y#H^0lfT?km03E<@O^k@AS=}rXZ}y6#1+5l=Li}b# zoA@&Whl2^II31%|6o}XnVQeJyk$#c4o4V6)M1>r~&G9M#iLeJr;u>)c=M1I}kb*iu zDyj)-s3v5?9@Ik=R38?(je1@^Puo^ zOet!M+Cph=lADamRz62e9a#&{;G83YbBvW{koX$=+>f!Wv`cpq= zpfia2JA<9GX`pkiGn~$Js#xaDeXKg1_Z{K69_5TL5&2ybXKIJocl;=Su6IZ=L*AlR%UK4<`%)+axk}=m|G#{R*JdR#oX#)ZVfQECVGXwkDBQR z^@G$(KdGOj*7_O!44tf>)6a2c_o7})r|9*1J+;#t^ag70l<;gjV78qx+b)=GSIo8> zX4@09?T^_Gz-$L$ww0LexwvDt$<(BcEJ11sQfonK1CZJvq&5Lko5*v`pd`p*GGs9& zmdO=*y0ZqFlFN}Yxqo&4inqM~T2yFz(GKC)rIS26W-L`1Y*ZWAsB>7N?x1086H4h7 zMC~SSBX_7f6npkeOT|p@!jZ~xKV+(R(cOgR$%Mpc6otr1A#%z?k7RQH1|eOhL)S6|cg^)9KE* zJ15fnpJ?p~wVo1<<`7q>A*PEUrt82`P((cu4-eGuISDk_sbIOg@_&@$Cnh=3U0`Mh zT^CPI%~K>n_R5?C+UxE0tO@3B8!}e2ZvkWDjMnT{V9G&p2)lx#_vT`)S=V^2t^du| zPUh_IFt?T=vbdeDq8odFN->!8K6C%E2JSzG%>D;^zEqI0JP)oK{OXwthm%fMXlCelpE7X>)(5q~V z-qY_>2h`X*>+ke;)CG0*3bxdVY;&`nY_>%eP6eIL_Gd74=XkrC&fq9-Cfnj`oNL%d zt#DRQFXtKO8S3q9bT(2SUb7VH>xSGA^>ZU`g!;SrZaxigySd$HpxejoLxW6wKxe|j zoCV&SIEpxSx}7X{xodXtMt85L;g@{On}c%IOO#;t5^$b&?5IKPs1Rp`$WEyU`-!+eicCQ@SOZ}86F;GMrAcD}`DAGdbdkd&89J3^?W-;HRGU)2m(z3gcs zXVD_W@*afFNa##W=nQn>SG2{nT_0^XK-&#}v6CWdS2vn_KH`1W$Fw-TGi}&tqX=yj zqm7bZw6Otgd?$Y3HV(1vOZ;DG<5l|Qj*b)Okl7cS$hwA_E!)i??52d>tO>jM`&sF~ z)}8Q74eKjs=c1daWE(nIjE&yMJ%Ki&GkP5}GI!?*cjtqD=xXfyku_xzUtOEy`{Wb6 zI$HlSPhBJ+BOtaSL)oqjmsO->HD?ErKQxXvF^)@2<}7dGOilcut2g25PvvKP^%tCt zoG1^XJ4D_xTBLGL@S3QGnI|>^sut%qyn?=~_NYC+T3@seJiVc^f3-dnm9MCc-wc_~ zVmodsGHeIfLu`eI_?9K*pg0(fb;QFQQxjt9tXLba*T%c1FOh}5(p3icRYQrmz8>?= zd(Tv}?8ERJrbkPhCQjqF&k|=L#(0B$iRnENy(gjfWcDa2l)@e*gHqX}tM3=514ObyHqEDo#)tO}S~nA!W) zf?K~dGRR0%{64oxJ)ZZfNF)A!A<~@D%t%X|c_z+`UfT+k$~a1EP|gA+_O850eYDjW zZJmrW2LH<$4RA&ioY4knoc%9nl;e!1IO7zYan8S-(GX`e!x?RH#<_7LYX{1ZI7)j^ zhQ?7kfHEwO(h-#5ago|*C==o+JwcfmN9hB~q&UhHa~!$a&{@V3BE4cqePc)caTGnj8(J6} z*Ftwt{sM|Q`*>SjVn@Bb7IOYWv@G6Qd`fwU@oITC<6qx9y%qHpvp>;fplR;W2vZ}$ zNRWb&hBx9W-T<8 zoSKnqV^7uG?)4qL3%|rN|GFxU7NoiS`8)r6dW`yK)O*c1I~xiA6RU^GsQ3~pzFDaF zHpM9WqvCruYDQJ4_>PXN_zv-M#qo5!inblx+=m@@WpT71uklu^Jsq$3Za1C-^<6@J z*Ft^w-`y$vf3?1w^_%rwQ`sGatak`1yOWXoPDSp!6qViOsO;W~%I@8|9cSM6n%b)M zHfpPOOdGSkmDvFq>=H4*>=AIkcE81%n)hQIueE-FtIU3kVR4jz5!8HhQ1i`4 zU9<#s(K@J$)k9_pfvP#0~1x@b$(MO&dRda}M<-$m{9{rUmwq*v;d)J3n+Yp6oM zpkJV_dYxWJr|DPqtJF=ureCAe^&9#v>aI8Icd0ij#eGpJ9*9cuAXJJgQ7ImbO7T$C zPDi13T8-N27}QS3p>{e6wbKhwJDrBw>2%aiXQFm$p8PEN!*F%lC0cyleP$O=NicB-qh?}EE+yd2^lTagWg&J{d%(E@# z*$(sUfO(#Zd3MD-dtjbDG0)zZXJ5>75cItVN66Kl#_q)ZlKJL&)xdywT4GY-^-SyN zqpeCRV_JEP7N9eKWjBP`0g!+l0EyTEkc_-L#XMQWI@n9}rgZaE5o^yNF^IB6CFkQI z^Hdmx%~N3{%oAbkk;jNJK>AZ4NzXrOVjPw$}A^eU@CK6K$Xq z?V%GLpcAJ;CptqXxgq@?m(qGYB{jL6%=IMj_AkD{q z*h{bnX_AYSd<*M{Kyu*ty7=oC{H8IA;e|WTc7zIYQvbBQlO-;KaxTj=+;6lOvPyyCS~5 z$kJX$_L8>)) z;eZz|q`D@gx&V?~2uUu1B-eo?*M%h4gCsYCB)5Phw}d3Of+U{|Np25rb^$jlz|GUZ z&C?;ty&%c`AjtzD$pazDgCNOgLXs;X$!9^52SbvFLXt;7lB>Y?QIOiknK{4W6WYoOUZJ6KB!xMjx{)-;vhQ#-w?}?Pjo~qx!(+67$7l(U(Fz`;HSGP# zu=nj@?>oTWcZ9t^752Up?0py5`wHx4>B{llFdF=aBM12_V}C<##Hedv)L9sH7^Ai^YJpL^7*7FzQ^4IuD~ZJGYX5D@sF*m4Fy45iwE{ zGLZ!OFZRv@DvIP=_|-i#L@i)os(KU<5D`V7K@>0|D1s5ejG`jJfXE`|jA_kTF`$@T zBWBhdcMYr}B4WaX7!kybu6|v226jN#-G6-VeCN@JU)`>*)YX-Gy6P5tXR2SOCqZLZ zs`o+D+uVlV+Ey|W_FlrlYC_K9G<>uAll5k>ZYfy!L70iU2n&P_C|=kkoJLd2M$4t^ zidc)K2jAI|>KI$SsJ2(zOJh?9wS&}FIjS9{v1x5-JgbjN=R5zsRD)g_>AjkzJrv}} zAhWM#-&-Yzq?lO9z7hkZ9-G~9cWoT{+88Wh#&zi(+=XxhAP(470`8GhokW^17fiPK zC-X`wbSO%CbBISH&^YOTGMa(rp(SV~TB~!m8Ri40YEx+rY4bt;sEza=ER8+Fq;fd` z#p#?4ldfx0e~+b)I>0?-LyDj4+`}oz^~-O9AP^-ej&W@Ou=((m7<+7v>KQ)x;)`*tEoJ?RbAP1P;cZB?%7j_R)J z9;~L8!Mbf^@!X+zL%GoJ8O`RaTv zS)ih?B2p2p=&u-}7^)bKZE6YPV1adRAi!*B$S z!u{|dJQ)9ghvMOQBp#0^;wkt?JOj_hbMXSa2rt1&csX8)SK$=A7O%$}@n*aQZ^JwA zF1!ct!w2xs_z*sdPvBGd4E`0L!x!*x_!7R1ui&fr8orKi;ybti7vW<38o!n9qYqca z6-in2hI@lJu7oR*-t50{UyzJf@Cqd7jd^3F;7xf`q$drzq_GHJg|C7Pcst$>8S;+2 zBQlZ&$O4eDB3u!UDk&lq5vZ~vN)d&yqMxE4GEu}U;*qH$L6LyW6vGt5kP_Qq8)S~{ zupP3%_Shb&umg5L1Uq6!L~(6g8wt1$u7lLr1-qasSi~Z#itFOK$P(AX^^g_z#Gc3+ zdt+}@4L8IMkqvH)8zWoX6gNe7xEXGSs$)OwhwO1n+!EEmJ#kOufcxUUs3wlYk;oB8 z<7iY1$KV)L8^_{UmJ9IAs8Z~}71!|*WVf=A#H$Q6&n5l+U* zs4-rRSED9)4PJwq;&oVh3&tDp2Gk61!kdsU{t5qt{P0%16*b4(@pjY#r{YxPk9XtU zs3qQu_o4v2AMZzjI1Q(vR`?)3h+5+#_y}r)kK^O0Ek21)qIUQ+K8@PrU+^y|2%p7g zQ3re;pGUzs9jBuZd=Xzn9dQQEK%HVXS!A?k@=;+H54zrwFjFZ>3-L2P$AQ>5Uc6z2G&-e-fR>{}Y_(uuf8E)sF_ z1M&lG?@+zpk<6fpK@<3vX2kYs)nmH%c&@+RO#~V%Ycz*dqy65sow{IQB`^z6vE|ovR;P~S_qQVg^9RvRKi2K%2Nx#D3RN?Tb za5OG|Xzvixs|f-9->&AGUCkSzswR!TIvRgL~0D$j;WIQoW-F zr8+{P|F?$P$mW{KnWl1$K4+$x9HdfRt7RH}%d|vm!iYkZ*mu>kv6ZiO+}oYCHm0*H zyRp5mfJ=d^fUAKiz%{_Nz;(clz{9}PjQ`-Sgu|quc**;rP0B>S(WYa4LSS84pG z^*_q3VRx#(+SU5svR}GXt6E95sk77~g!BFQSj}#N{8ZR&Fo|EqujjY$sr-KaFn^Li z%U|TP_#6CPKA(Ti7xVA=&oa5pNMHw}838JHWfZd%*j^JYYWX5%4ka zDexJv09Xht0=@*k0lo#k1HK1-0G0qh0zUzN2Yv>AVKkEg!s|i?4t}<_EknGBb8CgXk|ZTkg|g^SQ(=1sO+Tdtn8xfs_a%~ z*IgN^?4h;msbq8dzo##f#o(`OsSHpCDqAUAE88gBD%&aBD?OE7N^fNYWkY2nWn*O% zWmBb3nO!rbuhLIz*Ie1+yD@N_9nX1ssPqT61O@;Dfvte8fo*_of$f0pfu2Awpf|7qupzJ!uraU+ zuqn{zyMCJieSv;|;tPz(F|fVd-ZL<%4$HH@8=Nc9M#MuWNs?V)n#7^4K*{}%Eim8 zt_lNy`JfX`3GzeWW3Vx26dr-i2O!&9zPx5O7&)ro%}-Ts-)rfNH@kr}I?TY88O;0v zZ4rs6i7-%z5e5md!eHSCAzm0FBrt7MOc#|fMi?uM6UGaP!X#m`Fh!Wk^ic^jg$2Sw zVUe&{SRy0|%Y@}j8x_+<#WYbdJyc8!71Kc_>=yP2dxd?%e&K+SCj2ZM6b=c8g(JdI z;h1n-I3b+;ug(;4K^DSLVT3T6X<-tk2{VMH!V0EyNmwgvV49YM?M%lKXjuABYq~Ok z`Lw0_nH-UsU?3O@MuM?WNvJGf!9*|>%mk%iE?5XEfe2I((7#K25k_)0uS)u7U(fzr z4-bbhlp(3~D07fTD}^TI8QR|*HD{O0uCb8if&ykxd`~9?k7giW(v;cY z@n_mNNFZrNT9ZnoGQq@zm=ZIhB<93|s0bmH2t-Y)kgCLzSP^Sdjo1)dVn?bIds2fq zkebAi)FN$2ThflSC$&is=|F->2>TjGI+HG>E7RyfLP-zOlZ268#ECGSQU8Bwn_zR> znSMsLFNXuu3IXf=Wu%4HY^^ohfcb5`5p2JOs#4n&Ahn0RQ4D;In1@!P&1f$=j?z&M z%0ory6KB9#a5h{W&Wmf#1#vyNep~`l5FZvYgsvdIIf3@Kp zrMFiv&W8)oDH%RmvzgZP)tY`)Bhw^AW|CQCHkm`_l6h?209i;Dk;UxG5J@7-$a1Dnh$NF$ zWHrpl`1k4%sV&(*RXtNZR~4vUs0vj@s+X!_)hpF&)f?4Y)jQRD)dy9H>Lb$Cy5WFK zRi9M9t3Io~5JWh_6B&^c1<@n=#DEwQBf@6f{h@6m7J1NqZ2l@8NMq(^JOqbB5G>I;w%jpWbk|xttbTv((Yv@|KP72S1)FbtYC-Ksam!`2fw)7A^Opnl` z^cX!(Pp~<*^fWy~f1$t9v-BK2PcN|frfN2u?jO_5F#>th^>hQ>NH@{V^e4K7Zl&Ak zcDjS^q^Wcl-A(tuVlPY=)+w2&6jm$aC^qOa*2`j)<<@976xLO;@UHrJP4q8aou z&7@ao7QM>m`qCVFo!+1~=`DJj=F&Ur0Cj&g>^AW?byY}X1^S8pPCwHx=xfaZY$SmM zPT&QNKEQGslekQjPu7w3WCPhqHj&M2h78$Cwvp{*2iZwd$u6>+>>+!}KC+)2AX(%p z$tKrG4!O=|#gJR%HpwM-$X#-e+$Rr69(hRe$s_WZq>-P=L2`&3CP&CoHVcD1Ay3IO z@|+Zq7o?CBk(cBIIY~~D)8q_W-AT@pbL2d^K+?%?O0+V?)P$N+GpeNK)Pl{!p_B?# z&F11zOKL@}X*Fs?ZK)ltPVH$8>OgB!M_P;4rcSgDb*3)Vm5S7jy3@MUgVtknb*LBh zrVZG99om>Sp-rg|ZAN{mA8k%sP=DHz2GBs-ingY0Xj|Hjwx>a~0}ZAjv?J|AJG1#b zv>WYCL)n}j8b*83-n0)5r+sMzjbw9sgjzyv!AYniI14U|0&mcowe4*E2K%jnAR8oSqX=-Nky1(} zVWnn#{moU^WignW2$$8>z|4@$(sj>le>72Nc93SaiDs_J78v6lMZchnC=1b8^FbJ!?aJl;ScGeg|F#<^l_V zw;0v>+7w!Y-5szq1ouxYt!ylUqO+G6$GS_6GUk*LEn9H+qsf4@Wjt4%Q4YLagIj?0z;lHbjM}UkU~m!MI(5eqf`+l znW*9S1XUk{ag{S_y~8^5U|n^w#rSZ_XZ$sHt6e&1#ZJb`fY)@^}T-K*e9nkcEr-o-QN#*DeXZXJpN;H_|| ziPouvq?%j5r9O2&QExj&8SUZlKA5`FX$;8defx?&+4E2lriDi@ZY$9$-uifj4E$U~ z`rU=!MN|FV#1WFjibt6^AWs)!r20vMm_ElNveDQ}eM%=I9-f><-%YA;OD6*!RO^&) z1|v?7R9~vj3aWk$4oi3d0i9a@%@QmUl}B2zIo6{+-$Oq%;I83lWtK_elQ4x7wo(A* ziOR$mFf}`M2sNJAvw-AjMwFDKT{kf;4BDa`S7?e9;|uJ<+_wFy2?=xN=%aq>L}3Vj zd!n%Mv`YJ!K)B?Xfcm@ujgy4?vdIb^pggXM_{0*(9u_TUIHC_R(_$S# zJ}U{kJ4B+E!9x4cfs?vr)OD)vw@H27i;kpJFK?*Otml6+w4s-FPKU3D{p;Ngl;I25 zS$(Oep;Aan?4`(xqej0I^|kjXu>m~OH_V$P2SNjL!E7k~jJFdL8U$8~Xes)j4ng}4 zzp80)pP&)XRh)CsL1Tu3)Io-L2q~#!D1`1*Y2!=6rxd5c#P)vq>HDU@^b1J`0i5?S z&AUc+Ul+sQ?7WO4S0+Ailddg);R&T4>8m>1%3Efnp9Q=Y?B3Cd_)e1#1kx$^HQNKW z$u-rUMxJdVrF>dJJ`PKHKkA2NHH^j&e^%&Vh0sau_-*mE>TFS@J2$ktf z0`(-^(?y6~B|Nnc^(1w}QmIkTZG)?1?k4R~5 zlztPQ(mh9fHu~IY(?sZ^PAAE4qZVEFUyGCe*0gh1t3OQ(sUu02x1kbcnJHn6E!H8+ zeDu}SWIIX@E)5rfE5IMZ)#2iBS-3D<9vuTu#om-pM62@mub+MC?~S8l_9)+{Ug(X#$u54 zIT@UC#7EIo8@xwe5{b04N?7NN;-z#-N#%8WUo4aoK)52S`bkBeG21WNKQNlhPekg#2d&#)Gt2`45syDD$qPSi^?LJJ;q&cy z9Kh4Ck-ve^v?I%8F&#@S0OsVK>o9&$ahTnH*4R{e+S75JT1#6eeq})5?KgGLz>juO{^{8Co5NlfuYr6gVu0K>b zpzLByy|u|=H%9}*dD%?7g8afR6bl&>E>;iDX6!d-au`kYbRVy3h{GRlYWFlX4jgvdE4W&EpN3k8L{ac8 zS4<n57b zsg`WYp5Af!W;tC+M(2|8sn%6UGJU$#BzeMh`4`Fx!RmT2e+^X~I~ujrJ$@&>sNNHv zofH<=>RapXQGZC`pb~{t#TM7?%~u^-i=Rd?csdVF1mROg=r3opU?0hhD5HTSiMi4! zaCfGTh=}GXmEQ7IFo*lYm_Vt~DtFBZl1=0M4C_^Q7LQGtYhTniuk|ZF^St%uAytD{ z-{aPMDWPP~5p@lNFVa6g>A?EO3_PH%S{bjYxGHS8Zzm#qp;--YR?qGwo*>*ven;s6 zH9M=U-^SiLh^@h?>4w}n#-Ol2XFA8S`DlOGmwuT+ym$rrloDG!g;;5Tl z*Gh#Jo2%?L4P0J@L5Iqt?5=tvWk|pBs+TFCK`rmYR`8CQsi#^7ix&sBD`Ba2m3@;G z@_Czr$vUjlM$q}!5z6$P!?q0M4-X8FW`pPRo;}|?`BHBBYDUF1Ecdy=ZpJ}Fqu#{x ztNE)A7w@GA1+~hkXGG_&1$>>EnAj?x<(V|(bj@tv&$`aCcF&DIH=VZ@Z!%C7UFCC>!_x1(?i0yW*DBL-jn!St5K-~F(5QRzEUG{wKvbSoS5X~`8XFcnvGqN&< z9XVEt-no$pdi`-2EM*iIq3_TSe_hZ%tLwpo)(lsrqjKj<%;w<$nOWlOb*+BT^Uy0g z)>E~&xlCKDUBfhCXm~6)qh9uCCcL%6)I>SctKVkEsPgH60ZH-uWxArHv8E5_yWR73 zN`bjKybjh5ol`u6mqlrFjCWN8IFwIwq|BA*N+?jYkCV`B+i&>KbP{An^c)o0H#SVE z<_6@XI9%w=)n+UpmqscP(|>m8-+_{$pU2b>OpYEtKFK6VG5D9X&l&)O|n^WxG^} zPa?c9vZ(1)8A9=)#={Z&h}6asM43i*M2Sgn@k9v4OGP&GS5ma$=?cE+OERjp(3wII z=J~Ba@~GgM2*9~{mNe-}O!B_WRT%<#9$nr`1D*$wq4B7&n=O~wTB3E`3RpKcziMK? z*3eAHn2tip)P{hT2jS)Od;4|X#<5@P7Y$`ng8+kr z%t@9xatTzmg=xR^&qKCdx9vimKPBp#T_lU0CHQf9E+F=~-W@h4K58`UOn}M~UUO%< z?lp`o)>vv^?|%m@_{=))*(Us^sX$whA8!#Z6^vO-6COutZJ%32H@OE7(@$Y5KEI37 z3egzJ`I2ZMz!ht6^l9B=$a_y>hURul%lSf`E3w7HF7r=IC2~kLqpX-+<+G#buk;7* zF@dheUrgLxi@sLn_ zNgmB~Pv7m4?S;<5PdbU$!bV}JE@RpDJg(ie;igsNIoR`bfz5>#RpN`9)R=fLxsS4EqB_v`>Bg3irZ2uFk7P)ou51f)M^Wf?kTVC!1m zIlhoKHxui7LqkSUe8nfq&Nd<<*m%!MXKtt5Q39uA$c;Takbldj=0&=rLNIwc#<_}X z{he*bQUpL>QN*~LFIa(Zr_`MIB(2Sv;EFS)d%oV+1&8ey`VWoQ4Pq?R@$Kn7R8BW@ zC1eLv%rFl%Rk&@wijqV_b+$^nu7*l#Rgp$rT#Q7m_u3_Q%sXA4y*xb|Ok}~koJ^D zI<`NC@96U(i-CG@W@q8#e8sCqb;mh3Q(>bAYx;POLKn$80}UBF1Z?ZpFwac*4Ig+tfRgt^Xc-oRWO^YKdaEZEvh~+lA%=P zidI^CGi+V+z5I9~+HMFceA~7BA^ityMuvlO^MbINW&ZvVpkR6V^R)nU?gG`aqMB_1 zKjGTa9&&2QGb(nE4oA!kGHb1KlMqYPv0r=3C{5jwu&QWNQE_OhB;dL1E{x+Ar! z<^HO%w!IGfQcFm-;@xgmP5fE)6xaSjNzI;>^i`H{)~`wJ8+j#oxX{|2TlnETF|jbH zKr^7f&|dFw>Alp9;NBGBfS`an0t+|#gTwtz06dp~jwmyO$~SqMkf=k$`Tm8c!zoQb ztac*RNBc6f_B#fjn82Z0Jb_X*T?B;^%~dsr7fTCDdP|eqDp!VwqN;20`lGx4(Jj#g z_)sKVa40siW)Ht%z4?BAe2VhxxH3p&;|?$X`4>L+*WwEU3ZLWg1B7my zU)c(3md)PpMF<|U?{;u58b_~HlC~Hc!@C70+jl~n-45b>EmTL)YVMJfO&m_1Cs^y0 z?-muc>!s<<)D@7KlGEkAL#`Oj_uQE5J{LHZH0f;?^&qmeJZCT|hy-0?G>&-&bXyu8IK2RyggidAH_Ke4b}Ja1=^BK!yva}^qj#D_JGuSH-bmMyIe8@qBhY7Ahjl_se%cx8CNNN~Bg zx!P7rYt)GuE&lk$y`7HRJ8wKF7zDvl1axQB5P`#nv!p#1wrI%~kt8`>7XvH8uLNhqu7;7qxd? zp3ERcbQn|nsHFE-g*tkQy<-!t(+PIsC|BG$i;j|KAtkD<8tXUZ8Dxh=ZFhx6%vslT z?9K?zU$9TU|9WnyCpN%dQ7U8+maTC~W)Oeqw)MEBx_PT{qmhLr(MO|e5MeZvQu#)1_c?Mz?c#^Q_btg$ zy{?!6aHG{s9_w(+Rz|G-CGLf6$1L{_Lc6m2TPeqIhS@OefEW+XtU`r~q|CI<0N}9b zx{{&tF~9Exo`olIgWJ0NOU}xHyXHZo3h`}o7gXovr{Zo;*Z6UmYHqK(DcW_KnhOYI z&|P&^=^wkNt12t(Ho7m_E3r%u&zmFMEHNTD36>p9-l;XyESYLHn=OsA=!KGoJK0uz zkm#}RU5Ywa`U!bc?)`eA*33>m!8CHs*XJ4o#www~)`rkPrOgl|6LpZGA}_v@t>&Fb zhp>ov6c;j9C{&ghr{Z&CS(yOx>Ce;kL=t3##Nf+{=9Tce%1LdZk<9k>m*(>~tCF^C zP^KXEV!=CI1XBX3HC%>&n__gGepsN?M{dDpz0kDPKSeD{U1&|)U@aa$rpJ`N6H4j8 zCR^)QOnX#+*aAL68k5PX+ZMr4o9p>*UlP-?OM(*EyUs^nt4TTQJ=Gn>;uaK>9FFLC7Oy`J_;B)rXR+~%H zfe;)={K%f4p&RdemYlP&@1tR1K6{~pw{`h*F2He!a_j3>YXfkjSx8#b@2iK-vFFEu@2%zV&x~NEtHon@o*35#hH$vSOMNc_~+DO0B|MYCGCuo0C|7|M-d)fO= z;JKFs$U_X^`WOi(b!a{H?Rv;IXFMbxdIK`a`4M{Mi9{HbI)M6)TdBUsrMG-0A7NB4 zggf=|WFPuWM>pimrHlp7BnNerIK|!2Lh)>IRe3f98u81dmMJwr$8}9hqkV_{YQ(6p z5l4$Tu2nXT_=>&8+8C%M+p-EoiyzLDhZHd{(6~1Xh?e9Ii7!PW2Kj7Awfa_g_p<3q zqNf*(^E;$6(Qkk;`a848MoFr{mv^RGtMfkJ4C2~yfu(<%Otg6~rMngICQUGB)M&r4 zEu#3|XKi+YYN%Q?6bdr^l*`tvbAH3swzGVzZns*ybIT!RJ~~6i)p2~uxSRmxPHbJ7 z%9%R+*zO>6nC1U5jzYqwRjhUJ3#!59)qGoa-h8x0v4ch~OB;7}_4`L!DJ~OK1coi* ziUVSde!0+8|5>NJY%=Q<`yfOd2q?Mfs5i>BbSlER0g8^k6TcsNu3Xs0FaTK010KBR7lqCc5moGL~NPy;1g-yI%0ZECXA6z0erX z`4dTjIiF*TXaqkTDYpm}^78V|8$QbBw0vBtR&z5LKq7P3Ec6;RfF|iYuJ(DE+>6k= zYHjxaQrflF})n0Z>Bll>0 zZVI@=hqZlx6n4SO>kEq~oKzof>iAfHfi4r8bZ@)9W&1hY-_a0Qy_v0|935uP&CM;n zUw6P#B|eY8f#~uS3<)eRYj9FTRhiw+5AStzQz=(pE;YJh>tdP4x_+Lp(B(WR#MXls zXD4$?1?I2m^cV<@GDFN7m(LCa%lW~z-#i|(&^qegGn<_DPv^V#fP z^Dc-mKWLr17IOA%={%A*>A{k-&6F1=zWG^!%U94=Nj^Q#rA5KVg@GV@&qvb?32k-O z8Z9w?qm(7iW$30(_BznBom(CnwWsYKI+X5I1=?%vw_NsAoL`oELw-nKo1%Y#%Xl<^ zyVq}q#sLF~3FGV?-XAF4%iO#Y!DTy~S2VSzBQm-pHB$0iMw+H_+KY_Yw~ss`RMbu6 z=~#R}uWnpUpYh1+4#PCJe_;Y9#hVx*CxM=yvuM^%Y4}W&OpB9up(LQ`VMHuI&dMxu0%(4P5YI=Q0y0KSKVl<)wO#1BWXWowG(wOu8w}B zOw6Y1!{_t~s_tUTt2PF{)OfenVn3z<<-tb4j>XwoLDEPIW1I;i6vD%U zKmf@8h$1LtZ>48ohQu-IBaKlOaOUNb3T8%>A)Hx-TZU7{>ORs0^#G4SD&l384DeBW=4<+ zVhoM=6-32`3q+Lp zA7LyFZ48hYgbd06V~Mpi!c}K5DxT*zvKN$b8NPT27i)ZWrIO~r@+tvghV6Fkrp^CF=6ocgbfY&aVQ)biTKW5)=11#U7{i(EfrdyUJsUKRnV8+TbkL~Zh41#Df5#w72E;PLSz>;KQAAq*5fAau z(nQaKQ3QiDMxxPwiSym=Tbw_=iL&9p2ju@SyZ?yv9l=lZ{Wl3ER_33K{>Sj!>sb-m z2tOyM zAm}fa-#uk44N*o8{~gbtEPo8b|A-11ng5y$bMrs=kdfgRwKTB#R&|o12pb!eAwSoB znDBiVk0_820=p07f^vd^BHVoUfg+-OoDgB+E>uMPJIw#|{RWh%k+i_#^ehaJ|C4Ax z`5ptF@&Ca__W$4-{o-6(xqK{MhoHpp*15HZA$4vOn1 z>J8M(PYDjJMnMlME(79&W((h^79;bc?*Nm>|LGQxg{q8frcqW57i zVd8@6J|A&K$OZkjPWpM7g!tcE5aWxZ&^ROpB#tJoEJcw9mWIeb`Zh2(_~*9GK9ai) zcE0)^`8|0#Rfy!18y7a|Xe_FV_%6muymP1VVzDB@lU*^|uX-MHw?7ztk?Jv0vqemh zwe-rmay5(KRjH)1+wE#znJe-E?hnTDuY7oRHBIl-xosPZgP{W*>N9UiY)tN57RkCG zOnx@^Er9L;ll%4JHusaeoKKiu>5^X#ttOvdip3>SG;BtX;p7`V>#6*6uAD!1EbK8z zBLEpEBR4nk^Y;x5W#r-JhH^80JMxE)m+`yAXz`~G%tvf)zimJ1AW*(vbljZWf7O9u z+{DrOPhaB5{1Oks$@7aZ1Oollmy3^BCVz>?%gy^cWn(3jL){p~v7Lj_P1_#$MIJl0%!F3D{u48a;9fO1G z7#v*3;NUt22XU7E1sjx)@0a<(1^(;21oLunga0z$z`VSCJb#(zL>=tsxrM{%q0mSS zfQGC+>dZ?3c7*+z{~ZY5y-+7TR+F diff --git a/hcp/doc/img/hcp.svg b/hcp/doc/img/hcp.svg deleted file mode 100644 index 69877fb..0000000 --- a/hcp/doc/img/hcp.svg +++ /dev/null @@ -1,247 +0,0 @@ - - - - - - - - - - - - - - HCP 2.0 - - - - Side brace - - - - - - - - - - - - - - - - - - Ark.1056 - - Ark.1020 - Argument 1 - - - - Argument 1 - - Ark.1028 - 2 Bytes - - - - 2 Bytes - - Ark.1030 - Size Bytes - - - - Size Bytes - - Ark.1031 - 2 Bytes - - - - 2 Bytes - - Ark.1032 - Data Size - - - - Data Size - - Ark.1033 - Data - - - - Data - - Ark.1034 - Key - - - - Key - - Ark.1035 - Argument 2 - - - - Argument 2 - - Ark.1036 - 2 Bytes - - - - 2 Bytes - - Ark.1037 - Size Bytes - - - - Size Bytes - - Ark.1038 - 2 Bytes - - - - 2 Bytes - - Ark.1039 - Data Size - - - - Data Size - - Ark.1040 - Data - - - - Data - - Ark.1041 - Key - - - - Key - - Ark.1042 - Argument N - - - - Argument N - - Ark.1043 - 2 Bytes - - - - 2 Bytes - - Ark.1044 - Size Bytes - - - - Size Bytes - - Ark.1045 - 2 Bytes - - - - 2 Bytes - - Ark.1046 - Data Size - - - - Data Size - - Ark.1047 - Data - - - - Data - - Ark.1048 - Key - - - - Key - - - Ark.1057 - - Ark.1000 - 2 Bytes - - - - 2 Bytes - - Ark.1001 - 2 Byte - - - - 2 Byte - - Ark.1003 - Command - - - - Command - - Ark.1004 - Number of Arguments - - - - Number of Arguments - - Ark.1007 - Payload - - - - Payload - - Ark.1055 - 0-65526 (16363 for TLS) Bytes - - - - 0-65526 (16363 for TLS) Bytes - - - diff --git a/hcp/doc/img/stack.eps b/hcp/doc/img/stack.eps deleted file mode 100644 index 1bb1627..0000000 --- a/hcp/doc/img/stack.eps +++ /dev/null @@ -1,1019 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: cairo 1.15.10 (http://cairographics.org) -%%CreationDate: Tue Apr 03 18:08:31 2018 -%%Pages: 1 -%%DocumentData: Clean7Bit -%%LanguageLevel: 2 -%%BoundingBox: 0 0 532 118 -%%EndComments -%%BeginProlog -50 dict begin -/q { gsave } bind def -/Q { grestore } bind def -/cm { 6 array astore concat } bind def -/w { setlinewidth } bind def -/J { setlinecap } bind def -/j { setlinejoin } bind def -/M { setmiterlimit } bind def -/d { setdash } bind def -/m { moveto } bind def -/l { lineto } bind def -/c { curveto } bind def -/h { closepath } bind def -/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto - 0 exch rlineto 0 rlineto closepath } bind def -/S { stroke } bind def -/f { fill } bind def -/f* { eofill } bind def -/n { newpath } bind def -/W { clip } bind def -/W* { eoclip } bind def -/BT { } bind def -/ET { } bind def -/BDC { mark 3 1 roll /BDC pdfmark } bind def -/EMC { mark /EMC pdfmark } bind def -/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def -/Tj { show currentpoint cairo_store_point } bind def -/TJ { - { - dup - type /stringtype eq - { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse - } forall - currentpoint cairo_store_point -} bind def -/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore - cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def -/Tf { pop /cairo_font exch def /cairo_font_matrix where - { pop cairo_selectfont } if } bind def -/Td { matrix translate cairo_font_matrix matrix concatmatrix dup - /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point - /cairo_font where { pop cairo_selectfont } if } bind def -/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def - cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def -/g { setgray } bind def -/rg { setrgbcolor } bind def -/d1 { setcachedevice } bind def -/cairo_data_source { - CairoDataIndex CairoData length lt - { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def } - { () } ifelse -} def -/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def -/cairo_image { image cairo_flush_ascii85_file } def -/cairo_imagemask { imagemask cairo_flush_ascii85_file } def -%%EndProlog -%%BeginSetup -%%BeginResource: font Calibri-Light -11 dict begin -/FontType 42 def -/FontName /Calibri-Light def -/PaintType 0 def -/FontMatrix [ 1 0 0 1 0 0 ] def -/FontBBox [ 0 0 0 0 ] def -/Encoding 256 array def -0 1 255 { Encoding exch /.notdef put } for -Encoding 32 /space put -Encoding 47 /slash put -Encoding 65 /A put -Encoding 67 /C put -Encoding 68 /D put -Encoding 72 /H put -Encoding 76 /L put -Encoding 78 /N put -Encoding 80 /P put -Encoding 82 /R put -Encoding 83 /S put -Encoding 84 /T put -Encoding 97 /a put -Encoding 99 /c put -Encoding 100 /d put -Encoding 101 /e put -Encoding 104 /h put -Encoding 105 /i put -Encoding 107 /k put -Encoding 108 /l put -Encoding 110 /n put -Encoding 111 /o put -Encoding 112 /p put -Encoding 113 /q put -Encoding 114 /r put -Encoding 115 /s put -Encoding 116 /t put -Encoding 117 /u put -Encoding 120 /x put -Encoding 121 /y put -Encoding 122 /z put -/CharStrings 32 dict dup begin -/.notdef 0 def -/P 1 def -/h 2 def -/y 3 def -/s 4 def -/i 5 def -/c 6 def -/a 7 def -/l 8 def -/space 9 def -/L 10 def -/e 11 def -/r 12 def -/n 13 def -/k 14 def -/T 15 def -/p 16 def -/o 17 def -/t 18 def -/A 19 def -/S 20 def -/q 21 def -/d 22 def -/N 23 def -/z 24 def -/C 25 def -/R 26 def -/H 27 def -/D 28 def -/x 29 def -/slash 30 def -/u 31 def -end readonly def -/sfnts [ -<000100000009008000030010637674203ff3508600001a1c000002986670676d70f5847d0000 -1cb4000006c3676c7966137357b90000009c00001980686561640508a5750000237800000036 -686865610e2803f6000023b000000024686d7478756b0e53000023d4000000806c6f63610001 -a2e400002454000000846d6178700378063d000024d80000002070726570e0824931000024f8 -0000040a0004002e000003cd050e000300070039004d004a40242d07023ab2440ead17441744 -17020120ae080401021f08010323350603511911493f0401002fdddedddecd3fdddecd111239 -39012fdddddeed111239392f2f10ed10ed10ddce3031011121110111211101140e0207071406 -23222e02352734363333323e0235342623220e0223222e02353436373e0333321e0203140e02 -23222e0235343e0233321e0203cdfc610353fcf60281244158340516150a0e0a05041a151431 -4128115862273f302007030705030508072837432145664322e0060e171112180f06060f1812 -11170e06050efaf2050efb380482fb7e03163c5e402301aa080702040504c817151b2e402450 -5c11151103090f0c0c13080713120d26425afd7c12180f06060f181212180f06060f18000000 -000200bdfffa03a6050e001c0029002640132406c2111dc3001125ba06060c23ba15510c5500 -3f3fed12392fed012fd4ed10ed32303101140e02232311140e0223222e02351134363321321e -0407342e0223231133323e0203a63d72a474a8060e171211180e0626120107274a6367482781 -425f672eb8b055724e29039b5a966c3cfe11060a060404060a0604bb241b07173f5b75515475 -390ffdce2b4c6b00000100a7fffa038505720032003d4026262f362f462f03002f102f020847 -2b014612010bb1322a14b11e2a1910a42d4a2446194c054c003f3f3f3fed1239012fed32d4ed -30315d5d5e5d5d25140e0223222e023511342e022322060711140e0223222e023511343e0233 -321e021511363633321e02150385060d171112170d061a345136458a4c060d171211170e0505 -0e171112170d064a944a597a4b2114060a060404060a06021954694b29625ffd77060a060404 -060a060544060a070303070a06fdcb524d3c6688600000010029fe93035e03b7002400524030 -691979190201b220090109090e001a1bb1241a0a1a18b22f0e7f0e020e0f1a5f1a02081a1f49 -190a13490a4b044f004b003f3f3f3f12393f01192f5e5d18d45ded123910dded123912392f5d -ed30315d2103060623222e023713262627012634363633321e02170133013e02333216161407 -02077e05202312180d020580080c02feb7050b1915161a0f0703011b04011605111c1413190c -05fead0b0f040b110c0141030e0703730e110a0303060a07fcea03160e0903040a110d000001 -0055ffef02bb03c200490066403e87489748021a26010b260115020104020141b0242432320c -1bb1000001000c4a2ea4370aa511603770370250110137113711163ca4411b05294a16a4054d -003fed3f123939ed1139392f2f5d5d10ed10ed0110ded45ded12392f322fed30315d5d5d5d5d -01140e0223222e0435343e0233321e0233323e0235342e0635343e0233321e0615140e022322 -2e0223220e0215141e0602bb30597c4b2f54442f160a04060a060b2a3f57392e4c381f284153 -57534128244b7550224337281507030203060906082034482f2f472e17284254575442280105 -416748260f171a141e190d140e071c211c14283f2a2a3a2b21232a3c543b2f5b482c0b121510 -0b0c110c0c130e07161a16162836202c3c2c2222293a510000020094fffa0130051f00150021 -001b400d16b51c15b10a1fa9191049054c003f3fdeed012fedd4ed303125140e0223222e0235 -11343e0233321e0215131406232226353436333216011e060d171211170e05050e171112170d -0612222d2c21222d2c2114060a060404060a060389060a070303070a06013130222130302221 -00010064ffef031f03c2003500654044662a762a862a03662576258625030b101b1002980ba8 -0b020b0b1b0b021c000001080027b20e3603a43119a41f30314031023f1f4f1f02311f311f2c -24a4134a2ca5094d003fed3fed1139392f2f5d5d10ed10ed0110deedc45e5d3230315d5d5d5d -5d25140e0623222e0235343e0233321e0615140623222e0223220615141e0233323e0233321e -02031f0204071a3d4c582f5e9162333f6e93542d52453619090502110a0e29405b3f828d2647 -66403c5c442d0b060906039a0c130e0b1a281e133f7bb37584bc7839111c24190d10130d1d17 -242b24c8bd5f8f5f2f262e26070f150000020068ffef032103c2003300400061b59738a73802 -31b8fff040350a0d4828133813020a131a1302080f180a0d48091734b10027271f0001003ab2 -11412aa622231da42e35a316162e4a3da40c4d044c003f3fed3f392fed10fdf4ed0110deedc4 -5d392f10ed323930312b5e5d5d2b5d25140606232226263535060623222e0235343e02333335 -342e0223220e0223222e0235343e0433321e02150723220e021514163332363703210d151211 -180d3d934f47714e2a3e72a062901836563e3c60482f0a060a07030619405360305d804f2277 -a5486c4823635a477b45140a0b05050b0a6542482545623d4b6f4a254e3a593c1e1d241d040b -110c151919221d122d547b4eb91a32462d4e5d494c00000100a7fffa011e057200150010b600 -b10a1046054c003f3f012fed303125140e0223222e023511343e0233321e0215011e060d1712 -11170e05050e171112170d0614060a060404060a060544060a070303070a06000000000100bd -000003460514001a0016400a15c200090f5215ba0654003fed3f012fcded303125140e022321 -22263511343e0233321e02151121321e02034604080c08fdcf1226060e181112170e0601ef08 -0c0804380e140f071b2404bb060a060404060a06fb75070d1500000000020068ffef038903c2 -002b0034006340417631863102782e019729a729029628a628020923192302091f191f020866 -077607021313212cb2002b012b3404b221352ca304041c2fa4264a18a40e2209a41c4d003ffd -f4ed3fed12392fed0110deed32dd5ded12392f30315d5e5d5d5d5d5d5d0114062321141e0233 -323e0233321e0215140e0623222e0235343e0233321e021527362623220e020703892612fd97 -214c7a593f64492f0a060a06030203060a34546f4069a26e393b6e9b5f66905d2b7b038a8444 -674726030207241b54886134161b16060d140f070d0b0a0a1919143f7bb67873b67f43447398 -540b90a233546f3c0000000100a7fffa029d03c2003300254013260fb15f0001001a0aa52b4a -260f152049154c003f3f1239393fed012fc45ded39303101140e0223222e0223220e02071114 -0e0223222e023511343e0233321e0215153e0333321e06029d0205070609182026171b34393f -26060d171211170e05050e151111160c0527423c391e0d22271f0c040301036f0f150d07090a -091733543dfd9c060a060404060a060389060a070303070a068f3946270e03080b09070b1300 -000100a7fffa038503c2003200414029033013300208162f262f362f0336124612022a13b11e -0bb13f0001001e10a42d4a2a192449194c054c003f3f3f12393fed012fd45ded10ed3930315d -5d5e5d25140e0223222e023511342e022322060711140e0223222e023511343e0233321e0215 -15363633321e02150385060d171112170d061a345136458a4c060d171211170e05050e151111 -160c054e964a597a4b2114060a060404060a06021954694b29625ffd77060a060404060a0603 -89060a070303070a0680574e3c6688600000000100a7fffa0359057200340047402916310131 -e0220cb11623b51a2d012d2d160ab41900010016172201170b01220b0528491c46114c054c00 -3f3f3f3f1239395d5d012fd45ded12392f5ded10fd32e43031005d25140e0223222e02270111 -140e0223222e023511343e0233321e021511013e0333321e0215140607010116160359060e18 -13141a130d06fe58060d171211170e05050e171112170d06017d0811141a11111910080c0ffe -9601920d0a16070a070403060a070202fdfe060a060404060a060544060a070303070a06fcc0 -0181090b0703020609070a130ffeaafe200f1000000000010011fffa03cd050e0022001a400c -0006c218110612ba1d510c55003f3fed32012fc4fdcd303101140e02232111140e0223222e02 -351121222e0235343e023321321e0203cd04080c07fe7e060e181111180e06fe7e080b080404 -080b08037e070c080404d60d140d07fb73060a060404060a06048d070d140d0e150e07070e15 -0000000200a7fe9303bd03c2002a003d0049402e693b793b02583b01692e792e020528010503 -0121360ab1152bb200150a363521040530a4264a1b49104f39a4054d003fed3f3f3fed121739 -012fd4ed10ed323930315d5d5d5d5d01140e0223222e022711140e0223222e023511343e0233 -321e0215153e0333321e0207342e0223220e020711161633323e0203bd3363925e2846434325 -060d171211170e05050d150f0f140e062a4c4c502d628a57277d18395f482445484e2b4b894b -45633e1d01e674ba824711243626fe2d060a070303070a0604f0070a060303060a07832b3f2a -144b82ad754c8d6e42142e4936fe765b61436d89000000020064ffef03c803c200130027005c -404069257925026621762102661b761b0269177917028712019711010611861102080d018808 -0109078907020703010814b2400001001eb20a2819a40f4a23a5054d003fed3fed0110deedd4 -5ded30315e5d5d5d5d5d5d5d5d5d5d5d01140e0223222e0235343e0233321e0207342e022322 -0e0215141e0233323e0203c8386fa66e6a9f6b35376fa66f6a9f6a367e1e46765851764b241e -46765851764b2401e26cb6864b437db2706cb6854a427db27a4d8c6b3f3a678c514e8d6a3e3a -668c00010027fff1025b04aa003a005540380a100d10482b0a3b0a4b0a030d0a1d0a02232db1 -17000d100d020d0d112929000f111f113f114f110408112da423491d0da4174931a4074d003f -ed3fedcd3fed012f5e5dc4322f12392f5d33ed3230315d5d2b25140e0423222e023511232226 -35343e02333335343e0233321e02151533321e02151406232311141633323e0233321e02025b -070f1d262a14435e3c1b870e1004080b0787050e171112170d06fa070b0804110dfa3b4e1827 -1e1508050805034a151a0f0d09052449704c023319190d130d06de060a070303070a06de060d -130d1919fddd676c0a0c0a040b1100020028fffa045a05140022002600a5b326230123b8fff0 -400b0c10480523010876220122b8fff8404c0c0f48781801260b0a230a2223230c25240d240d -c31616371577150215240ac30101380278020202181f245f24022424232625b90c0b0c22181d -230a0d1601040c230c230c121d5212550555003f3f3f1239392f2f11173911123939113310ed -32113301192f5d3318c45d3210ed10cd5d3210ed107d87c4c4013311331087c4c43031015d2b -5d5e5d2b5d25160e0223222e02270321030e0323222e0237013e0333321e0217072303210454 -06010d1b1515190e07037cfdc87702080e1913151c0d010601c5030c131b11121b130b035401 -f401ef290f130a0303060a070159fea9070a0704040a120f04cf080b060303060b086dfd4800 -00000001004cffef034c051f00490052402b41c2243224320c1bc3000c4a231b3c2ebb370aba -1120370137113711163cba491641411b05295316ba0556003fed3f123939111239ed1139392f -2f5d10ed10ed1112390110ded4ed1239392f2fed303101140e0223222e0435343e0233321e02 -33323e0235342e0635343e0233321e0615140e0223222e0223220e0215141e06034c3e709a5b -3e6e563b160a04070b060e3351714b3d664a2934556c716c55343662895229544b3b13050402 -030609060b2d445e3c3b583a1d34566d716d5634015e56885f32172021171f1711160e052329 -23213e5b3a3c564135353e53704d4b77532c10191f13090e130e0d150f081d241d20374a293c -564235353d536f000002006bfe93038103c2002a003d004f403376368636027630863002661e -010b171b17020c121c1202081f0b2bb12a33b2153e25490b3d2b1f04102ea41a4a38a4104d05 -4f003f3fed3fed1217393f0110deedd4ed323930315e5d5d5d5d5d01140e0223222e0235110e -0323222e0235343e0233321e021735343e0233321e021507262623220e0215141e0233323e02 -370381060d171112170e052c4e4a4927628a57283262905f2a47454629070d15100f140d0577 -4b8b4c45623e1c183a60482444484d2cfead060a070303070a0601e22d3e25104c82af6273b9 -824611253b2975070a060303060a07fc5b60426c88464c8e6e43142e493600000002006bffef -0381056d002600390077400c37281416004c76328632022db8fff0b316004d2db8fff8403c15 -004d762c862c0228101516004c671a0109151915020910191002080b1b39b10e342a1804002f -b2133a21460b39271b040e2aa4184a34a40e4d054c003f3fed3fed1217393f0110deedd41739 -ed323930315e5d5d5d2b5d2b2b5d2b25140e0223222e023535060623222e0235343e02333216 -1711343e0233321e021503262623220e0215141e0233323e02370381050d140f10150d07489a -5b628a57283262905f528842050e171112170d06774b8b4c45623e1c183a60482444484d2c14 -070a060303060a07824e594c82af6273b9824649470221060a060404060a06fd4e5b60426c88 -464b8e6f43142e4936000000000100bdfffa045e0510003d0033401b270f0f14c21e0a2e2e32 -c2001e38520a2e0f270419225119550655003f3f3f1217393f012fd4ed32113310ed322f3330 -3125140e022323222e0227012626272316141511140e0223222e02351134363333321e021701 -1e03173326343511343e0233321e0215045e0b1115091914211f1f13fe3822451f0101060e17 -1211180e0626123218201a190f015d213b38371b0101060e171210180e073b12180f060a192a -2103283b7d3b499949fcba060a060404060a0604bb241b0813231bfd953a6b67643354b65402 -f1060a070303070a0600000000010064000002ca03b2002b00444013072601072557250210b1 -1f141f141f0026b109b8ffc040120a004d1f0901092c2511a419490f27a4054b003fed323fed -320110de5d2bedcd39392f2f10ed30315d5d25140e02232122263535343e0237012122263534 -3e023321321e021515140e02070121321e0202ca05080c07fde5121904080d0a01aefe5a0e12 -05080c0701f409100b0703080e0afe5301cc070c0805340d140d06181c1c0b1214170f02a319 -1b0d140d06060c140e170a14151910fd5d060d1400000001006bfff3040c051b003900274014 -1c002bc30e3a18bb2126ba135304ba3530bb0956003ffdd4ed3ffdd4ed0110deedd4c4303125 -140e0623222e0235343e0233321e0615140e0223222e0223220e0215141e0233323e0233321e -02040c0204071340617e4c7ac68b4b5091cb7b3a6d5c491b07040203070a070e335378535b98 -6d3d386a9c63517956370f06080503b00b120e0c132b2a1e55a4f09a9efbaf5d16222c1b0c0f -130c0e150f08293229498ed08781c88948293229050d1600000200bdfffa03e7050e00360044 -0036401c102e11290ac30037c3293f11c21c2e10ba4040173dba215117550555003f3f3fed12 -392fed39012fed32d4edd4ed11123939303125140e0223222e0227032e03232311140e022322 -2e023511343633333216171e0315140e02071e031713161603342627262623231133323e0203 -e7050e19131117100a0479153044604386060e171211180e062612f3303f1a4a6e482324425c -3721352d2814790d07d74a571d4437a0ba4b6c472116070a070403090f0c013a355e4528fdb9 -060a060404060a0604bb241b05040d3a556b3e40654d38130f2c3e5132fed2231a0397537319 -0807fe25254056000000000100bdfffa04370514002f002b4016230cc217240bc200172a5224 -ba0c0c121d5212550555003f3f3f12392fed3f012fd4ed3210ed32303125140e0223222e0235 -112111140e0223222e023511343e0233321e0215112111343e0233321e02150437060e181112 -170e06fd7a060e171211180e06060e181112170e060286060e171211180e0614060a06040406 -0a06025bfda5060a060404060a0604e6060a060404060a06fde2021e060a060404060a060000 -000200bd00000474050e0012001f001c400e13c3001ac20918ba0e511bba0554003fed3fed01 -2fedd4ed303101140e0223232226351134363321321e0207342e0223231133323e02047452a0 -eba3ff122626120110a5e3994e833977b68dc7c884b77a3d029aa3f9a8561b240490241b5aa5 -e79471c18c4ffbcc4188cf0000000001002efffa032803b7002f00624036862f01192f018817 -0115170122b21824b12e182e182e00170b0cb2160b2f0023230b0ab2000f0b5f0b020b294923 -0b111d49114c054c003f3f3f1239393f01192f5d18dded1239192f12391810dded1239123939 -2f2f10ed10ed30315d5d5d5d251616060623222e022703030e03232226263637010126263636 -33321e021713133e0333321616060701031f08010e1d1615190f0904f4f30409101914151c0d -0109012afee408010f1e1615190e0804e6ec04080d1714151d0e0109fee2270c110b0503060a -06017afe86060a0603050b110c01b701ad0c110b0403060906fe9e016206090603040a110dfe -5700000000010001fef302e005b500150013b715b10b00b10a1005002f2f012fedd6ed303117 -0e0323222e0237013e0333321e02077a040b0f150f0f170e03050262040a0f160f0f160d0404 -e80c0e0803060b110b06700c0e0803060b110b00000100a3ffef038103b70032003f40270a11 -1a110229103910020b101b1002080b27b13f0001001fb1132d49270b05194924a40e4d054c00 -3f3fed3f1239393f012fedd45ded3930315e5d5d5d25140e0223222e023535060623222e0235 -11343e0233321e021511141e023332363711343e0233321e02150381050e161012160c054e95 -4a597a4b21050e171112170d061a34513645894d050e171211170d0614060a060404060a0680 -574e3c6788600223060a070303070a06fde8546a4b29625f0289060a070303070a06079e056d -03b8fe9300000000050efdda0000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000047005e007600a300520073 -0000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000576000b03b1000600130000fffaffed -fea6ffedfeb8050e000600130000fffaffedfe9300000000041d00060011000000000000ff09 -ffee050e0013041d0006000f0000fffafff1fe930000feb803420006050e0006000bfdc7fffa -fff50000ff2503090006000dff36fffafff302870006000d0000fffafff1079efeaffea70309 -0006000b0437019bfdda0053003a0041004c0054005e0055005f006b007e0041004a00550062 -007a004a005b006c007500820043004b0056005f0066006d0076007f009c00a300c000d2004c -0055005e006700700077007e00870090009700ab00c9005d0064006d0074007b008a00a100bd -00680071007a0083008c009800ab005d0066006d007600ad006600700079008000890091009a -00ab0048005d006c0075004f007100780064008a006a007f0090008c00770066000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000055a001500a0fff8ff42fea2 -fdbc0325030c01cc007b008700800075004800fa00620514006b052cfff60122fff1050affec -047ffff10131fff2000a037c0366404065585554535251504f4e4d4c4b4a4948474645444342 -41403f3e3d3c3b3a39383736352f2e2d2c2826252423221f181411100f0d0b0a090807060504 -030201002c4523466020b02660b004262348482d2c452346236120b02661b004262348482d2c -45234660b0206120b04660b004262348482d2c4523462361b0206020b02661b02061b0042623 -48482d2c45234660b0406120b06660b004262348482d2c4523462361b0406020b02661b04061 -b004262348482d2c0110203c003c2d2c20452320b0cd442320b8015a51582320b08d44235920 -b0ed51582320b04d44235920b0042651582320b00d44235921212d2c20204518684420b00160 -2045b04676688a4560442d2c01b10b0a432343650a2d2c00b10a0b4323430b2d2c00b0282370 -b101283e01b0282370b10228453ab10200080d2d2c2045b00325456164b050515845441b2121 -592d2c2045b0004360442d2c01b00643b00743650a2d2c2069b04061b0008b20b12cc08a8cb8 -100062602b0c642364615c58b00361592d2c8a03458a8a87b0112bb0292344b0297ae4182d2c -4565b02c234445b02b23442d2c4b525845441b2121592d2c01b005251023208af500b0016023 -edec2d2c01b005251023208af500b0016123edec2d2c01b0062510f500edec2d2c20b0016001 -10203c003c2d2c20b001610110203c003c2d2c00b00743b006430b2d2c21210c6423648bb840 -00622d2c21b08051580c6423648bb82000621bb200402f2b59b002602d2c21b0c051580c6423 -648bb81555621bb200802f2b59b002602d2c0c6423648bb84000626023212d2c452345602345 -6023456023766818b08062202d2cb00426b00426b00425b0042545234520b003266062636820 -b0032661658a2344442d2c2045b0005458b040442045b04061441b2121592d2c45b1302f4523 -456160b0016069442d2c4b5158b02f2370b01423421b2121592d2c4b515820b0032545695358 -441b2121591b2121592d2c45b01443b0006063b0016069442d2cb02f45442d2c452320458a60 -442d2c45234560442d2c4b235158b90033ffe0b134201bb3330034005944442d2cb0164358b0 -0326458a586466b01f601b64b020606620581b21b04059b001615923586559b02923442310b0 -29e01b2121212121592d2cb0164358b004254564b020606620581b21b04059b0016123586559 -b0292344b00425b00725082058021b0359b0052510b004252046b0042523423cb0072510b006 -252046b00425b0016023423c2058011b0059b0052510b00425b029e0b0072510b00625b029e0 -b00425b00725082058021b0359b00425b003254348b00625b00325b0016043481b2159212121 -212121212d2cb0164358b004254564b020606620581b21b04059b0016123581b6559b0292344 -b00525b00825082058021b0359b0042510b005252046b0042523423cb00425b0072508b00725 -10b006252046b00425b0016023423c2058011b0059b0042510b00525b029e0b02920456544b0 -072510b00625b029e0b00525b00825082058021b0359b00525b003254348b00425b0072508b0 -0625b00325b0016043481b2159212121212121212d2c02b00425202046b004252342b0052508 -b003254548212121212d2c02b0032520b0042508b0022543482121212d2c452320451820b000 -50205823652359236820b040505821b04059235865598a60442d2c4b53234b515a5820458a60 -441b2121592d2c4b545820458a60441b2121592d2c4b53234b515a58381b2121592d2c4b5458 -381b2121592d2cb002435458b0462b1b21212121592d2cb002435458b0472b1b212121592d2c -b002435458b0482b1b21212121592d2cb002435458b0492b1b212121592d2c208a08234b538a -4b515a5823381b2121592d2c0020b200400325b0062649618b3812342d2c0146234660234661 -23201020468a61b8ff80628ab140408a704560683a2d2c208a2349648a2353583c1b21592d2c -4b52587d1b7a592d2cb012004b014b54422d2cb1020042b123018851b1400188535a58b91000 -0020885458b202010243604259b12401885158b920000040885458b2020202436042b1240188 -5458b2022002436042004b014b5258b2020802436042591bb940000080885458b20204024360 -4259b94000008063b80100885458b202080243604259b94000010063b80200885458b2021002 -43604259b94000020063b80400885458b202400243604259595959592d2c451868234b515823 -20452064b04050587c59688a6059442d2cb00016b00225b0022501b001233e00b002233eb101 -02060cb00a236542b00b234201b001233f00b002233fb10102060cb006236542b0072342b001 -16012d2c00456823b140408a704560682345686165b200010115132338b1010011362d000001 -0000000633339ae8f7325f0f3cf5001b080000000000c9dc9d7000000000d5968a5bfbe9fdda -0a78079e000000090002000100000000000100000600fe0001c40acdfbe9fb080a7800010000 -0000000000000000000000000020040e002e041000bd042800a7038700290318005501c40094 -0367006403c4006801c400a701cf0000035a00bd03f4006802c200a7042800a7038700a703de -0011042800a7042c006402a1002704820028039f004c0428006b0428006b051b00bd03260064 -0448006b044200bd04f400bd04db00bd0359002e02e60001042800a3000000000000012c0000 -01cc00000298000003640000048800000508000005fc0000070c0000076400000764000007d0 -000008c80000097c00000a4c00000b3400000bb800000cb000000d8000000e7000000f940000 -10a4000011a0000012bc000013a0000014680000152800001624000016d80000175800001858 -000018b40000198000010000002004250017010a000800020010002f0066000002ba00dc0008 -0001b1092f410e013c003f013c0002013901360038001f013801360038001f01370136b2381f -d0413e0136000101480038014700550146003801450055014400380143005501420038014100 -5501400038013f0055012f0038012e0055012d0038012c00550080014b00010080014a000101 -490038012e0055004f0147000100f0013f00010000013d0030013d00020000013d0070013d00 -80013d00e0013d0004ffc0013db30e114600410e0134003001340080013400d0013400040000 -01330020013300800133b2030c2f410c01310001000f0131001f0131006f0131007f0131008f -0131b2050f00b8012e409b0114e2a4ff1fe1b1ff1fdb94711fd9d72e1fdad6691fd8d49d1fd7 -d62c1fd5d6371fd0ce1a1fcfce681fcdceae1fccce801f0fce016d1fce010fce013bcac8821f -c9c88c1fc7c8361fc6c24e1fc5c2581fc4c25f1fc3c2661fc1c26d1fc0c2801f00c210c220c2 -036d20c230c20210c220c20200c210c2023b20c201bfba261fbeba3a1fbdba521fbcba6d1fbb -ba731fb9ba831fb8ba791f50ba01b8ffc0b3ba7a8246b8ffc0b3ba686e46b8ffc0b3ba555a46 -b8ffc0b3ba424646b8ffc040ffba2f3246b5b14b1fb4b15d1fb3b1631fb2b16a1fb0b1771faf -b1821faeb15b1fa6a4711fa5a47a1fa3a48c1f9f9d1d1f9e9d391f9c9d931f9998551f988c30 -1f8a01895585032b1f8403471f825b805581ab80557f5b7d557eab7d552f7d012f7d3f7d6f7d -9f7dcf7dff7d06795b775578ab77551f778f779f770377017a557c5b7a557bab7a55707a0188 -5b865587ab86551f868f869f8603860372555076607602760372556e666d55b06d015f6d6f6d -7f6d036d037255745b725573ab725540726072707280720472026f55715b6f5570ab6f556f06 -011f6a032b1f6947675568ab67556647645565ab645563476255614760554060015c475a555b -ab5a404a5557032b1f5647545555ab54555347515552ab51555106461f4f474e554e03251f4d -474b554cab4b554a47485549ab485548022b1f4747465546012b1f24220a1f2322181f000301 -0803bd0100010000050001019000542b4bb807ff524bb008505bb00188b02553b00188b04051 -5ab00688b000555a5b58b101018e59b21a01024354234b515a58b101018e59858d8d001d424b -b01d5358b203a0a01d42594bb0805358b20340401d42594bb0ff5358b20300001d42595e732b -2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b732b2b2b2b2b2b2b2b2b2b2b732b2b2b73732b2b -732b732b2b732b2b2b732b2b73742b2b2b2b2b2b2b2b2b012b2b2b002b2b2b012b2b2b2b2b2b -2b002b2b2b2b2b742b2b2b2b2b2b2b01755e7374755e732b2b2b2b2b2b002b2b2b015e73745e -732b2b2b2b002b2b012b2b2b002b2b012b005e735e73745e73732b737473732b73732b2b2b2b -2b2b2b732b2b2b74185e000000> -] def -/f-0-0 currentdict end definefont pop -%%EndResource -%%EndSetup -%%Page: 1 1 -%%BeginPageSetup -%%PageBoundingBox: 0 0 532 118 -%%EndPageSetup -q 0 0 532 118 rectclip -1 0 0 -1 0 118 cm q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0.486275 g -0.216789 w -2 J -0 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -418.195 -98.649 m 448.926 -98.649 l 452.316 -98.649 455.066 -101.398 455.066 - -104.789 c 455.066 -108.181 457.816 -110.929 461.207 -110.929 c 457.816 - -110.929 455.066 -113.678 455.066 -117.069 c 455.066 -117.09 l 455.066 --120.481 452.316 -123.23 448.926 -123.23 c 418.195 -123.23 l S Q - Q -Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.798866 0 0 -9.344799 465.203306 109.037259 Tm -/f-0-0 1 Tf -[(P)41(h)-13(y)-25(s)53(i)22(c)-41(a)4(l)21( )27(L)19(a)4(y)-25(e)27(r) -]TJ -ET - Q -Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0.486275 g -0.216789 w -2 J -0 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -418.195 -74.069 m 448.926 -74.069 l 452.316 -74.069 455.066 -76.817 455.066 - -80.209 c 455.066 -83.601 457.816 -86.349 461.207 -86.349 c 457.816 -86.349 - 455.066 -89.097 455.066 -92.489 c 455.066 -92.509 l 455.066 -95.901 452.316 - -98.649 448.926 -98.649 c 418.195 -98.649 l S Q - Q -Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.798866 0 0 -9.344799 465.203306 85.489194 Tm -/f-0-0 1 Tf -[(L)19(i)22(n)-13(k)41( )-41(L)19(a)4(y)41(e)-38(r)]TJ -ET - Q -Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0.486275 g -0.216789 w -2 J -0 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -418.195 -49.489 m 448.926 -49.489 l 452.316 -49.489 455.066 -52.237 455.066 - -55.629 c 455.066 -59.02 457.816 -61.769 461.207 -61.769 c 457.816 -61.769 - 455.066 -64.517 455.066 -67.909 c 455.066 -67.929 l 455.066 -71.321 452.316 - -74.069 448.926 -74.069 c 418.195 -74.069 l S Q - Q -Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.798866 0 0 -9.344799 465.203306 61.961803 Tm -/f-0-0 1 Tf -[(T)16(r)11(a)4(n)-13(s)53(p)-12(o)-11(r)11(t)60( )-40(L)18(a)4(y)41(e) --38(r)]TJ -ET - Q -Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0.486275 g -0.216789 w -2 J -0 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -369.008 -24.904 m 448.926 -24.904 l 452.316 -24.904 455.066 -27.652 455.066 - -31.052 c 455.066 -34.444 457.824 -37.192 461.215 -37.192 c 457.824 -37.192 - 455.066 -39.949 455.066 -43.34 c 455.066 -46.74 452.316 -49.489 448.926 - -49.489 c 369.008 -49.489 l S Q - Q -Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.798866 0 0 -9.344799 465.229321 38.438547 Tm -/f-0-0 1 Tf -[(A)32(p)-10(p)-10(l)21(i)22(c)27(a)6(ti)18(o)-8(n)54( )-38(L)21(a)6(y) -43(e)-36(r)]TJ -ET - Q -Q -1 0.85098 0.396078 rg -196.973 47.195 49.164 23.441 re f* -0 g -0.650367 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -196.973 -49.489 49.164 -24.58 re S Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.798866 0 0 -9.344799 206.903478 61.961803 Tm -/f-0-0 1 Tf -[(S)-11(e)29(q)-11( )27(L)21(e)29(n)]TJ -ET - Q -Q -1 0.85098 0.396078 rg -246.133 47.195 122.902 23.441 re f* -0 g -0.650367 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -246.133 -49.489 122.902 -24.58 re S Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.798866 0 0 -9.344799 292.899362 61.961803 Tm -/f-0-0 1 Tf -[(P)43(a)6(y)-24(l)22(o)-8(a)5(d)]TJ -ET - Q -Q -1 0.85098 0.396078 rg -147.809 47.195 49.16 23.441 re f* -0 g -0.650367 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -147.809 -49.489 49.16 -24.58 re S Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.798866 0 0 -9.344799 159.842909 61.961803 Tm -/f-0-0 1 Tf -[(S)-11(e)29(q)-11( )27(N)42(r)]TJ -ET - Q -Q -1 0.85098 0.396078 rg -98.648 47.195 49.16 23.441 re f* -0 g -0.650367 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -98.648 -49.489 49.16 -24.58 re S Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.798866 0 0 -9.344799 115.938789 61.961803 Tm -/f-0-0 1 Tf -[(S)-11(i)21(z)-3(e)]TJ -ET - Q -Q -1 0.85098 0.396078 rg -196.973 47.195 49.164 23.441 re f* -0 g -0.650367 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -196.973 -49.489 49.164 -24.58 re S Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.798866 0 0 -9.344799 206.903478 61.961803 Tm -/f-0-0 1 Tf -[(S)-11(e)29(q)-11( )27(L)21(e)29(n)]TJ -ET - Q -Q -1 0.85098 0.396078 rg -246.133 47.195 122.902 23.441 re f* -0 g -0.650367 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -246.133 -49.489 122.902 -24.58 re S Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.798866 0 0 -9.344799 292.899362 61.961803 Tm -/f-0-0 1 Tf -[(P)43(a)6(y)-24(l)22(o)-8(a)5(d)]TJ -ET - Q -Q -1 0.85098 0.396078 rg -147.809 47.195 49.16 23.441 re f* -0 g -0.650367 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -147.809 -49.489 49.16 -24.58 re S Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.798866 0 0 -9.344799 159.842909 61.961803 Tm -/f-0-0 1 Tf -[(S)-11(e)29(q)-11( )27(N)42(r)]TJ -ET - Q -Q -1 0.85098 0.396078 rg -98.648 47.195 49.16 23.441 re f* -0 g -0.650367 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -98.648 -49.489 49.16 -24.58 re S Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.798866 0 0 -9.344799 115.938789 61.961803 Tm -/f-0-0 1 Tf -[(S)-11(i)21(z)-3(e)]TJ -ET - Q -Q -0.572549 0.803922 0.862745 rg -49.48 70.656 49.156 23.422 re f* -0 g -0.650367 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -49.48 -74.089 49.156 -24.56 re S Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.777186 0 0 -9.324124 66.705993 85.530543 Tm -/f-0-0 1 Tf -[(S)-12(i)20(z)-4(e)]TJ -ET - Q -Q -0.572549 0.803922 0.862745 rg -98.641 70.656 270.359 23.422 re f* -0 g -0.650367 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -98.641 -74.089 270.359 -24.56 re S Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.777186 0 0 -9.324124 219.043665 85.530543 Tm -/f-0-0 1 Tf -[(P)42(a)5(y)-25(l)21(o)-9(a)4(d)]TJ -ET - Q -Q -0.572549 0.803922 0.862745 rg -369 70.656 49.156 23.422 re f* -0 g -0.650367 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -369 -74.089 49.156 -24.56 re S Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.777186 0 0 -9.324124 386.387476 85.530543 Tm -/f-0-0 1 Tf -(CRC)Tj -ET - Q -Q -0.572549 0.803922 0.862745 rg -0.324 70.656 49.156 23.422 re f* -0 g -0.650367 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -0.324 -74.089 49.156 -24.56 re S Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.777186 0 0 -9.324124 9.300251 85.530543 Tm -/f-0-0 1 Tf -[(Ch)57(a)4(n)-11(n)-12(e)29(l)]TJ -ET - Q -Q -0.572549 0.803922 0.862745 rg -49.48 70.656 49.156 23.422 re f* -0 g -0.650367 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -49.48 -74.089 49.156 -24.56 re S Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.777186 0 0 -9.324124 66.705993 85.530543 Tm -/f-0-0 1 Tf -[(S)-12(i)20(z)-4(e)]TJ -ET - Q -Q -0.572549 0.803922 0.862745 rg -98.641 70.656 270.359 23.422 re f* -0 g -0.650367 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -98.641 -74.089 270.359 -24.56 re S Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.777186 0 0 -9.324124 219.043665 85.530543 Tm -/f-0-0 1 Tf -[(P)42(a)5(y)-25(l)21(o)-9(a)4(d)]TJ -ET - Q -Q -0.572549 0.803922 0.862745 rg -369 70.656 49.156 23.422 re f* -0 g -0.650367 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -369 -74.089 49.156 -24.56 re S Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.777186 0 0 -9.324124 386.387476 85.530543 Tm -/f-0-0 1 Tf -(CRC)Tj -ET - Q -Q -0.572549 0.803922 0.862745 rg -0.324 70.656 49.156 23.422 re f* -0 g -0.650367 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -0.324 -74.089 49.156 -24.56 re S Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.777186 0 0 -9.324124 9.300251 85.530543 Tm -/f-0-0 1 Tf -[(Ch)57(a)4(n)-11(n)-12(e)29(l)]TJ -ET - Q -Q -0.976471 0.768627 0.6 rg -246.133 0.309 122.902 23.441 re f* -0 g -0.650367 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -246.133 -0.324 122.902 -24.58 re S Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.798866 0 0 -9.344799 300.010043 14.886347 Tm -/f-0-0 1 Tf -[(H)22(C)4(P)]TJ -ET - Q -Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0.486275 g -0.216789 w -2 J -0 j -[] 0.0 d -2 M q 1 0 0 -0.953661 0 0 cm -369.008 -0.324 m 448.926 -0.324 l 452.316 -0.324 455.066 -3.08 455.066 --6.472 c 455.066 -9.867 457.824 -12.62 461.215 -12.62 c 457.824 -12.62 455.066 - -15.368 455.066 -18.756 c 455.066 -22.156 452.316 -24.904 448.926 -24.904 - c 369.008 -24.904 l S Q - Q -Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.798866 0 0 -9.344799 465.229321 14.886347 Tm -/f-0-0 1 Tf -[(H)22(C)4(P)]TJ -ET - Q -Q -0.768627 0.839216 0.627451 rg -0.324 94.078 417.875 23.441 re f* -0 g -0.650367 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -0.324 -98.649 417.875 -24.58 re S Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.798866 0 0 -9.344799 191.832303 109.057934 Tm -/f-0-0 1 Tf -[(L)21(i)22(n)-11(k)43( )-38(D)10(a)6(t)63(a)]TJ -ET - Q -Q -0.768627 0.839216 0.627451 rg -0.324 94.078 417.875 23.441 re f* -0 g -0.650367 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -0.324 -98.649 417.875 -24.58 re S Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.798866 0 0 -9.344799 191.832303 109.057934 Tm -/f-0-0 1 Tf -[(L)21(i)22(n)-11(k)43( )-38(D)10(a)6(t)63(a)]TJ -ET - Q -Q -0.74902 g -246.133 23.754 122.902 23.441 re f* -0 g -0.650367 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -246.133 -24.908 122.902 -24.58 re S Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.798866 0 0 -9.344799 271.289829 38.438547 Tm -/f-0-0 1 Tf -[(Cl)24(e)29(a)6(r)12(te)27(x)21(t )-42(/)31( )27(S)-12(e)29(c)28(u)-13 -(r)13(i)22(ty)]TJ -ET - Q -Q -0.74902 g -246.133 23.754 122.902 23.441 re f* -0 g -0.650367 w -1 J -1 j -[] 0.0 d -10 M q 1 0 0 -0.953661 0 0 cm -246.133 -24.908 122.902 -24.58 re S Q -q -0 0 532 118 re W n -[ 1 0 0 1 0 0 ] concat - q -0 g -BT -9.798866 0 0 -9.344799 271.289829 38.438547 Tm -/f-0-0 1 Tf -[(Cl)24(e)29(a)6(r)12(te)27(x)21(t )-42(/)31( )27(S)-12(e)29(c)28(u)-13 -(r)13(i)22(ty)]TJ -ET - Q -Q -Q Q -showpage -%%Trailer -end -%%EOF diff --git a/hcp/doc/img/stack.pdf b/hcp/doc/img/stack.pdf deleted file mode 100644 index 29e3d6f94116ff359406092ee0a2d772dd13464c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169928 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 - - - - - - - - - - - - - Layer Structure - - - - Side brace.23 - Physical Layer - - - - - - - - - - - - - - - - - - - Physical Layer - - Side brace.24 - Link Layer - - - - - - - - - - - - - - - - - - - Link Layer - - Side brace.25 - Transport Layer - - - - - - - - - - - - - - - - - - - Transport Layer - - Side brace.26 - Application Layer - - - - - - - - - - - - - - - - - - - Application Layer - - Ark.32 - - Ark.6 - Seq Len - - - - Seq Len - - Ark.7 - Payload - - - - Payload - - Ark.30 - Seq Nr - - - - Seq Nr - - Ark.31 - Size - - - - Size - - - Ark.33 - - Ark.3 - Size - - - - Size - - Ark.4 - Payload - - - - Payload - - Ark.5 - CRC - - - - CRC - - Ark.29 - Channel - - - - Channel - - - Ark.34 - HCP - - - - HCP - - Side brace.35 - HCP - - - - - - - - - - - - - - - - - - - HCP - - Ark.37 - - Ark.2 - Link Data - - - - Link Data - - - Ark.38 - - Ark.1 - Cleartext / Security - - - - Cleartext / Security - - - diff --git a/hcp/doc/md/1_stack.md b/hcp/doc/md/1_stack.md deleted file mode 100644 index 212e7a8..0000000 --- a/hcp/doc/md/1_stack.md +++ /dev/null @@ -1,49 +0,0 @@ -\page stack FPC embedded stack - -The communication stack implemented on the embedded devices by FPC follows the following -specification. - -\image html stack.svg "HCP embedded stack" -\image latex stack.eps "HCP embedded stack" - -\section phy Physical - -The physical layer have a fixed size buffer of 256 bytes. - -\section link Link - -The link layer handles packet consistency. - -Each packet received is acknowledged on the link layer, if an error occurs no retransmission is -done on this level, instead the error is propagated upwards. - -Channel | Size | Payload | CRC | -------- | ------- | ---------- | ------- | -2 bytes | 2 bytes | size bytes | 4 bytes | - -All fields are using unsigned data types. - -\section tsp Transport - -The transport layer handles packet segmentation. - -As the PHY MTU is 256 bytes the maximum payload per segment is 242 bytes. - -Errors are propagated upwards. - -Size | Seq Nr | Seq Len | Payload | -------- | ------- | ------- | ---------- | -2 bytes | 2 bytes | 2 bytes | size bytes | - -All fields are using unsigned data types. - -\section app Application - -The application layer is a optional security layer, the default implementation is clear text -(unsecure). - -If a security solution is used it will be part of that products documentation. - -\section hcp HCP - -The HCP frame is described in the \link hcpf HCP frame format section. diff --git a/hcp/doc/md/2_hcpframe.md b/hcp/doc/md/2_hcpframe.md deleted file mode 100644 index 2e50317..0000000 --- a/hcp/doc/md/2_hcpframe.md +++ /dev/null @@ -1,28 +0,0 @@ -\page hcpf HCP frame format - -The Host Communication Protocol (HCP) describes a general way of sending commands and information -between devices. - -\image html hcp.svg "HCP frame format" -\image latex hcp.eps "HCP frame format" - -\section cmd Command - -The Commands define the general action that is going to be executed. However, each command -can have several Arguments each with data attached. - -| CMD | Num Args | Payload | -| ------- | -------- | -------- | -| 2 bytes | 2 bytes | xx bytes | - -All fields are using unsigned data types. - -\section arg Argument - -The Argument is used as a complement to the command if it is needed and can contain arbitrary data. - -| ARG | Size | Data | -| ------- | --------| ---------- | -| 2 bytes | 2 bytes | size bytes | - -All fields are using unsigned data types. diff --git a/hcp/doc/md/4_biometrics.md b/hcp/doc/md/4_biometrics.md deleted file mode 100644 index 6a57d7c..0000000 --- a/hcp/doc/md/4_biometrics.md +++ /dev/null @@ -1,89 +0,0 @@ -\page bio Biometrics - -\section capture_b Capture - -@startuml -Host --> BioMcu: CMD_CAPTURE \nARG_TIMEOUT[timeout] -... Wait for finger down... -rnote over BioMcu : fpc_bep_capture -hnote over BioMcu : image -BioMcu --> Host: CMD_CAPTURE \nARG_RESULT[bep_result] -@enduml -*** - -\section extract_b Extract - -@startuml -group Capture -Host --> BioMcu: CMD_CAPTURE \nARG_TIMEOUT[timeout] -... Wait for finger down... -rnote over BioMcu : fpc_bep_capture -hnote over BioMcu : image -BioMcu --> Host: CMD_CAPTURE \nARG_RESULT[bep_result] -end -Host --> BioMcu: CMD_IMAGE \nARG_EXTRACT -rnote over BioMcu : fpc_bep_image_extract -hnote over BioMcu : template -BioMcu --> Host: CMD_IMAGE \nARG_RESULT[bep_result] -@enduml -*** - -\section enroll_b Enroll - -@startuml -Host --> BioMcu: CMD_ENROLL \nARG_START -rnote over BioMcu : fpc_bep_enroll_start -hnote over BioMcu : session -BioMcu --> Host: CMD_ENROLL \nARG_RESULT[bep_result] -||| -loop Enroll Image -group Capture -Host --> BioMcu: CMD_CAPTURE \nARG_TIMEOUT[timeout] -... Wait for finger down... -rnote over BioMcu : fpc_bep_capture -hnote over BioMcu : image -BioMcu --> Host: CMD_CAPTURE \nARG_RESULT[bep_result] -end -||| -Host --> BioMcu: CMD_ENROLL \nARG_ADD -rnote over BioMcu : fpc_bep_enroll -rnote over BioMcu : count -BioMcu --> Host: CMD_ENROLL \nARG_COUNT[count] \nARG_RESULT[bep_result] -Host --> BioMcu: CMD_WAIT \nARG_FINGER_UP \nARG_TIMEOUT[timeout] -... Wait for finger up... -BioMcu --> Host: CMD_WAIT \nARG_RESULT[bep_result] -end -||| -Host --> BioMcu: CMD_ENROLL \nARG_FINISH -rnote over BioMcu : fpc_bep_enroll_finish -hnote over BioMcu : enroll template -BioMcu --> Host: CMD_ENROLL \nARG_RESULT[bep_result] -@enduml -*** - -\section identify_b Identify - -@startuml -group Capture -Host --> BioMcu: CMD_CAPTURE \nARG_TIMEOUT[timeout] -... Wait for finger down... -rnote over BioMcu : fpc_bep_capture -hnote over BioMcu : image -BioMcu --> Host: CMD_CAPTURE \nARG_RESULT[bep_result] -end -||| -group Extract -Host --> BioMcu: CMD_IMAGE \nARG_EXTRACT -rnote over BioMcu : fpc_bep_image_extract -hnote over BioMcu : template -BioMcu --> Host: CMD_IMAGE \nARG_RESULT[bep_result] -end -||| -Host --> BioMcu: CMD_IDENTIFY -rnote over BioMcu : fpc_template_storage_get_all -rnote over BioMcu : fpc_bep_identify -hnote over BioMcu : id -BioMcu --> Host: CMD_IDENTIFY \nARG_MATCH \nARG_ID[id] \nARG_RESULT[bep_result] -hnote over Host: id -@enduml -*** diff --git a/hcp/doc/md/5_image.md b/hcp/doc/md/5_image.md deleted file mode 100644 index 150e284..0000000 --- a/hcp/doc/md/5_image.md +++ /dev/null @@ -1,36 +0,0 @@ -\page image Image handling - -\section create_i Create - -@startuml -Host --> BioMcu: CMD_IMAGE \nARG_CREATE -hnote over BioMcu : image -BioMcu --> Host: CMD_IMAGE \nARG_RESULT[bep_result] -@enduml -*** - -\section upload_i Upload - -@startuml -participant Host -participant BioMcu - -hnote over BioMcu : image -Host --> BioMcu: CMD_IMAGE \nARG_UPLOAD -BioMcu --> Host: CMD_IMAGE \nARG_RESULT[bep_result] \nARG_DATA[image] -hnote over Host : image -@enduml -*** - -\section download_i Download - -@startuml -participant Host -participant BioMcu - -hnote over Host : image -Host --> BioMcu: CMD_IMAGE \nARG_DOWNLOAD \nARG_DATA[image] -hnote over BioMcu : image -BioMcu --> Host: CMD_IMAGE \nARG_RESULT[bep_result] -@enduml -*** diff --git a/hcp/doc/md/6_template.md b/hcp/doc/md/6_template.md deleted file mode 100644 index 1c1adc6..0000000 --- a/hcp/doc/md/6_template.md +++ /dev/null @@ -1,40 +0,0 @@ -\page template Template handling - -\section upload_t Upload - -@startuml -participant Host -participant BioMcu - -hnote over BioMcu : template -Host --> BioMcu: CMD_TEMPLATE \nARG_UPLOAD -BioMcu --> Host: CMD_TEMPLATE \nARG_RESULT[bep_result] \nARG_DATA[template] -hnote over Host : template -@enduml -*** - -\section download_t Download - -@startuml -participant Host -participant BioMcu - -hnote over Host : template -Host --> BioMcu: CMD_TEMPLATE \nARG_DOWNLOAD \nARG_DATA[template] -hnote over BioMcu : template -BioMcu --> Host: CMD_TEMPLATE \nARG_RESULT[bep_result] -@enduml -*** - -\section save_t Save - -@startuml -participant Host -participant BioMcu - -hnote over BioMcu : template -Host --> BioMcu: CMD_TEMPLATE \nARG_SAVE \nARG_ID[id] -hnote over BioMcu : template[id] (nvm) -BioMcu --> Host: CMD_TEMPLATE \nARG_RESULT[bep_result] -@enduml -*** diff --git a/hcp/doc/md/7_storage.md b/hcp/doc/md/7_storage.md deleted file mode 100644 index a86ef60..0000000 --- a/hcp/doc/md/7_storage.md +++ /dev/null @@ -1,69 +0,0 @@ -\page storage Storage handling - -\section delete_id Delete ID - -@startuml -participant Host -participant BioMcu - -hnote over BioMcu : template[id] (nvm) -Host --> BioMcu: CMD_STORAGE_TEMPLATE \nARG_DELETE \nARG_ID[id] -rnote over BioMcu : fpc_template_storage_remove -BioMcu --> Host: CMD_STORAGE_TEMPLATE \nARG_RESULT[bep_result] -@enduml -*** - -\section delete_all Delete All - -@startuml -participant Host -participant BioMcu - -hnote over BioMcu : template[] (nvm) -Host --> BioMcu: CMD_STORAGE_TEMPLATE \nARG_DELETE \nARG_ALL -rnote over BioMcu : fpc_template_storage_remove_all -BioMcu --> Host: CMD_STORAGE_TEMPLATE \nARG_RESULT[bep_result] -@enduml -*** - -\section upload_s Upload - -@startuml -participant Host -participant BioMcu - -hnote over BioMcu : template[id] (nvm) -Host --> BioMcu: CMD_STORAGE_TEMPLATE \nARG_UPLOAD \nARG_ID[id] -rnote over BioMcu : fpc_template_storage_get -hnote over BioMcu : template (ram) -BioMcu --> Host: CMD_STORAGE_TEMPLATE \nARG_RESULT[bep_result] - -@enduml -*** - -\section count_s Count - -@startuml -participant Host -participant BioMcu - -Host --> BioMcu: CMD_STORAGE_TEMPLATE \nARG_COUNT -rnote over BioMcu : fpc_template_storage_get_count -BioMcu --> Host: CMD_STORAGE_TEMPLATE \nARG_RESULT[bep_result] \nARG_COUNT[template_count] - -@enduml -*** - -\section get_id Get IDs - -@startuml -participant Host -participant BioMcu - -hnote over BioMcu : ids[] (nvm) -Host --> BioMcu: CMD_STORAGE_TEMPLATE \nARG_ID -rnote over BioMcu : fpc_template_storage_get_all_ids -BioMcu --> Host: CMD_STORAGE_TEMPLATE \nARG_RESULT[bep_result] \nARG_DATA[ids] - -@enduml -*** \ No newline at end of file diff --git a/hcp/doc/md/8_sensor.md b/hcp/doc/md/8_sensor.md deleted file mode 100644 index df4627c..0000000 --- a/hcp/doc/md/8_sensor.md +++ /dev/null @@ -1,28 +0,0 @@ -\page sensor Sensor operations - -\section wait_up_s Wait for finger up - -@startuml -Host --> BioMcu: CMD_WAIT \nARG_FINGER_UP \nARG_TIMEOUT[timeout] -... Wait for finger up... -BioMcu --> Host: CMD_WAIT \nARG_RESULT[bep_result] -@enduml -*** - -\section wait_down_s Wait for finger down - -@startuml -Host --> BioMcu: CMD_WAIT \nARG_FINGER_DOWN \nARG_TIMEOUT[timeout] -... Wait for finger down... -BioMcu --> Host: CMD_WAIT \nARG_RESULT[bep_result] -@enduml -*** - -\section sensor_reset_s Reset sensor - -@startuml -Host --> BioMcu : CMD_SENSOR \nARG_RESET -rnote over BioMcu : fpc_bep_sensor_reset -BioMcu --> Host : CMD_SENSOR \nARG_RESULT[bep_result] -@enduml -*** diff --git a/hcp/doc/md/9_device.md b/hcp/doc/md/9_device.md deleted file mode 100644 index c9c6f71..0000000 --- a/hcp/doc/md/9_device.md +++ /dev/null @@ -1,10 +0,0 @@ -\page device Device operations - -\section reset_d Reset device - -@startuml -Host --> BioMcu: CMD_RESET -BioMcu --> Host: CMD_RESET \nARG_RESULT[bep_result] -rnote over BioMcu: Reset -@enduml -*** diff --git a/hcp/doxygen/HCP.html b/hcp/doxygen/HCP.html deleted file mode 100644 index 7449175..0000000 --- a/hcp/doxygen/HCP.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - -

    You will be redirected automatically, otherwise please - click here. -

    - - diff --git a/hcp/doxygen/HCP.pdf b/hcp/doxygen/HCP.pdf deleted file mode 100644 index ee70bf51b671898f49e66348a7364dec253d8c63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382168 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%0Ae|Lp(%;XM$Pnu)yy&ULP z;yvcD$9Kj0CzU9?^)i?%lKSTw%<3%AmCTd5gh6~lCaIFKYFN#UuPSQm>fQPk*Sx^^ ztQr)GLr06urYq?u4{#upV=ed(oQ@S`qhzVL_AX7+)i54tbvHu8k6H8iciV?C;2Yhb zk47`yMo-XOlBnCN6_@@ZnU)?`((qV?bd+%&xTW^sKlf>ionQ2xVNwJpvm`HGe6yq| zyhu*O3w3^u(C5TS?WF_N8%`P5e3;e=2)a~v;rH!ZuA2Y{XoTOxsU7r@f)EkPo}MXS zBFiOraa>$`;C!iKt<24xL&I&Yyg%LLXF7iaH*@$#Kb>hr0 z6|wJ49=UzZk`JHlJ|NOJ6+Hr-<+3d*2SxtMMu=2uXvQrOKz82{M1eMpvp>M;j$>}I zZ6MxAtasV!Nlw7>K7BvM2`n_=D z&p5@L7$Q!Srsitc4u9^D1!{Iv`54$7*JV>H& zGG{*@W)VuxU?JYSJ`NkYK7^J~^p+{&(5gxxXH$eYkJT2K{}fqH(7&17$Ziu)jsKo$vEpTxDC3{{8zYY?fw*5|}Mw z#9_7(ZEN#m`Ks;3qp%Jdo+!ArgB`r}WJX_NeLT!v2!d+bQ=i9Gw~9tshdj}Hp2l;H zN?G3?AHW&!mj2Z};EXtcKX{;lY$C8fWyDc30+LTuMtG*)luhG5@Fd@fA13xm=BI+l0IHG2qOj` z``q(D!aUk<)ijja6N&nv`!HQGlS43-pV>gICRxpLYdG;s9{pF@bv9b@0w_lxkhpDD z@ht?ejIG7{M1}vxEspg*LXF#xLlDY50eIadX4YP@q49QGZNjh9;%*450;8x|om>?G zL~L9L^LVLsSUuTMRPkW>(Di-Ju32Qn%wz%HZoH>Hn;uVBq{GN$0rcU%)2QIPUn`_ z>EF4CV&L@FowFB9L#=k02NqiNaUTAJ(CT8O3jmq;+R2!n52Qf9kEaM z4{33!zj6MMph%I~WsWp5cVFK(EXW#BJDG9U{~SjO5bl)X6Wd?ad`Y_r{a0{Y$jCRcb+Q)a5rV}7PU{OZ4-PQo@*NfpRSiIz7n$bON`G~W z@uYw;Yb{qSN-q$t9Y}NVGfETlC{C#Yw^XH0*fQk}ue%YowmPq*5j*Cb%?#h+p?O)p02FjOhtpOcQ9Q_{LGA6g$IO*2aY zVOH$zme)bo8J$u-demPAY0#m~rY<%i+@Md`BTMK%P$(M}oZe zNV6GrhZ6q^F18kN?eRDcX{^j&EnA8xjCMxTYL3p*e~4fQ01QyF_&M@R@?2kNng^)% z4a$mNRFt5ZA$vJ~XH2;8rE#&QDC4!kXZ{^ZH*4#8aw)sz4QItU$RAfi+rHJTd`t-X zh$G%U(op6>!#)|YBvP;Ww>r6H^bZev1L)dkrkWT!vCD?{=_-`L!H|87&symAk)1B@ zQ75mb7=EI3NuIV;2R~viPmD{)d=G-+&|sUUS9{r)81NB))%e(6f6>U4eJEbwq+=D!Fs~8_EC6; z0@OToyaZDqq>2IB9_}gMSBUgDvV6>cJ8WiJoce4kJwNM?lUjtAIi}ZdrPL2&f(rYa z9uY{}je(58*N04lRPL;S3(>PuxSNx}i-|=SZeMkY<{0}-i9w|6l5UiH2tk~HfCw{$ zVPN#4Fio^Tn}VcaSFlC3unc=9se~w5$sT#toBQ|m`1K&T#ePPJ?HZNvff=USGr~Z} zb&VkK7=a`E(%)pz-Fc><9-Lb_a8&)a(ajOiS6jVhhTvUD1zwL!Gf1YxNc*$`1X?yD z6=0@Fe&ZyBvQ$7b%9N(enq)<`qlZ-!r`wU6+f9Svmz0WXB@Ir^W}%7Jj6-F8tf)?e z5UGtvA<1m6FmFtOh7vE;l2UWyP`)QZG~9IEy{HEzyERE+(Rj^YJ#2bv)3wJN(MpV} zWR;;E@1H%?JdFE|Al`>!%sg{31w^WhcK)c$5iu3cc#M6KvoOS)HN>+Tt>zee4d*cc z{1Fo`jAIYs3+qPb&A7?>>GueQO`#q4c&FqxT@|)XxyV#=+pW4KG%GmUfp>o5)Nttu zVoc}4@5-IZs=XzwF3jA%yT2s^K|5R3o@26D$K6bvIjL@RmsLTzyH(cGM>j<tl>Fuzgb#$&BuZpqcwyaQiOS z5510V9e|CGj;1fBge;PA2aDEy$2}6T29|{$?bs;^;F(OU-Z?f z53rPUuTmgj4$8_1%hTw$XFY$NfLH=An!&djUmQ3J2Jb#<-e}fF7iv60n{ktw=nR zWq^u?q~p$}oS)ikEzf%dGg_b)bKNu&@`Pd8@!91q!t(x&%w^3Y@~7_X{ir&v-zmfLfe5;3O4Ww zzE7J-?@#;0e@RaN_xq`B?aiFO?9Kn*jMd+n{%EXbWMck@vHCmHU+GZ)CS&z?roW~i z{=2c7ndx6JR#z%Yex(h;bRDTYE#s-55lin;Aqk`p03KTjl=yS|Mh&}uWz7XP?R~fM zr7UdPd%Av>#6#hKQf6AVKs1gSV_b!y3?GLIH4hsl-0zY&BJT0dZ!tVEAN(-e#4JJ+Ydra}YFY9pIQvrDhPRWG%Jo7IravOL3UG zZ!#%{%M2{x)vkofF(;#Z>1;Nh1`)K;RsWp3RlM3hw>G1;+8TB$R3Q=WLx(LH66}P5 zQQN;7v7I2SjuD{vEg_!0HpRY$c2=<_u*6NHO`UATPCPxHI^QvU2S|oB2wu)gW>Y@U zK;OzTC6&GuI?l1V+4mWI+A3DYYDOiMu&)DA`2~gwuEbjq49dwNm3mEUB=#bxm^VJ} z+>Hx5No37vRgODtZL8KlQ>z$MyqcSCq{R3C)G}HAsKPr%W|H3#U?-(IHtj$76a3tT)5wv|1wJdOP1(q>n}_6(4`v` ze!C!O0Zqf#8_)(F@;otVDJW@GT&8Dir{I z7f=s)bbN``twQc>g9^dm$T3LySb zmjUJiDC5%MTj}B9JACvpnwXN3-(WV+>-xQZ8<3v6mY{|Zn3pZAylMQ~4}%GXFC2g>G=ifM3E zeP~%RiOWTeuL4FeXtSY8YNXw-fdB*W;k-m0pBOy2I_wcE=nU0lC+#g4$04A^hZ1G1n+AWHvP4*EOJRz4rCQ4; z-J^eA3oczmOjTD;OeV$;G!)UoSejL;5$)g2zn$+dc-}Y(^m6gv>B?ACr11?J+rNk9 zl6ZPV^jH?nR&uuT3)oYGhByWBNPT3*A^`PDtrmLS0h$RxDlTg3reDAVkvLhdYRr^W=}*SB8FQpu+g z>P^9S4DtK~)Hi790R|jF#v~jBQb;K*bx%##?`CjH*#iC@`l8c!*a(cAtD6|A3A6zN zvd)h^(zZO5w&X@gDF-Gn;Q%Y3@F?I50-tVxk3wq8p>T$fUN+$0u-wFl=!BA$^GLdb zEA>H(Z=7f@#eYfA#Y(pY{t&SBFwB*0{_a>7qG>uofp0tO&`Eb1T@*1j?}b&A_1so6 zA$TzXh=Z^ZBB0m*{k}|t7mbMj15C&g0MQ3X$m!KF&|JlgB}e+zG;z6K4r?v7x_{>& z7smCOf=qn=CB<6n;zEU^+3vIkQb(mI*pz@8zykBGVX{a?Uw=VqL3MVmPJ3`O2i{kh zc~F8XqPIZ!qG@J5|CZ#jJzMSa1K3aJ1|zYfZDp4 z)^FGQx1`jTtlBTxw9Dc$o8tbrI5ovj%MS>tz9?@nJEhk`$e?%;@VvCLGdc3lYcjAh z6lEf86>(dX%yl;e5lV_YdPW?f?9Ui&;3r$DJa%~XDdEin9?K;gXThErolLxAHu1|^ zuSl(7p8;E~4D;D6Gy@5eohSKEYSdUr%7t#(PC?jbrI+XNA0IW4`q`Ee_*NO3dZTrA zYh1fi5KcisNS(`bbI!kbGd^;eT+^~1;_H9-qFCA8;KAKculMg5_J1D3JYCR3skG84 zx>T(+``81Bot(6BH#F3{IUG9?MjL!n3y)3h{D`ZAsV zvBKeWw1gf7dh)t4rVtxR3VwCPyC{Ui^rvl?6?g#NVPTcQC8 z(0KU}!xDDP=|s}D1t@b2{oy}nK{mhyf?V>c2GV*0&12U(xMj!GQVpY7=po$f7mb3<!-$||KXGvRDPzz7726Sv&!FrN&Ae~ z(uOALK*wQruUt&CPpq1Jk(X{l)vTd(1;yNlV@H==@iE|&mDZQoq(qXG=E{9wFHglF zz2Mf>@KaWe!D7gMRRBvq$fQY`98n2*ho3j1xq*=jZ$%yg}r z0A@5rQkAGj3djU>DEJ-w%V%Zp`taUT$hLS<;iL7rh{t<+H^Sd#X-&?v{%{f_>;tz_t zh|-nRjp6BNLqlHg$qQznG}msNpd6~KJHxD$r!$P@ADryp7L}*A*q=Quy;Ph_cZNRF zp*`L&1@wxNYA_%vY7&8zTfm=aUCi2FtLi^%wYiskNT{WJa!gq0_(RUNcYQG8@Phxe zsJ}wv{&9f+UyR%A%wMIwhP$Ca`s` zH#*V9Sj;!<0rHRR1|ccMOYD8zH$#hsXSPtBx6F@9fl&KEQ$P4^kkGUcM%o^L$YXg| zl1w32wGs$m;E)rMgg}0q1LAiROyu(?8Z-1KO8?f2SUCxaz|0VdNC?W{CQlc3Ek-{u zCbd1lK|n5&$>%>mphir->qg493)}zBz7u(ZjL~aMFO>dGlOEO<$CQ`>^4qeiDSwON zvlx^JoH%)*P`sk65WzvAFezX@%Zm_(tFfy#bQ7~WAXGBzCgCWObrNx3-_4>CQpImZ zR;V-TIXOC*l|}$+@KAs(NMGMKa(eJ{NUm17P<_0GVB%%i1sG!RZ-)NTAe2~QR|rZp zTo@!&LVl#6Ou8dzjneSa4kc4uR#{{{pJTizepRThz$)&EOoWw+4xXiN~=s z)gTbZFeB(?$6ZEC0rzC7V&)Uvlb9){8d}&sG}UyJE1vn}bD?J}p#sh;uD9qV)g|%_ zw?L7`66bQb*zXNMeo5^BV|7MonTB}3UXUHA8#_=V#}MJTeb;F9kS;)Tx~8j z>+k=-b({3f?X04I$lOi3?e6i`^A+Y(jRWOagwu8gKgY;v1ZJu3xW_NQ!E!B@uy7mf zkw5hNUU6pZABBwSdL>n3p9I{U1G>1V;!LZ2GWMD_Cb!trXHAO1mCV2dPhD9-?=t~R zrOd$dV-m>w+C2vxtxey!XaZq7>7L2x5J*#SDq=L>_C?5dlY8zAHm-=5cW%OpXmXwO z|NRjacStxm1=K&Nt(I@%Us#r!PEpTTR_9zaA>se~PAZKMQDt#*07}D+0iLR%yv8#f z{9})gsTr~XyGKAVwfKT=h9~Lu0w++w6DQE$%NYU6JA!}X=3QmQ8S%Gv!8Fi)f+G6ORBH+TA(|}- zBnvVOs4dAa%^KaLZb1}n_>TP44u=A9Z^43RPGPKf_v7Y_Io5;cub_i|(rR(*T)ByL z-g7Wx-kMi_iUoKiUMz*w7e7x#LC(8C6-}k!x3@w2be7Lt<{xw+HEKsd4StH$cP?7|l;A6-7n z82BG1Mu{0lr<*ai8{x8;EGFRYJMm(p8@JH`3^jKV9|vtwUI{ZToJV}$xn&G+R$;Lq zJ9JgpxM2*&x?rSNrdp>Kd)BMyBwae&lSr0C)wcu*j8_MV{7mxbx|02)GZ2uaFZI!t z@0P513yUs}-P_CN>6=n4R`0aX!P>;PyH3M`Q6q3h1-Q#k1Mp)rHq&xQY3w& ze_*X%!)`dP#SM8kLOHrMsug{&T6}=TZKtO_ximXA>y~kRsVtti7Ym~$P(S|Zm2te> zm2cn<%|$`iW(|n(TBQT*wva5JG89*&)0~%|a{T2zKAB@{yrP!6OXMktIW}+?$(gA> z;XV2BLib|x0{foqEjoSjc*lE(=_R8xlXBO62mbQSOW5b)(@klZM+@YH=`AMTPG=F)mN& zDPo*0%{Fq)=P5rEf5-@$&QZeH96$LH1U2%K?>^qVDb4$<>_Nuhww?HB%%3$KhvQz& zx8TmaRv)9bD01J~%wZ*Q7o~O{)JUDNseKT;ne5hwB@ErEe5^4gSfr(WzR^yYp>gI^UFbhdPaQn1ZT6YY})u` z-A3iEy?bY*=cT5qgIC+db=5%$uS5L`_(lawb@keYZMF<*>xL8UD!9UelMJB-3rJhg ziKU9H4xRG=f7lD~z8(yFLgovH5du!X{r+2 zOXAnQ!2yG^cY%R|T_P|rFkfI>d2Hn6_i?z&SQkc4+CBfCn3*@3I#JAgyNR*_7)fV9 z?z(#DMpMH{H058zbw|l!bsEgO!`r-812#Yg-=<8eEHf(_(pni=cGuh8bdPN)sZ6S1 zV38fqnR>%B%nz?y8j_kGSKQ{vW)>VsmhnP$P6l36YIw7kJ_Vcm?{lh99^8K4sw;c- zHzRnp+YlD6v~K<^^D-%W$SPfRDH=Nme`QgwKkfYezK>LD2x@_EANH$`@#a#3#NW?l zk4(Fz^O!2@_^zXu-Ba zt<6b0zv1dMMjaW&p-4NMccth0RA?~!_$@}2M2`5V*W5aL3SL|gaJq&8raV%#273S=ED3;g z`mU#HTE@SSL;qg$^jc_sesKq0c8vsKN48wX_w;RngbA}^Q5DoHvwrKbN5(L>AbjSk z>2p_@{1vQF7QZF0J7y9$jAEvt*mY|Q}cw~ z59@?iy*3D*I+0a?Bt2Ye=qf$iM*+}2q4? z%riozt1CruLrV&+C}^`d_Cue5C(c@jf4a}J{ei;3_BEaPA7B6czTT;k72k%pk1xy9lw>(yR=y8;{djx!7?7v{!PE`NR5%^CKFO8~_O4 zVMiE*C|N0O z>ggTgNLh`~O^ebw_eN_lD|m2B1IvWLJ(&vR2{Y^io9|7QFU04S%?S<@zKq6(Bau|( z!Qo)_HW2d7X1f{!hR(0tXzv}B^BL65S3XN#t1fEwt!A9a(n9YiCo{41w+RkNFB#B) zL2^6>F~dixc_UB6$>Gr;6%V};AWtI&Z4AZI32ic21 z=Qz=#oX+&EEv0Q?wO(QXrXUifq!7pecU22IPfw8P*N)d3<|Y}Ii)gxLnl(hv^Ncr8 z-rfBZJi%n1eD;Js!HSDKD5RorA=h5iUFd?tKRimFKqw#dOU87rxx(&#^xTA8^`&Ci zxU26qWT)VXlzo7;zH8GgZaT83rA%o^$s5|$(7m^Mp zxLUoKyWof(F@*JiP)0t}y9`IB`iJf2Rl&hP2ccdDCV})xWY&zytKjD)2WBFnA9-mk zsqMvit)U9e=l;O10uo=fxT6Y?ZqzcT(`G}V>(~4?t(~fke?>BBrjTd9as!j-w8pmo zz(r}jj}QZ9gU3Z-*r~eNbZkUO^|m7(C)qR-0V`4(wn|NSpQAZ`V|%VyBnk!M#>Hye@Jz zO5{c#d5+j=Z50y3_$XueLziO#bJwKUBTdm^iw0jID71CXG`+^FgqM6=hjv64E0a;# zW*&=k+t=&*nmvNm_J~v%A7IhlwTC|~*{=|yf0W>VFR|Gf{})R(S;ywfoz%1SP62Ty z>`p)VNfeOBm+@=kC6UE@97-_GOtgf$wJx&a{f;x-keXe)4rNVSDt#CC(%Xd#j~`oT zCSU~dndE+?7n6>VB zo_7padGAx5zFX7il;ZN$+8!N!9o%0F^e5oIy9TJNH3mXm8$Cz&SH3#`MwE&jh4+%B z@we7ms>-qPjhTS|EC|y{k##7osSxB;fxI9-${;aEFGO-`(GLj-@hZ!dlq4;`UKp6B z*Pk>lF^5AA#tuc`h7jpMfXR^6S9L4ax9$gC-fPzGId-y8&T}wK+rPzEcp>zhR`6$R zra5_)jc{}2^WO^8UT4D;clO*>s4pWn>U_UtU~L)L976O{0N40AR0LwQO#8py&MD76 zlJ#=PwyJzKQ+GJ`Ktsvggh_@HMu;PGkFF(-8P=cq56Cs|refL2`1=n)&0Xvgy?M}T z{>Zl*Qld}vuwszurw>~a690sj$I{zJp%NFxFi3?n+BgXfg)-!ezVA%}BO3okMDL%o zld1>Qo-=stonusjqC6HE;FTp2&#aqa)w!p&H(YXVa+8C2%^Q2*ccwM3$n!bvpw_%d ztK;ur4}Mr03poO-dRJe!nNnW!vUYGk4XpnONx%X`3|1<-Q0D+W~O5vtP6I-T|5&?w40m00_cyVQfngU#s&Txvh;tK;V&@FPXME^A9z z^Z=xq#o#5q4VJZ%0XQWUr9C11F?S~BPyIj?`5>k&K=II&#hoc8(&2XNVg<^PCVjNU z4TCl7zVg?Vb60`=LjSL7Dsij}MTm;6V{PBHQgI};#61Ols<4`6KiUTF?X6y`SWRC; z1D(z|D)={v;OypkSsliJ(cPVPF_0=c#kWzFM}zloTp5x~C8>MAUO?%ULXuz$li(z& zhB5C5@+?2xMU;Y>^khzd#~z1?e9KdvC%+oH#7I%2WRfCm$e-v4yc@YpkClv>svh&) zOMZKKkSc-`v@2kgDVs-BZ&=P{*tMLF4Wu=(zfPjrFfyQ4wK?YV9f-j=#KO}q>`o9aT|Bh@lmM`+j|CI2V7{3y<|5>C}p}e%k z7X!KTNM(Y7-7?eDGQJh6kl=2{*@nnSUd61j!TeM1k-CV<+rI_@YzM9*B;65~ zg3pLt1t)?h>UKDaKw794E(j}g)&GlKXE|6>UL$ZZSvBnq ziCUMd%+4jE9j?Vlwa-799@b(u1q7pWy*>_hA^kyz{0cJkoQgR4KdNHiCy> z8Be0{ftmBSZ?xrRXr3v64rL0E!axIu>|B7dndGUZKE2WG-WXD|i<)+WL&l~#5=b4U_K=_&egr5ezY9Voww~uFD`oke>EOdxIpT17yg}A?evuL;Wndi~#w*^GQnBzc$ z;AXayYj?d4mr3Czdi+XK^B;BwmOmkaSpPQyo3gaSe}sBE1_FokAnq?NIu)@y&J8p( z?-3HLNx`uWana#$q&pL2BY-a zp%5m~5Oih4c!cB+#bIuNG`mM7-POr92loS%w@Bl`}-Zi{&9I*9s6K zZ@d8 z_0=|Kwi-8U%eI-y$iIZe%q?cW;tqW^mjadW)mk*BkRgynQm#N1c!C@TSCdyI-?Re$ zv8JFhNsyQ=5PSncftuQOnUJnd64#Yp|&;eZxlz~$Z$udNqs&9}k+)UezSLmAa0@fYfPT}eY0 zgTz@u_R6fK+Hdc3W8IFbE1)%qDWoqQ_RSabFx9MlcviuL=J5nuKe{KUVDu;OEdaf# zgr>lIJ?(;r6R6@#2oyGyq;6?&8x~t0y`FujUqE?vh-ryVdQ?FIq2|nup1O8Oc`?wU`h7MGrGX!!0^3^<|x6qopITmbg9!qoWeM zhECQuq-ge%!eN{0hB9n4nsC|9%H61B9CCo1G9N`BPiQB+*-N__m6kn&nStL2+#Z@clL8tOK#6U`poxSnNO_+@xl0j=vpqEwZD0|Eun%`WX>bVZbJq*Y*Piv2w3j)(1aPR`zwQqzx>Q-JLOo?FZA4g<%*QX z3t>(iu;e zl|YhZy13El^#&03Q20~!A7|QqAygY zxD3C1K&Eal`?jWxC^0$Z6^Knn9kz4~(GZ9sN+$}u58oEbkgWhn1_g*vrU79+sBHs! z{d$+heLIskwdmRlRqiQ!N-T_|L_KOw@sBCgY4RfSpMeOfjU3KOQVaCSShFx)dMY%( zw-92AMA(@-uUDxttJF=T#~3p3jTdU<`W5rr+vqkxig2vUBm|Vow5?7jmNmYDfW!r5 ziz=wdeqjm&UC=9|{cgdEI;A~m2?!4<^L#OQh`BS$f(_crxN47cJYx)W2v6ry;m zaSzGcr_AtvDbkcsuDR!^;;eK$P0ZGnHsiMbpb3wW0`Ma_8g0Xx6Q`VWa%!9+l-O=> zc3)vf90&bXZ)i3=Jw>f$lntr3IW-*Y=CW=3vvCtWgpRUTs`U@={P(XX_K(N-e-(V$ z{tv^m?{BsAlz-;QLXf(;M?u{<(r%GiKQ#6{oZ}O&uJpGEchlA=SCY2_+TG zwRC@EgOVu8Bqqybwu@WRp~EM)M|c79RYi@3M_S}FU63I1B*+*kluAL)j2Vql!kA{5 z!3CpXN(0r6Nb$oYU}hokFl|l~gH=etq^KP+(MC;V2Fgu1put#0OhD_mOknF{BwYK? z6NA&VG=KofqD7N)QPLRaUYQb`N!jBpF$2eJB2QgQ*}DIdF%iJZ7N=s&g97gJoyj!T zmvXD|MNua~lUq&0OrwpIqW(#pr%75NMjhH*K!Hhw6XF^Z28Y*!O}K@Ava#(ZoIWcF zB}j?h1EoE|H!3AT7*;$Am`={0NLDt|U~AZUl$IP$+|OL;>6elwWl_o`OwOpmAIL() z4mfUL$?!uJi9CH1E^$zwoR%pU87e>q8QS&;8G5c$svP8cbGFT)q9WJmT6K;@_iU7sbDuo{r!I!Pto;c!HGF7hn<1 ztQ4dZk0C?vYPsj5ICew|n54KmVq z3L0daxh9!C=z+OryOoMmf~9DLVy)N@kz+_U5k~vsS!h&!RkJ-TK52p8_NSqtqYSqt zl4?Ab`_G(0zTMn)S)hE_gI_76ey#TGPR-ccqUY{naqkfKtN9~EYB6$Ba#YUnin($$ zL*V8mL96icedO|I!))A92C>uGj#l^7M6HYu`#brO+%cEIXZMqyUPx8Dk=(vmcHDQ0 ztfr4wiF0)}&046hweKXGkG0l)?+;qZjF_;*qPIf0!lv%~#|bn15a&n}p|XRy!>>P% z$Ql*)wh*mlpKy1=xfxckUZN!=ckH3bpy(XJvU{?GuW~)mN4gUV58i*y>9h@QBym*R zORnVrl?rKL8TqQS9EEcA@>b3KTqUklKF4~=ZKKfm#ULV&%8<))D!1ZBJ)4qLeI)D_ zGN@MGL4f*5na_gOkoSt56f@?az~!itlH!EXXH?=Q|LPlF?TR={D;%kQLas&9(RAB> zM%msJDz;#{sfqc^UIsJK!$G4_FmiFi%WS+gxscY&uLvm$x{5YGd;zy?Qi)cMGION$ zE79*&9xv8db6wd&ULklPFOp{hbWltlOv|m*5t9n}qALiyAVZ}c&RUE1uJYSJ#+)d$ z#klTZrb?eg<T}RyzqoHejh;x$axr|DsbGi8 zYkGq0kdYwcl^LeFhd|Gj#eR00zN`a6^yalo$XX!=suv3bs6u1{GP3;&rj(`DTj4g& zTi8+0&<*-Fyq1G(4PFXVA59j`8Q07&-WCs+PHW&=FoJ7FI!bvbt1xO6_6hGd3;Gx= zJ_giw)onFu%t|@U8w+$gK3Omo%}N~`71)OfpD|@{4D8B|(cR%(v* z4IK;tGFWZCoo2XH#Mm&9k>;I(^^|EfS=6XZiqRNs)jyrGP_Li{Ih^HcorQoI=;@lA z@p$y$)j2$bdS#@q@GkSNxSV-B0JrPPE_W~g_zF`uq5I09@Eb1yf;7lb;nT?RsI<|=$B=)Q;+*TERYBR$D-4uRnJplv^#iE zw{j;v{oB?F^fJ=Nv{3Z@X#6P}%}BLjt)XSQY^K*uWz9H^n5>d^>aqIG4QG=Z_cYEo z3`=RN{2Ck|es9KFU2|!FwMD{5gvze0dXLi4M)fnBXz$m8D2amhe2zf^~mIEM!7 zI?c;!gv>UEozSbX+?6U;C>0A-ajVI5DL@H;-Fyiyn<+lp8J6K?^H$;FDw`4o2~nrD zvSUHTje}TxEej0UC;Z*128Ny81iQ0-TS$aQ-vI6tQ6KG5xlDY-l8nlme7$B-?wPp4 zLn|$mCg7KuPW$8a4iCE3bI)wgo|&HB%+GK1r`MrwT>5zUdU*KsNB#cq^j#PFfjW^_ z5#OE$;cQbIS7}3x>pP6m4YIp1ivRj%OMls=KRRH0@|<-JtzND~cs!^x(M##svt>)i z9$E?x2#sAwkc)k=4&B>llZh5h*wa&H(oaX6$I(j%Chdbgy>>c>un~3j0I_lL?XPHa zTSG8#>~qd+!6mbfA+?5Qsv7PkWZ!Y0_O>aHcSdGfo#d5mwjwl|iR7NDDK3_V5y2a3 zmPXC-_V~1xy;hk24)vfnHR~;_-%OX8;cou1y}dn20|z&}-Oa_8353pwZvN9SAU`3= zm`F8ZJ##%U2WWn9cr>6Nk{&LGU29erc$}!1PISH}sJBQ-2AIm~wlw>P!eK`$#859| zit*2*g1%l&DNSTQ10t8-KCU~D^TN;g5@_+Cu1P!?VbdJ`7_>ZW{xcz|)19z)_Ac{B z3t}^(MYwv8fosSgv^Kyl%{FKZL{2ZHY4hj`<*~^4&vN!R50&vXETOGQT}Zuarjc;k z(6m1n$dz5(UJq~l71zrxE!(_anUc1;HCDWEAcO3kD74N|h_6lanj40aSfEU}sxLo& zPlgkr-%+5e?TA}YA}Vi4Sdi>>RIur5EhOL0g}ME5!qpSSEl6?kX0?FMD5h&%%x&w3 zuy&w(yF2zRs)I|~RiY8DM0tQy4s4BZ#FyuA2=R7ieALEQMC&`a<9?V{{7B7dEy)ar zdiR4?E7z4gjVgDQ3xZB+A8+q_&+6c##_qa2^ygU+doSI{+_lmW#;RD8KG-=k{lP!^R9L?yU|LxxpSFam8+Mc6JJnP*LvXp5sXi-#gA4qx*_>>3a-cQgo z9AW4`T;y54|Dkwg{epo0t4eR9vgBXgqAxo(^EoKoNc>EMOmPT{6KQMXHO;6i`ABdn zY;;t{%a#k^DCqAFj#1FN<>BV73kf3AFbIxEp6QNJ=J2?o+C;>3nph%L$uPx=!j@s{?|}iZd+V)q7?clz!Idd&54CiZ;~>M-xx9$3(5^GJ{B)(^gU$ znT*_z5669xeAYbUr8jA4{6n7>7G)~>nPs7Rp7LnGQ--hc#|BU#jS!6)1pV#E8CMlY zvqHWv5Sf#>_dAcDtOSh?s{gEqGC#CgV2hhsf%6zzi^rWbDY-PeyMC-`hM; z;tTSzA-T9EYUE@MtVyapRjd7O)>-$)o*i!AqJ1Y`9b?TYNoO2q7S1joEj*=asm29| zuPYy=Mw}XEy!<9(x9YHfONu4$pA`D)HI_QimvpSAK!$)j|Dn{mQGAb=zHR864jWi22N2m?AtPaA zH95?-;1_l;hC6P7u9V%e>kf`ZrPU6Y=4(jQ=)~?qYb9rU6J$1e9u^*qZ0#GfB$?&J zspy&^V-gGzDWkIVKqUXWNDp2^`{XVF&P6)|J)4{mk>^-t$Ff6td@eUs@_R<|;eIBfQJ?O2f2R*vlpKRe_?-hPE`e(;-SBP^ zQgPv0#^P}P;lBPwtq=-~@(NbH0tS)l$>J{9RLok%)lg0FUDh>QyT+fWJ3$%cSN7LS z_9PK&g;%@h_DQF^K*Jp^H+#h!cRB6jG0v@851p+wElsCO&dW5Zo^huK<&(Epmi4EL zF{^r7v6hYQWk#8bW_hm?l0GFfblGnz(Se3?3j=)8=4E}gDET1Y?yM%_ZI#7w4?rg=_SVhgp*$UADu1bJ%yC>@ zU4G_-Hs6wk?Ro*3vq-o>+}x3}Mx(OZb@T#filjiSCa=@m;YRB(dR%S%aQ?~8L>cLN z1gZPI!`7Ij?Fm3NW;;j5!9_A|@Ib*7>LtU!RwRRbc2BHU>ud)42v-ec|QsT1=a96pRJJH z;x9#cNm-%a8&%KLJqLO9k?ej@C1laRgcRA$kJ3*E;mMcT zYNepm%ZL6JO3OMEk=6>4jC8ag-(w?y=&iduHud0Mx3c(=r746E&FG#X1=5}phN;Dt z5t4Y;^(%O-e=)0a2X|TXNTDDA4NJqW-WHf0MjhP1Hl#Q=R!tcfr2q-FbrFv#yl4y& zhY1G*Or9P#qM7@UIw>;K6=qGIB7+Bm)5@SW%zpv~#hx)YKATJ)7qk-p9&pz^i|X_nK#C%rFJsE>Vt+M2B6Z<8%|f~7kLz_ z$3|zz%N3a5=Eiq1I6NKjA1W3eNDP9(MY)J7o_2DCi0Gc^tN>#Bn(o8HZA|zLwM*6; zK`=d8LOs8Mj8pMa$@Fo-D*Gd@@SFOaJ^r-W{TFue-@PRaEG&Old;gi#sue%}H7biB z{P+>BRumB`3RHk3P&Nk}!K1he58#nWgld3Uw|&XE7p71Oow|40isvY8Z=IvTS{2(7 zqUO@#kDCSAGO?742-XoPW5k{+U)`+ad0P5NN$Ai_LnTvLUteY+#$)QB)(_TB#svSA z`$Z3e2J1imOVe{9a#FeUu@z_*C`$)}QRlcQe5`&Cj1{`=`rg1>wU%w^gPW5fIZY{kO1Ni!yPdqF$XBh#F4rnP~L>?A% z$q@5ffR_>qOMhm+$CVq{x@5e79G;G&FhoF5jt=E=z| zyNz)kJ7e@hOUv1C-!TA2gDJK(;2-*x8B9TtXfbw_^e`1<#B>d~QQ`sPH0j2|1WD4Q z(+RLncMFIGkEE_tAq)+QIO5L)+KC0p6nEqx4odWI^;Z}?3v5tUWXuw|>ZY)}28!Zy z6F`tBf}$D2nzpQrW_J9$Pj&rHlo+2xAejb@MT(h+k-C%n3TIKxAt<2-5Ed@pMh3Y&y4?R+U9Q9H>sJ zM?0-68GJ7)AEKVdd1&aU9-uzJc}VPV;ild9LLA$gl9%9-hs9gEF)Ej-AS3FI5cp07 z<+PqB7j+^xqBK+71a>J;Ab*XE@}PP2Ti_iK-`4q$wc>xlv;5;2_}1_Fv2e8sUaGOqtW%)Mi9rroypn~rTK9otri9ox3;j_ssl+qP}nNyq5eHcuYx zy`HsppIXm;Yn^&eKHQbME0quPy5<;j{N{iBhtwf$;d)3|-&zB3np&x`>_U`>j17dR z-&$-6m^(Z`RJ%*S`XYj(_Ckc_+R-YUlnKyIjwx?;!LgR>{jxN;D&o1ipe<4Z*YFzy zH*1hgfql1hOl?p9Eux3DFtS4itBm;?c-@h98C$Kv)K%+!P6ZA*^W-o*A)^pC9d59A zdJ^;_<(+chJ|{hfY$n@&oLy3B-*;8P4mxcDv@yZ9%;SXO3WLrtPCB^iAJOKY2@}T* z4LnJc7f;Gd7adn8Ju>WWGlY^8l8n#`jj7h}PmItM51&CsP!fMxZ?OKVPXEZuf45FA z{|IGizmIBl2QFrNYhb^bvZ^s9yrtZgArF~CT?97$&@$D9m%QCCFShEciioDh!Zd7* zxiN0j11%IiMh^4O!qWl_$wCAi3g-3UOY?!s)Crb_M=XBH5sOSnWfEO5 zi~&V|WDU*nWp%XGDzp3YWiru-zVe!axsxEIY0}gNCDVnp`hL83nFG+-SdzR59LV%g zQv*Nhu%6KyFC6({`i$z+HnN@2tvd*}TPEiYI-W>Va*FP#@Tah>o#+EZMD!f$+*pdJ zH_haQ&;k|Z#&Yd1ysS9mAx8(kAaP>8QJCnux-<|!-Hf{hhng?0N2)q0*HZA+w7(4O zpVAP{ND1fa#(*r+9_1ZwC#QD~cq8`#`=j>;e@WcKH6A|cZ8f;tn_syXeK7<-%ZEX9 zr3VegCc*9D^nylO`FS6l<7<)_9c)la=BFZODR#j7MZVTSwP9INaCu;0s~&O5RB7(R zvT$bA`U=1vS1r_Scxuu=N(i1D-VU1BD19|>*)k0ND)QPWJC<#BQQ)w0rH+QByqYFc z%gCg@XlA&(K+eRY!Qe{VUqo?{Doq3kh8{1151Ve+{6#`Ji?~|KAxC+9%X`2(URG{m zNUEs7e5;}Oe1^r=%}F#bvPeX~9v$pnsHQmd{1e|>&M@^%uDWaebm-TEFxAGxITZ`D z@!;nHa3{}$&bv`+>JCgWrAK~mHHR@Syz=C2DRk&kJ)lr<*=x?er1#j9@or)+9u4ng9lw%Du8J%MX6=QbhPI!(j zsR+J<;*?(wh+lcx{Yig}ZZDh*j6m}h4DnHFE%;gH&T5s64lDvsq8l9bx(9Mt#ads1=jme+agLWtz)qzfZ#%UIwt7P=Vv zPO=sDuCnBBHjW>M z0{BBgK(iEF0zp(kSj!_pyW@ezHJzU#b<_g5SfXc+?;e2!hT>{pTKS^)qC!RGdw-6l z-UlM`eG!;aycpzAsb~^{G$&_QvzGl@6@y5eqANPh!OxlUQBfhv$S#i}P z0F_X5A(@UNChw3+Q%Px#`BD$d4TenhLB1lzbo=$<61vC1d>NeYV10zkr}(W^b5v}o z^kA<6+u`0|gCk>fNKWQp`Ntq-1DW&nuB>LgU zw_=EU+~RGKX@C0^Rtn+`1%l@2TMxg1&*8mqVPgxZkgW|DVKSC~)jh0g0|lYz#T?g0 zf12$bt98psf`*uKCVHRRcBP(Sr*pD-TD5`7$#`Ed;w>0?_C7I_Tg{XD+^&9fD8u?T z=^x)IS;UIVr|4Heww+`exRs<^;wtL_Yx6Z8wY}eDnFsUkF<^H^E}NBEvr z{`%)ghYYO<0_7yz5Of0xpJrG=80=Zt{@EMA@2(MBb&Bb9x1`iU!k?efyF;ezfGOfJ z!#E3-gDC3D^SM&z%P17K1c+xn?M9Q5PV4EJzu>OkDtcR?ejTzYNo+lP)Qp&9!mfU( zuy?3jX2^8CxN8)E?|hrvrVo6U#H2^`tl=rR&M;0-9>|U8${T-m=K6&4fN?sYQmU_? zoN;;FpG6{eiq*TopY5+Fbp!QP*H7{sB`O=OgbL$?NRHIwdi(39!14qYU1+lXB@Slf zLiYg7>`Plt8TflhlJ}@pROA8z84Aa&K9rN{TNIpfFtPR>!G`e-ZpC_k1(Z9 z806yIvbm=&;=OyUF46i-DO|&M0<@YC7@&;y+ScS(sXxYya<|9{Zna*}p(N zHfB5q7Ph}YJ@!9Kum6aW`uFyce>Fp+XJBOc8&pqO(i%$`y8XN|Dfiojv&aP4K1CK8 zd{$5$pewjX{rOP?{@V}>NwGSj9 zuS>@D(E6Cej!`E}y~=#CXNKWVt5TEZx?5K-?x=Iy9Plabvhw(nuAQD=>)%*bS)d#W zH_E8GN*#b|ooK9qy8p1#AMf?nuKlL(^*n85ooHFMmh>95TgSCayMeU!=KARRs`q5t z9<*=%lkh0*>){3bSq8l7kEoUECY;sC$+N*P_9x*U?yDY68(>y|hZUkNkM*6SO)|`A z&0-1+WcE91y_TB-)e2>KsP#4n%s=LUOv8yoU4-d8umo&%VEs?yN0IHqW5i@4{BOvJ z3-YqfcGjz&8?D{8*gRKebE2F4A=B)9GMNQW`vI)F?nsa$0G-T3G#N803;9FmYelvt zs-f5Ic*qHBS2!bEJR&0ckxY?>t5FF>^+^P6X68bOPOH^GeS(yLFbv7otl|uNoFuY$ z7gc3>j`kI(dkVUQpn}kn5{-zyfex6ecI-q})u17^41P6M_RPe`+TbHKMMhGYBA@?? zD#VcO4eqQ80wF@)>?7@5McQ`^hCdgH=g}Y zj$Z|-(cps~=%r5zigID>(f4_(b^Zf-j5%e)s=@w-icHdxcpbCzM}R)qTx+!)dxkvS-{hK>#YlL z4vC+5AoTDo@|P);akTQ28paYIfY@IeZ!z@+zka>|WY1R&v|;npdrhwWdFtM5$65WQ z09z;viYq@ht|MXA|IPLNM4L+~W=Bl#orcnBbU1#yP8aIM!QOl@!7vXcw%U*?w*J&A zxX7H`@WcYtd!XR@#=uRvTJ%$v(Smttkkk{1x<5X6ZY)A99TcXj^mxPwXZ*STXzhdW zbIo}(UCltFzFjA_enRL=Z?)>%d(h5Nnq}X5##NH_D^6{aV$6m*+*~qpj@n=?lKN6d z!idnataj_U1}2U*D09*%2nT>7t`+|>rrJ~iqv?xzJl`-k&r((7$EVUt|#D`!CS)vF3QrYN#so5A|sA> zn4$uX0b%lxr!)xx&05GB+*J?_)A#$n-q_&4T4qhxpQ+l^J<~W@m~7-lyhx9k15TX{SGTV_14? z)KQx-Rj-Y1Y6W57i}ycE4L%?@cu+l$KCEJYO`ZUW%tH+?#X^4S){J#^st8w$q+_5h{o+l)gtG9Xvp=L39y_=Yv2 zQ>$eQ$k*q1&Xb84fByhbzd`-u_?M$gzb`>xgBWCZ{wnUi*+PpRL6tV=;1(xVI=109 z*AIHD%h|NDbX~KRM^)jIxXh#4K{f>#UQMCmFnkYt;6IVzg(QXIz9m2cg&1nKh?cM? zftaZRvOI`cyyDNUBde0`Nj z-RO~g$5POFyv98`iMpNo*3gMPxf*19HrZ_~AfhL=gG^fe)%=hVEwcQm!kBwrsGiG$ zWmT3j!m{j+B`#3Gfc``0c@$*lHwXzvsc^~MrL@6&gN{Mr`dx_k^8$3Ub4bpQc7tjb z1=uQI+RFXLvv$=?u4B14CxTX91Khgy7_K02tZ=e&HR_DITdXFBNr6!`8`+u$Rz2h% z(MZ}AKMztfFRB?yjEd8|>eLw)4=C$F>KlWs0C#dupz;&Kc_5i$k`*ABqVe(FPQ>vo zRZ6l-_!Sri^YU*3bybxC(Au!31WyWe-}cXNLsp+ae-XA=fA5g{uj_*UVs@;*w`lzx zm(yr*>))B(BQm#R(05_=10sJW2Q*kW6AN4b#2`UTe8@u|YaY@H4pXop+PjSi+@*ZC zvoeUN_GiI6bY84d&Wh0wW`{ufC$qCUq}}fh3G;ongkf`1qRlbId&b+xeEGPzsSkU= z1Hf~;hHS4!I_aR{N_{G|=V8l*i3)812}qe~hdy&iLa0G*J4b$$T)acREBrlZoq;40 zp#_v;5j}NFk)?22XHU1Fn9TEN%i0eW?cQ$+%5%jqO&;P28HIfWE%-zZ`p*WHi&_W^ zE_xgS_Il&wrhhQIgfWJzAo;m;9M!QC;o(fMEC7bc?OG zRrh)qqu*>C$K9m~wZ--%_cMA##1F|c2}Iit$DWz;fDsrl<@1AV5!1)dbMe%u{RGq8 z1)ch@kDYbDYa=n@B5*PlixN2ZRZY2*^&O1f%x{`;Jec$1(cg)ri~|o5$>6vTeI37+IB~6LVMD-!TD`~HUWPOjkqg(m5SRCkOD2utVe@S8MTqmMuqb%lccULxlufWnOs=bd_~h6DF+Q2gkdNYdt4IEN?4zZ$)&2M-<|O=9by#aB@6^7yg3SP_S57N^Un;pkYdVky#U}n zfG*;LuC)J10 zLiTA23lU06bhE9s-K%}TU4fFApAPNxTDE+MPAxk-vMC9*2_wu`ML3(`jm#B&!GqP+ z3KhVJky$#UaTFsip&kzZF3{j(6D1{wa)MkiwN}PeE{Tb@`*?joBY{}!>^L;VR0ER0 z-)rF5mFC**c&J(W*$(u>cZEL~p;>oJ_m`~9X}5xWgFTHBYW zyUBpSgm3O>9-7btHW>z@ei%se8{?hmWo|MY2iYtYZ0)Fa?jdfbbF*8k+ZXdeYV z8XvQM0uLY(84LkfUWO_uQUvRIMrhn~_w$N>S+6`>2&J=Tszv2Ck{lL=svCv_$7lAy z9>hV(-9hgcDe)-q@eN-RrTn-`gzrJ97TvjeGdXbE9cGrN3w8ki0Hu(?i#n1X$_ zj{If4jlS=bMW>7YmCp6RWA|P;{T#wnJ2bDzvycUgp$+O-?2vMmX;o92eUmcN2>|UW zQg^s4B5Dl_-nJg^APKmQn^-qXw`N@p1hKPQeRUHNhE``MIE~dh=ssHIDH8rMDOzVn zr#qU&n@yzRtFzth&+Syxi>tNseQPZ((EV66+zqYv)Ch3oxrmFMe#I#(-_qe7BR~^2 zea%hQ%C+loF3Qg`RbvZ2t=?t(#BL{rU|)o%HSIH6miHvPa(d0MT5ek1DjVA;xAQ** z$%V^55A3#YXSBS5R-C7=D204sR0SR1CEcj(x&WVP)~U{P?;e?@8&0t8cn$=Sk{Ee^ zh7rec@7)q!ts*LFpQk(ti%h-kCaQf^F5N2}_p4Ch(&k1jC9q0cMU_r0RgH~m<<_F8 zTgi6hc~X9t|D+)w!@3HH7Qt0`yp;x|8Vj?)+Jlaq9taKN(oEfY2& z?rtBsp#^Bl?}3Cj<&^RF9uE+~o$XCah%eAST!JHVx6=l|W(`kee}`7xItTg*3^Dbt9I9*jB( zrQgRUiQV)wBi$ziFS2+b0Sk00>b5{M{G}8HqT0lG!MX+Yl&^ z{l`}hBo-n$LKuAAk-)w|3A!C9!hz5z3ALD9;=K;%a`Aqa8eWKgxtW$pL1eeEZ|7s$ zG1kw8Y5F|Q%m59dKqKRCSO7F!d@T;}33ZRF;k>Z$BDG6IgDVf{z;bOAyeo46NdDE0 z)5nr5*zHL@{#V8gJvO|VhG?@YT$AO>kLHCxmUZ2+>L1G-PLW%$QY)}w$6pA12{Ooj77TzAA?8}Yr#C;+h&A*n-++d1Xx`*AZsTHE>3!U zB3QvBL0T-%cpYlXO(T>m>)1X+D6;W$aStu+7X2H0&ZuMr7c8-Ha-MCB52kXwT05N@ z<@0k_CX-|VF0Vqcu|Q(=PeuMY#3`CUTPDlcMVcWuQeN(WdN@(PO-THzxf+Y>1p#|1s!mvIV$3bBw(J%y9k>xHoj6caJ{{uwHKQgjAP*arOCaK zV6WFU4~glh_0B=8@IlQ>YjBan6{Z(!D@2%@NTQpE}LmJ9QtJa8R1 zkv)Fhhx1F9k5jqu_OY<}jai!hgMQupU1d+|U9{Yd<}lC3gXihpp`~WHY1Jf`sEvUa zkw2-l1H7=lmk*qQJJ(G8{Nj)R=a_!3Hc47*&@m$39GHF|(aTct@{_-vf$8#GWip1! z4|4}K_nShZ8Q1I5j&|>xgSlx!Mx@L)$S<*D%y}hFg0rTV4*F^;w(p;!0+jt6I;a%I zb}uQyC9_vIWUETW9p-~D1|=B#>U$)X+-5z%tc1UUDd}y`(!{%3=~eRh5q%!d9z8i? z%onQsHotPA$bxT@nj+Uc9pKGIx7z~m*T+yP41sUs7jn;{4;$Sseg&P{Rh8v_)|FU% z)IoVvZ^PuwZ_$ar$|VB3QVAW}(0aJtvujp2omWG#6uzQDc-z?}RZuFs)g;AA^wV~0 zrAWP7TixPu5v>Jz=xUm193OBc!5=P?T@CW>hoc4A^aV2H(O|)ORr4Bk%r{_L_ZN2V z2HX$=nnoUJNf;-SrU77H@B(q8o`E`jqub`t(b{RCP&Bszv{ z;;=teNCA6Mn~e5I`eItJ-M?;#sJ8m>Da#7Zc{EyPhtA!KfM(rpwQ!E$&s(`fF%?hjpEa*eo~|o@+IBNXmatdUQ)*2 zkjVcij2VA7l=-*WI88HJ(z+M#1B<-;HvS_%vO$zmFuLF@rkA_Uf(P%@ECDqzg6mKx z?!d?V5BQghWzc=%FHW@S%%5uDct&x6O!VUi4Le*y=(hS*WaF~Jpzk%+cA40s`}aIG z0j1LCYfUhRxb^KIJOjpSQ-s|SKh!L4A8HmTi;hVy@z?QY+_WjsA;A^jub(5`KCiCO z;TsgYtQ04)>aGnmbbha#$B#4Bz7VlfYHH%k!94*HjNPYZQfmY(e@dj3T4gYE`P^nw zLXoiN0-aNQ-A6CrG5ADt#YY-}e>A43*IyP)Tua1FpBWsD5hA=7eYSk9>9!TqoR{Kj z4mslzm||39_QQM&=-S83`7LFyGNKGOJD|Y85Q^X z#&|@_%so_7M(USeJ%$gTgnvAS|46L(!@lj_k+&OiD>eCum?`uXw_vqdtKDY_d69)D4xal_bjSSb6-42R*@ zsJB=RJo;|RlBBZbb!M_ZhOX-h5XPd@aVD}d=Jq;lNzj{j<{|cP{ z>+sI{#{j9n6Dz(scH$^zgT;ge_H!LB80S_nfy0PNLs1i67_HEZ)g9}2}4K! z53dPEdZs@|v;W)2vwW)Yhu6f}?_LvIucsul7^Jp#9p=YcS{0JBQlJEUp=e?Xq7>oJ z$JS_B$o;m61$HE-(8twnz>Yp(q5XEXlyRon3@M_c48;s2X(QO&1TdW`p<$|!{@*YX zQNaxvFk0hA6)dKy?5P}=#%w(S{fC;i$O_nH2Jnd)D?SU08T*!qK;$vW^cc!fh9C(t z*@|`T=x}5?7oa1Fgh<#9>cEogy86_7Hxy&Uh67dP5bKf|nOZFHj;WReLO}qqFa&8Z zO*9qT9-^3~x)Mz{?M9iv5u!PRoS{s3Om$@VG-WG%yD237z$MkRSW`PE^lY@2~wLuCBfwmP0hcVgFfn-yUn@51j;PWd4SoDTEfmQVW zu}_4<a&PNV^49zu>s?Xg{{)-5r)NTj& zEt^3Nqa76PYxNkT$zu+8qspVYi!Xjri>^zL<25u-ZKpI|k59)%;dbi&(y^}M%0;(G zSI({ITZAkOi=i#YL2lw3hQ66m)~^p;N$mJMKX$A7KxW}yY%b^?#CeV*FFI&Wao z_acx#B;UAls1y4cJYrB5*%0(~T?ss-h-fN)l7J4sYTnG-cp!+nXfb*D{?cF>BtwH) zvtEIkeSAF1OukZZ`FRPrYWtS=1+r+paWuxXZ;~nFg1NTb?Xj@4rJfyj5hsKVaiqICy2Fe=E z#H@szQ$V~6@0C~(auHD->YW%WQOP%9t(d^Fp_DoUeow;Bhr_%LJ1CFoZ6wM&k!-H$ z#wRng-4gt3aXwUC0RcW~mVCy9uSSHZI@oz;%N1JZ_Y4gI1;wl$Yq2xhTE31mxT}Z$ zon}4et8uzZR@-~rH11#{t*bvIvDtH4*j6MT?T>IWVQmElM2HW*pj$8h#CHhS)78u| z>!o-TEyd>04vat7ih09~B3eE}xfDL~Qu?7Y-_*nJN3*iAK$JqAq6c)9x9Di{s=Na! zVK!Y)+lv{$7DS*n>Y0?YrV(!MU+tcodi7ANwyruDg{I0<_si_3GKq!8JL|AB zs)*d;J;q=?#%>?yV*3o|2{`A8drsrt828MAR*@65kk>8mS3QG8@$!ao8S4~EyXc9- zS)wPV5NQSTB~qLYTg7nBM_keX%w@CREcL9B+}yg>BcR=iYdjV8`Q>_8Agp3H?|5xm6Pv`+ z`4xKRD<0L{k@(@AO?!`9u8+A}9=4AB(~S8W`-i|>&w`X45OBCY2C06hz0qds5JBj( z+LMl;st`swDk>rf=%p{o`W8X4SETpfA6p;alQ6()&2RiTPP`xi9EH*x3!l=?Rc^me z>j#r4MCQLsqfZP?3T9w8q}i6(L422s6({vRXDV>OBXe2gHpOQe?l{7iArCZ@Z*%@+ z4gH|<q3EhS`jSOHwyyc|z6V!I4q_C64Qz$74=^69w40qj- zdTH$AB13con%$)aNy|`0Jo#rH)HqZJfw@=qW4&5bUf@_^2YIx0`TQf1(kiPY@K0=u zjqUl5RNsf^uK7w-OEfW6&%v)9xgVVei**;ESvScr*zA*`Y>tG`7x9>vqWH;Cr4+)x zY@;p5o5`x>7Lyr@{^W6R1B2sip(kOK*sade*F5WjhE{I=Kw%5Y-D>=30SPm-Y^4<1 zn6i)*iYTaE4$n}&vE)@y#=HNOFFWMuOn$vSlo&f~t_8RW2hc zr!%+AZ(uqGiqd96#->0=m1mRUtD6&$gq2K2E~IZn$7Y(-E<@VJ_5iUbh>UbKBIfTz z$5xlHk0U<*&_~61>xnJR=}mTQ%*^Hmb+ny*aa6b&#s(^wWHa7`ghG173FeTC*84sl zV#D$30(o@xijBu=t<`fiWm_ybqH}v8{PSA#(mdj6MS_V_y+CUz@ve^F@upC6t&_^4b}~7?=uK z+ND+0oAuK2hwxZ@1?10snzG^~+UCUXK>@pMTNxa~)^N2|G?B`9LSu5xX`#hQ?;6>s zj?l@~oa@Jn7!3RD_9wKKLxctu0u>j_V?;x4{IF^?RMcXFC4wkb7IHG0s5%%OMPW9L zCPOwe*z1&-pP&xyLebVpKE25Wmf8ET-Uy8${(y(uCK}W3iNbJVXN0C)g)aZ<+X!FX zQ=Xn`hD>0B$#xAO{UoP0>icaq-bXoSGv2-Mz~Gb=IUP3nUXV0Fo~DrA{DMMB0$Wuj znbNp`ej80TDNgtYE4RYaK&hvK6s6Okc!rVk*#MU30Jb6teORYFN%yh6a6;=P;3hR{ z#dT)xftfnlK+)a${p2O*NM1WqGAxhzV96BR+_jB#}K>6H9{{Uj7Y+huuc1gbH~ zmvLNV3pr7iiK-Rp^Bsns&esM>fKEIia5x?%8BA&ZUaPC#xw;S;`dGZwM>B)~7uQ^)Ul6V9xKew4dl)@19=h$Mv3W^L7(Tv6 z?hzgpKMD@YMH!WnY%@iiQYyiTK`>n(2pHE9{vJE%v9Da^Ej8P@3y$BY97K6d?&h)K zcuP~sVWtwTSpaUhDH8fpU(mvGR*gbr?2G}YHqEzn4d~Hu&iQ;{YypjPuPCwDmlny~ z_-rds*KmspKkUYYQ?@Wj%k{@rsCQk8dQ&R9&ZTp&^BkE8{ElsU65BET z+7>r|pHoQZ&M0||PPef9?(#^V1>*SLGXxWcrFu@J-wA3K;dm*O}gz;$w0bWjT}LhMHG^`YXQmysNYbHq!O zji##msYb-XEsxKJYQfrXxWL?+qbVM;HC0zc=nq5@xb2~XeArZYC!E*x-ZVt5a3wkeT=NMxK zezooX$&K|t4ix_nyglr6d!=K~B z%*Pyy9=_v)5gu@hf};L5FShIFI6!xb~5N$I28nfhp(l(z2b`6YVx zMOG=(ZY1;Q#kWx9mEUJRlj&h>37)VKpm>Mc6s@FUmnbxUgk&GvBPyH4TLu;1*(y=p zp(bOcdAB^l+=08*bdRak9NehXD8kdRhkD}2%(_$WM$1{{%oOqtpP2g_Dr_HjF&v zN+Xs>Ijk`)XcVHB-xPTyLC&ZzO*@!EYRy}L>@!s(f0g93krm{j9WEI>U1^_S4-mVM z0)?zzAP`h4H^^_!MO}_}@PSEAVYAbbpQ0?106UIpIyT(!!+Co^dRq|V@#B4g8?fLA z81S~X1>d%01dVD*f(KgIiif7ykvPA5TTsafZ)q0MGJK*v>AaeR{j(*laFe92SSv5eMidhDo8sV}Fr3HmJdyOCi_XcjTvqETl~sr@Pn{Zk{+e*@#+ zXCMD9+2y#|2df`E_k{f1%0DceTIUCkzD6A6QDp%awP&_ua+eMA@2OR%3&b$@II8uOqM`N(K4h0d6-lKk*F(&a(ak~fM?P+p^47*bG6}_v zFm8#DM{h1y;I_fHD$Z)-mCsGfOtVchY-0wtJoc?@=_%8-WkZu=ezpFrf4zeKbNyLA zY?1!%;j3I})NYv$dF`2!X*Rr_SENQus{nXL6v7nid?sx0mQWXv1%wg83m0NIL=sz! z49kFM!)=0VP#F>M9>51`-~8Z4*b{&Vn(dx13CJgF2RqoCH-az8S3ObmoTd%9L+y%O z*>+`V`dfkv7eStz7Rj-Tl7cNWHPmYfBXoKvtdcc>w>F~~1aUTA@|Q*@@I13q#G)`C zVCfaseQyR_hNIGbj3!%8j-eWXD7x38pp;r*biQuDb)s>40cLYwe3B?x8{pA;Eru3G>nPLV9RZ%PP(B%xx>+KueE1Dj+Hyc~7*W%ad`wLp-zPvf z#(`Z?*?U}Qu22oU1n#_{M;=#uhcwY*zLF(x!)I0&42b%^BTr3pig^1d6)i_Ln&O(EZD^#*!;hl9Z@ zs3Fg>CWhvsSQ{r0uYDnsnnoQel~+X4`|+Gnx`>~I)zw~bHp-NGn` zyQao?8}5VdLyY5&R~lxpt#ZzHk+M`0Q=-5#t|!EQ8*V8{IL?z-h*t+~&G`{mLm^ks znSzZ=^(O8BG$rR@VP}@FHz|B(r2aG`QNPQk2KrvdpfK8`LM=8fyZa&&WmeDjHFBz# z!n2sC4>JHWj-TjBA`?t9x+va6#kof@ygh7#Ww+&Cx>Im=VPF#4D(LeO6F%^{>1{jW z%0Vyj`r}TDy7z~jcKlct9%y}b*;fnVC5&f6hwmNv_+q5EH&x3uWVMAIT-~4>6C|-e z*-|v51JlWw!Km=Qwtcao!^wE%pkTn>z(!$BOFL&CQ#uwGG4F(3*0_APtVobth!25q z(0>{WDDIfB6#*`6p%@`EIBLs=wzCRo9)f(OHYmn_6s}#KQ)XY=n@n|E!){@AB9R#mDsNldrEm zya*sWs4QfKrZ0YhRuFK{cxc|2X6Y@1=3wO|*Do7g$*PC@*JCQ%7F)VIMx|vUH*p3% zPRTb`x$>l8X<%TbQ{bDLWcXQl+#;wGx72{eYF|LW<;c7A51RqFbE6&=mh5c~-JPN& zart`cii5s~0VMH;(3jT!M9)F}90t$P7j*If-%DC_V1lT4W0e`4Vh8>$*c+Q3Y0tS? z#pH8?V8*KDm7(q&y=+*!OG{%){u0dByrKGy<=(LX4!Oojq9_W0pDX~daSEXCej^?o zl8oEIw&SwJAMRvPwl8g96y83xltH&7<4}?>#4(lIKSwS@FHNeHIK)JnWk3UCRIh+i zQ;D52QHo>Ehux*?sVHCVovcfZw`6x{l<#sK@G>z=8if_*6!{Q#__cw*^8~~&Xv)ID z#>L3Xxz3H*6)zi;w)lY*WHl;)+-c~=OBVv3&rOYfHy_f4nn)}wJCqAENvMQl(4I_q zYQrrb+@_K~`Cbw1VzfW&9#5RwtXL&SL7Q^zqIow?Q^xmXjX|FsB?1V(O$S~SFZ|T6WK1o(`?_>E`kf zwP!|W6}|`4t=l1pUW=umhxy1-(LUH&|MlB)Y4Nz1#u*;pRLN5MJ@=KRT{;Eh5r57A zLv59e(}ZJm`Po?fg^=%#gQu$OxKYJ2G7FPm>e+oi}&VvF^vn+*&?bZp=&#nBMDy@v0Zz5=d8PTU4{L zs(Y>Bh%FmVCBQZ~4JP!!+|q+xQ>c4ueY*|$iIEw%UVg3D_suBa)k^KGk8NhiISjc5 zrfT+dnJ64(PTRIF$AjIOS@6WQV7NANfxAeJdHbu4#`;$p@E<8l>6z_OF_cG&iZe!X45`I3(~)d7M_(K7O_*< zC1?5;#K27v!Lk}nznZACP7Mr#Zk=xv@giVKki}fT=yh^FV?YhG+7z4MlzpBm1DnJ$y5@9UAqhE;On49r`jaLbi{7Q;DphQ& z?Orab;Rg1w-4zo7X`*Q?msIGElDvhDa?MZ*87g*8Lqzh+od*Kw!fHMi6YW{lcJ zruI{sMf9QH#ujJ?ih~Wr`6r>E_FuekY`@Rq`j^N~&-Os4??`A!Tw3$eQ6H;sT`)hzpZfV~lp;Y!I`&?Rt z!fggZug#RbZC#toXS5^vWj>Ce$8DR7E?C3Y3m*bgBuDnOP_ z=Il|_BeYo54(`SWqe|pdV?@0vPAJfwQy78I* zg+%<{ZdCk@kN!_~!Or}58WsO^A^1>7=H6vpMx{-bdK2(^#wzdEHOE@A0r-JvrU4Yqy2J zy*57jDboa|xEgpp1?tsxYHM|k@z6Xa(mfWsy@Cqoy!Xo9@VI@i8bLuNSE?@&Vzn~q z=`%WZJ!oIhkf_^$C!UPUZfbWxQ$B8rXfkr!)vDx{Fjw_R@mETmO}Rb-l-AN*x*p|w zdDeYYO>C6^T+=FQaBF3!;#r&du5=i#_Bt8{?4~7c-9Wo0y~3XZduep3a0nrbk~H$l zp2Lvrx1iEFKiIt~%IRI$NTylMS%#>kK-EH#&FB_Eaod=I2_|>$2HpOx&0&&lk>3pB z8C4C7ym(3bN&EdBR&p24Ba62@*;J}bDh{)$NSV5C;0@GROoW)fC)=l;^=+AJZe?uK z7@1UG*?NC7u|=0=@>3SVMeoj8xqBVszFwjlnJoTMHqlI5h=0!z?|6}h(g0{gO{~*~ zy-B(d%M-&QagskAc08=4#}GskO0Sfd;t7LitPc`2^a;+vr`F}KmIk&zX=)XLO#J~x z{XtG?G&jg?1f69L7`A+PMxzjv=ZvJpCzTMWqez(TMaa#0sROADx(6k`Fk~E!N6P}W z7!zinOqh{AK0cVVPla2V!t`5&N0>fk-j9E4uzVvcm7tG<#Y1Wlos%=v6B#NJm8+J{ zUMNw8fZ6fa8*7w>_?}l2cdp<4ondgW?IVg@I1CnHdOw;UQFB_xObXU6R`p z3hYD8GZ$=}6iUYiE=&Pw{h+b$QON1#G#R2W7X8By%z0sQkes7S`hxz#-T?KxeAUxK zJd_K~>$VL(?L&(Fid&9O0ZPgJ(srquxtw%_`=yMr@K8top|vj~ek;2PAk zNEPH;qm%j3N)hR+lZ2gpk(rBiKk^F2y$@jUi=fFy_Zz+ZpLy#~3HHA?nUnmjVKwml z5#_gr)ksto;@=xqpQjc->TxMFQ-88Nu(#K=rlY*iUD8^eBm)x@ulClG-Y09cc3l9= zD!aCt6g4>)9s4((}k-98)pQ=y!@3A%i^%*DU5|LHPEJuLY1NGQa! z4h`8d!)eNF4dTOPu7b^WIB)muem`!gt9 zl8%2fne+NEtvfV8{>X4`s!Qdhme!Ok|U-agh zD1Gw?QL~rc@RTEFuQgEHUR64^l3bW=N>wU^zmvLja{a-E_v{A@GQucyI`e)dEB38x zfi;6auxD9@e&Q5K*@Kjvds3gBqF#kHz|uW`O-0oI zD|rGHm#*9B6MpiVmr}+3o2F0)a0Hh&;y$wZ|}|^d3+E@DQW?ER8Zj6@nQ5$qb5~z| zQU>-n5tVf7K;^2kRNcg2+AX22%a>DO@Zg^OJ7Nr`x*9*AST^@}GN+gBV_v6%Mo(gm zX^hC3xe*U0717IV{WoHj$5P6scXW&lutENiu7yLygPBzv{w2O`hF}Aa2bMun7F;-6 zy4r|K%5+i!+p1aXmorjbEkz>qjLi8~e6u`bmdr01%~_Mcn7UuRyjf4pswk41^7c7- zrl7j9Hnhp034dlC3<9LcQ9}1%H=F^IgH1o<7YrZFe2IIz>?VC*qYsVM6-Q+_g6xql zWYYr+MM^o(HHJ-@E1Il|8M2@;vR$mwtl(TxF#Th-Y)3ii-|eNqz{W-78pY}q_$mev z56j;WKpWS`+kqy#BReQOKBz#Wk|hK#K!zX=h8vij?QomK;D2BqbLGuaWzFQ914Khv14}<6 zRCIQVE}7`?L!aH=e>YT6YRODTR@kRfY`b-oX3y;U;+WK(KG3O7833cegxXiU39g@1fVCSK>eBq1DmQeR9donrfffRPk4NS3!ukvr7 z-v9V%)A>(gubt!n;=l>`)B5-i2Tm3M^FQ8z0siFa|A%hCKHNdSnIah(nE#Cv=f~pL zR+}Am--}DDfRQBP2RIw~Ja+``eeWxYugVf>W)4P^t6%TiFXFDUVMfkl92nUIClAnSKE$@3@GfT;mP z;WeXY+^)MB{VBm%1EISnT%eG2*3RqK$U~+V$exYp>)jxrrfj{zAdUe<6@}U-K`B)D z<_tF5ChN-ipRm|*!s3;9<_U|~HfpY|XD}Xqrh>apBFki8ImEmV$*6VWR&547hHg`G<`xg>GK_c8*m<{!w! z^G}Hw2Pe9PN2R6DqP(*_pp{*-Pu~q%+x#O2xrOUVlNiY~YEbIbHGd=wA$t3{)+@Ss zMEOv)m4n(`o6L%JgZv8SWUA9Bm7=W_$2Y^=cy^OwGfWO_47l~$kov;-l|*+OW0#|ut20IlECniq?v45A+#lYF-X9pH-+P-*5p&Ga;EJ2P1&LK|i7y8{cM`YBWXahUK}Ciu57&JjCqS&)MHWnJg$a3`S;hxK?u!u(1>w24tJ^D$cO`rqc(fMN6Q{d% z`Zb6ach8XiN$rQ287SQ~D`p^k$V`cJ0N#Yh+Q5Qzg&GtZ`&#X;a+{B;3DgJ#9-Y;) z{=M-L{Kr;>)UL-6a|5WYN{Xc9@c0!$_J^vtii+Pr=4wa%Tf=w6IQ8}_+V9aPjYYM8 zrdvC&n>ms(YiWB~G1S}gs}x#*n{25;e}8o=v?J58>s-qo-Hpw+ko3b0ihU&XB3$$~ zhEAX-)kDmh9Y$47jUbQ4-XX3!@SMM;TR|Fod)@rtX!|P)UmLAUFNW~97$|n; z|Lz@=`+sqUF#T5wDKqnjhw9JQzubbY{?f9EUu#5q^Xc*@h^Oy=)}ok8jqsM;D0E3% zwn3)Y1D3dmsv*^-9JxGLy4R3TaJl>z-I!STedf!gCdfw$DQIagncj-ExnkcsH@O2Hnr2brW)1;fO(L8 zphsyWXcE!}4ftV&bhMyY;wB0H8v3T8++!Rc6JHi?w8#rMm^pD#D z!l4=AK+^i09vz_XJKLv;6xcwS>JG!0`FxvwJcGfOr-TF zzJj*#L5ZAW;M_k)SYr(b2CRh*|5QAsI6Kj>qCwQLv52$9ReZS9{w2Sg%qpz z5U>V?`)OgHXp>!52$HZ6mdFe1 z1X&&ui^7;TSRwb0lDl3V?p9tmWp;lVk>b?lV48jrY4vBb~&W!8SlI3mYcS`^#HmaQrA<7@N~L17!d?h zZ!bq~#8R|UVTpU_S9v}SRJ_mS`q9eWnzeZzftWBcR$krCsMw;oS%@cs&m{;il+%L{ zvk4@nZgLr!<2R(CBjUj|D@}5xS&BSSuU{mZ;WH+yIg zR~P-fEnGgixH;s^A<->lz5{y7Uoe%45X66q^!~p1>RLSKp-t(ywxu*TF!j7N;G{SP zrX&f#$)xgrK-wDsmNw5>-ucRSvv%TeFg|rurV=fX87)N_mZ~<5M@YdhA$<-~LG10&B2R@e%Q*r%9=u!f&Er(v1%Gn}RTUdCe zslNKkkh8Rmfa)z5FZ?AcIe&Q|p;ab?wVmBkN@E=lWasVO!! zA<6OqYa^Tc&owUhX%%zS)A{4h3&1sJ7_ZP1W43|l79FNPk8HH7rJ#>k_*?5Yoqt5& zxK8q#AuJ2I_TbmhFY7HE-KpKN-;q6YJwtf*b{f7L>($x)kv#bt@tW>E*7*@yX&HJu zRzJe20wkv3RuS*xvb3-vZ zaBpHO6(Qo*akf|?Cgv8Vw)f;(Fh6{hN5>G>u)p)gjoG&jaorui>DB@+|BlDWFo}J{KO1t zW@`!d3}^IQU9|PFvUWYhlkwmZu^S^r1lq}VjoO;Ywq$S6WWxOpLA%SE&4-BGzMZ_%j0AHM zklcGE?7a{&O^Q`zoL4yU#?VgDF9%5EN5noDl6C?JJC~Js@E!1@0nrHd_~#CEY-*(y#5cDA_pyjz!tMCqM$Nh4|@vCoG??%ouQqQY4nB}&xqf)QE+w^*Oz(u!A zuYK7#=h@(zip+lqO^*0PXpov?mLNl^p6TXUch_LIlRMX#At5Ly!GWyE3E^ticV9rG z-qWGTxGT}(wO6krv~{6DnMg&IG|T>`*AMM|DOWP-c@a;+l*GQ&H@<^9c2jCkiqm6k zo3QpV&zn|;-;{v-XTnZF;yLP>t*4_=p0zO(YzwhS-u`&Bf8-fTSUv44RD{FyPoB zJvoDJGGq92BBwp=QWJS3q=N6|GI$j?pUD*Jf2#BwLCl z06YS1ls~yft6p%j!P(oJ%YEj=GvV%(TqH?gb!AXFY*Wy)JdZ9>TnleqWP_wX7G<+R zEMa7ljB?R?p2yWA3+NE;mf}uu{uxv;K#VFdE=`#G9tXMkDn-<3hm*k`rd5G~FxR7EZP# zb~;S>+A^CC(c<^RZDpefodD;zUlBrPd_Q(CrXeRg#Kdul<%s-jBBXdwR`ds2=f>QK zV3e?JkBGF4Zv`jztr4wL@R?&PXkrh?g%``We*K)f zt#+B(IH>!wsGX|R+1%g}6Y8p#`>+j89NL5dNx)lKi+H1z2+pVT{9KZ~UF7ed1r6=< zneyQ;zudn^4}jeBsncw?`FAUWJ=oOfiqqcm^RONeKqw5LP+=r_U330ja2qqMRu15{0b1N5Tx-2^Q!W!uZ0TM;cs z584z<1Ewz7?D{D(Mt3_b1pn?5BL!~dTsVc}Mb4#S{Q_qyO&jOw^~(n?A&v?Wp(YG4R4{X`9wbH44Pasu7Z$dwJI0WgQ4-ZpB|D^bBd1SCjoVja54n?iWKg zg?2Gn5!xLa*tFA2WqXwyuVjjGl2-|DE>)02G0I>hOo%-u@GeO>yRDwy|aqC`WSt^ zqZ(GkN!0VKzRBcUXsh7L71f^aJj^L+FNw6(R8oTut3z(6wV54S8orL>MTwP6QdZ1$ zY>p9ArnCocmSKZT&-ljLDtr^#My{OMB&Ig(0hT^`Lch4-AHH*#g0Bcqq{{j&d4$U# zqaw#x3$QZim9PQ^$tio75N_#$_&2{wu)ZKNacW6z10JX$V$a?%4vA_ZKgLeNJd73L09B*KP+xSFC zVvBA{sIjzOby64|Fr1QVh#6fjGmhGasWc05e=dp+yiz;-Q-Z3!10sDhGFNWprwgM~ z)ulZ#RRu#3d02ZVhE|dw(F%LgnfO^>Qck|yBP%JB?q)>Am8UYcSwQyTid-M@=v1G| z4ToPkmOHYT2G$LdUWdmNiufDh<~YFd1tJfnYU_9B;D0!J{Y~G>^kLQiH&0dz>QZ(e zG_%gR`KYjz$arvw~lXO~y#YOn5L2WMWC_gh2` zI=hSNS)&SES4?paHNAsQdBxXf!(>LX*b1A}XR>(F@Ik$!EHl1wvuI{$Iz(a5c#Ci) za{12G4IeUd;4W`bFsJz3B2~wLzIS%zh}=f^I-k3()om^H;1i%Zk1j|6ONU0)&svde zC+`<9V@~bjnH2f3d?IzMGhg=%10z)CivAg^XQd{38ts?n9B3UC-#K6^|5WFyGl#iz zaZaU?SlX#?s0#iKEXR;4BTD7j&4ll3Yx{eoC}l&Ad0{4w;0LAw7yH- z3SImfn}FRQS1c_i(Y0}Vc5&MB@=ONB6UV%bv{AxWr}k|KDUe~D$8g<3lIVR>{(3&c zHf96>>uN)Qk#t*&b;DRvCIn@uMi)!6r14!M<>!ZV+a;+6W25?I98AvJ@gqK(;~}xC zHkbPxnhe#+Pip zj-sn`(oi<{2;JZQD!6)EAwK}~Lx>G(Ns(Yc^7E^ow>-1;rP#Q!F<+b)h|?<{34u5L zBj8XGZsh&|@;16~LrR1`##%1{PKC#Oi@zDzQAXkxh}7IO6`@9V#rhJtE$Y`d3y_Ai zF?O_I%a-+(!-bKYL4D#`2gkGyPz}+8%9AW2nfUCNV@Fap>10v`@u}?VZ(LfvJs9>P z4AP{0X`T$b3NDC z6>zlfaGo({5D>Vi3Jc7D_75U#HO2EUzIq)@l3|0|3k-V_GcBXj=A=hPqOQc z_+P(mDXm4L%8G3G@<+KYXl4K&}acz@!UW}p|WAe9Sf~jX6g3o-A918@y-JM@gySY zfh(hasrT7fo?X;1!We45I#)}SI>?$rs1y@x#Pxh&j|-5=_+6P~{QGs`e?$TFkM}VD z3lR{@UvJX?AN3#8hbZjtAxDgWkNofdm>mhg@+V>Kzp4NJ4P?=Gg%9AF0BpyR+CIQ@ z*~0YbSraj5TVO+rN>Q~*MU$`5|Lc~tY8z#)`X?rd!vhoDE09lPSZn|-6kB+G(6r!b z^O=O?-xqA{0W_@>@6tk?Q$eTo}u4Jy%ztfghggJoE2qPK=wMK=@syl8HE z1B~~YG1M&UBd`(RE&wZ z-#^zpCk#K2g;~>$WpWQCL)F?crL@cLJJ1Wja^hSHPBVU^n+{qC#xyI^-l0PDY-+4>RI_rW(CI_D0G-pCmh zTdR-H6<2Z_F(A-vgb?pG7KafC#J##>{!>T6ciPpnywc!pTk!|@Tf_BF@HgG{FQQTDP&uf)lj9a z%NYbkJ+R{pOSb%+3w?*@FN#1KvcHD)6}(dYRYpNJqOr5<5!Ts663#h=Q`}$+rg=-R zngKBRYgnH|+L7_!$tZ$f(4MJxoibA*i{;8WK9EI;AIPF&zS=j;7Gt`+LVX#e*OxPn zjl1vyYx}Qo-$9wm?xM$w+W%u*7EamfM%Vb8EymIVqDT#~pX^gQOzx&XC8C<1qik<4Y$xw*|Kwoy6BU(2haK|!Abw*}3dNH4TyQ?%N@9EC zbwXi!8EX6M+}?RHP2{G0#><=#8`DTiw%|xTa{ak|V1MDwuTKU)Jes#Cu7n?H8Zf2j zU=O#o3AR1+W4p@ofM(mDs0ZsM^AiC?7hLriGRfytx#tUxlc)?bfn^FAC}La%<%7-| zG1D01emi3?c1h7|4MpRKgL-L6vuS8Tq$0<;Y?@gw2X^}0l;LWyX9c!L1FK&52XL5m zq*Q&sP^R?EvsndUhX>k#iwLePkR3l@DM;8PQIe8k_7{J~GK`VM9U|fey*k&Yd=eCB z)^2O&SOsDGFX^&Zleh^$K)9nsra*X*Xej=Xh_|bWTT#1;!IXzqRsPDDS0V2=8Ek4p zal{i~fkfh-_i8FXNj?igjMV!i1bsV^3)`zM-;$dP-MJ{Dl~bLs@@gn`BP&%h-?1gJ z!R?RXD5MKQKsqqc%&#j4OAZW-Sfp#U4V(v|61dxd1ZhAu^(Mhz4(Xu(z|kbA|GEY) z!(!3~U@V}a7DB-VQSuA*${5Vglcny<9gaD+5g{5PE_CckuC~i76T-W7qBVOb;Xy$L zwigi$r<%?JnNh|PnxSACngrG|4s@%B)_)jv_1&gy#1_$JGdgj zi#r)u343P;Udhe@$^7F+6b7M=2k`{07RO*Bg=A~Y6{t*Y*;bpiuhL#+$gant1rV5T z6u6 z1LAq~KbYS(4oN-P`H%U;Vz>5JO6GBGdkM`xlS8+2nqOQSOmWidV8502Rgxn?*dDlX zH}=s|*Lo$;=BkUg4=^9Q&hK2U)Sc8zX9?FBb5#)jvip8=3Nhqgs$k6#gLh=R@)&|K z5^Mv>qxXZ;_jz_kJ(){3^VGzH)DzcAyW*;%xF@o{pvy zZ)cY4jud8jjfQ)D!Zv%hXM7cH!*&u?2i&^^)V2E4cxQFK)TLm~;`Lt^ypAj`D z8>bivc7%|lOgYW@`M?$$3eh0^9&V*DCWR1~xB~4uTigIvT=*Pp)i`eD)sEDjK30(p zXibDRRk&3xZtWrat}D6U0+VYbqz_Xyl<^Vha}aVQY(WUoBDEoVZyJ$X7%D=!u0fl_ z0_>Vn{uffb^aVD^>hFxlEQEOHd*X?L+Y-fZ^eWJakP#%x&UDPe&`|=4-@FT^rMl=-FkHs*1-MyD|JkKUlrx8k`MGvmjx5!1OqWzv6gG zxZ5vjvM3hI=nD?p z;=alVcmi%QGlsZF@73qAI$~PpWZR(FtT#D%bgHlK?Z7#pZ4>NDFBtN`dPl#j`u{+B z_|H#y21Z6~ER4pC>;`P6tN?Z+6GKL3CPP+M1_ovh22&0Wga0Y?7VsB`_}>e`nLonZ z{{ean_?vD0Kanm6_>1xNpJqU2hJRxQEKv9_2S^I;DuY-Sh{BSx?U6C;Am&8VXPT)4(6#&_jp1RF!#oe7K zPTh&8iF^PIM0k8sy9KluKx%q>svIL%X})fq(!DZ#b;@e*j699%c$+}7qy5ChSn)+T ziC*P^%u@@yY8t7r*q_dO*e^W%x+bLNCQ;V@+dUt3;mqqD@fi5gG*+f;M4Bwoj&1Qu zxD}UIAoCTf?G8*zRI1kRzM>yYQHYfU* z7?>`=A2Bc&^o{Qy0LzxIKR>2H?*|e1zsA5!NCiUC4~FN0nHV>B&FW3&p=h8Y{1IMN zp)0&5c!%|u@Tvu-o%oONstxL!L0$cOZ~SG}^^CuSS2^QR&eyD;{Ma1)2(Q}pt}`D0ilvt>L^;>CowT28?~*6Xw+a)^HpOM$aQ5doI8T#W-yWq~?}Ddv&5b?7=Dus5 z``-N~v@b~!MgElfhn6<>Zg`c%VMJR|wub|pk%{EM{x$e`>5pL%~0 z@%ht>>NJ?{{gsd?sRUhXJ1XJd1$WC!Y%m#+_q69u>9_mXaCJ7&-NjI`*%me z1{DdX4-8D_H8smmaDtcyq8!dYJR&I}p>l=VY5K5GDD_0y zo50X6&asikU4k<`C&-Yg04R$Z-+V;3NSFq@Ye_Ik2S|M%pe@{Caok)BF!rxoU7H}% z-&cJOsS)fLcSvoQdPp(pGt=73Ru8?SDf4T;g3S8HGexDEikqTZ3D8atK}z+QuUbV` zzEBm+)3AR(}BFVgM)Tx@(@}^S9`Qmn;w`tCK+Iv+pAW;8!A~qz3AhihOwqWi6UQwq~orc zgC`GbgvVEOgd)5B*ZpwA57czt_;w0T$J3c zD_&S$!ORi1nTs=t@dVU7|4`JiYFK(1qs8k<)Tr;zP$V@J7wru?56=fZXQRt3TnWG; zUx7|AT7SoG1+e}-H~0UC&S=Wc&c=d`siS+#vDc*9L9#mOe_ZMO#kD~ z2>4@R^AA#0Ru<-e>WqN@DGYcZxTG(05nWTyB=PW=!FIGY0(mYVb5ekknCcrL4}>eOQuJp_3?-?k`mwQb zvsxf!PtYx`77Zg_MA((YCZwAtS?|-Vod!+KWks)L$Ac!zmX$>4SQVT~q0+UWcvZJM zRISy%c6dHmPi+{MaNLjlq;W?CG-PB?VzGxVR7HEpi{=wPmBl}+t1zD6G#0qu zD;@X4d)BGN5@6A&;V*CO$?(AKkPExwWPdQFcVMG>s^xon;^b?A%FTCrfa8nY+5E29 z|1Mjc5y0_>5Afe=vu(B?ZdVaEZ}1^!$QN-#3f~Vx1IC9z%a*S@saTkw7N(Zz;hZ{L z0NT0wi|`fljf(4;E~gcUF@aAK&!_3Z&(ULE*T@F_5r5gboHaR*TG$gu?EXDe-r=`U z`J$)vkGQp*zr?L^M*S5kFVX%>xjenvHt)1*&&mbTq!pt*E(49uHs%L}r@+h~p3B7w z{<61)a1<#~+NuxkhswYr_XkD7B@+;wvgP1|@tBP=gn0cYR9?Kz>{sST0%S?icBVgO zYOKc>ADQbilq0$RI1S|JaT13KZIlno3rom-mBst<@FNN1ISOd1{kv9ez~--=x^{O0 zTG{CIb~3eZ14GYkE3u!wyMk1I%ajMO|2@>;|7+DTH?seqd#nL}auxoej<9^x!oP<; z{a?3Qa{L)}@K2S8k&%P>U(bUTA6`pb_CHzj&7Rf7aZkH0ez|{mEwMkmmLN+tdyS22 z0IH|^=i!y_w;sQ`wP4W~$Hj%`P{?Z!=scU`*g<=^CWH-d{&A|JaJz)3SaN`|=K4wf{gRAH^pUmt<*thUwX0 zW3wcaB3(0d$Zf8;pqnl?fuJ0&p*Zlx2V+w^>!2=@{<~htec9HMS#7HxOa2$~6`%cF6Jsqvt*<oo}$vDPa#YjvAIJ;fjf->vQt9?$)b` z^|OH#PlQ(esG+>27ALaf=P5edR8P z#o@M}hxWOjT`^a@rJ@T|ZY+J9{{&0|kwjR^Eu@B$bAwqpkpTZ31p;T70W?S4bBU=s zIgipB`T>9M6hWjyJeUNJ%9k4z3r?o8S8_>Z=F@(PI@OKow8@!`KTaTWQ_S&@y~AH5 zE~8fJD1mx3J45M`sdckF@gwi)P7CbKf}RICSU(4j^4q;vB^gu~JzYNG9@KTqDri;V zz;ZthFY3J4r}KgCnW=NFdEE!0$J3mnY-E3RB}fc!8gW~u>+h=>XUyG&df(fyP@6jyZ#r4zAKbMA% zQ=gsnq^Dody+DlaaDo4>L;nf3_;2=7jz0}U|GMz$#L0YM5fFp!c?W3bM8E*Ricmx< zKZ8ZSDzAe2^2pMn8DZ6K-`#%6RXzqeydH0-xRG`}%j7as8{X_I_t5T9FZx5kPZ@|r zzZfRy-)PzKeO5~*07C=y{zJe&&%qq=fkhyJPiD2Q_ME*A{lj0{l+CE__TevWIa2+4 z`vyVbOue6LBaj#7N+0kQk35hj?EZU{Q=9EG<@4IZI=8>{kw2fr1U3dAC2T-jw)s_i z&|r#c_T0Pa6*<e|Jt`V*fYJ2_Ltp|HV+jkK>#us!BwhC57j=n+uc|W1kMr=DN6d zP^^azD-r`2yOT zIL*`JK_Um)qz_p&9eZaUiGjoOxi7UofJ2G06Sfl0@DNP}kxMVK6 zx)R^Yr0i%l&9YeKsG4XwY}qu_NQuaDopXe{b7cIN<)jbOd4h=z%u7I;)CCT1W`4&GC@9d| zA(@8_IlxONL>pW64_qHgw!RJoGTKT<?%&c^wVnyA<*ucc* zW`%5miNJE&aCprE&S25Elf<_D!v6ao8d`kF4V09KgOQB8N`n-=iIOQG3n$uDQ0yYT zsOp{{_bC61v^Zqy07{|wk?9bP~EWfJ^rAF8pbs%?O>NxcVX2yUEp zdkL;$dbwR26^22zOb{?ciZxpoFD((HID_3jR_(dss!?SWk9slNS~hFS6IxK{^r1=n;$X?hdbe-msd95ZP?ux z3Un0IERT1e*9Hh+K$so)KZQ9&8jc27*F8K?!!KT}MFWdV?{3#+wm>!Oi`#$tn%omI zFa={>-X98mTl7@RHU!*5i5!NDLkrcrc${vNNEM)IGebD))zy-7Ic!C&fGXA#?pR&( z^$n$<*HhVjjvKSd$Gr)Xw=yth?78Tau8iGHX47`;tdi?3A$-+aJn3TF=+1eGm8fT| z-jY4&xjOX;3dVY{sJGsO?0{-QFg&@dEP9=NZvt*d0OU;(j{!Q0oV&*A5z45r&{M&W z0}+mS2RAx0l`imb7b=h^>RU(xwfs5jp(z-n4rgj(WH{r{U8IvU=9rXg4F%EIgtc& z(KoUZD&7rmde-Z6pMv9A-@d!KAK_6aQP%JZ0o|F)v{E`T#(i?7!F{7!5=|fDcX5Tq zG%0XgSEKNQw_VWzB-Nl+o_UssgruLulmMs9Ygn(uha`gpi|idPvc!<06Tb#e;qbH9)1q1QNy20>K`TJE=Wu{D3)n&ZMri<6V^W&zYtlLtxb&GlCU%p zlNUasQSyK*yC1qcEcN{pE{`#*;1k@!JWf@$C-^!+$?~Acz@>J!WZW3$&HSvEeLoZr z#DV5h-^Uq7o1$1d(LiZ*Ag0O)Xf2vc6`st1JA19ffsI2wz5y zGtm3xMrZ^3xibJn6{6IU^Y~t7VOWOBSC^p%P8kBi}fgJHSl=!*X zMS9Re2MFG|#Sv07}0&3vJl~Hn%zq?oJ$$Bm^A;bHzu*F1sKIf*8=*q!TF1txz3U# z8m(`Q68Kq}bGhlm9yD}(3u5v-N`uot%`A7E#d)J0~ zV~$>Jl|E0F(Uzz-)Ns;{apGJND%$|j3Du-~DG6yBHxe^rbzoYy%2r6ofW%n+$dx!`cl z0Mx)AEMYxLHkzE`2@2yl^OxZ38D0|M6Y|*1JMVt@a3RH@sa&D!ST9ghN01RwG@&qe zXLmmpfFCSC#|y2yGHwP`I?+Bbl%&#LMn?=t6uFXz_fs{D$|T7643vd2eJPzXXT)c* z5>Hd5a)jAS$f(|yEIM#rDAJ}Ds^^T6b0TO^zUvgu~n z5sG4aa|$;QillBP11$3I1LVwf^aO02?hg&!@@IG#*LLRn4dr((oe~K+rE4Bo3Us#! zk}8VK%GOLOiq_ElIv(y=%(JkHs3-+|``#N8O#H zUGPQkOf-*bcov^{Q88QjTyS?5tj!Ka>n75BfrW8RFZMz?wfcA5y2#JV1{efGy;F17 z*or#tS?7p7sP?U%=|qwaY^*8)ri$H5do#J~Y>zj_&XqrrV?FjxBa?SesXdS1gdDw* zDYKa{xaGfqg&lfSjHcJ8k6GARne6H5;Xl=V8~yMG%{8js|85vy`FlFr--ZD;mcIrh z{Oe($Lqp1G?PC}?`H+xLs55MmI!dMY+rV3-9iyAEFu|>5i06|ixNPWcfdh;Cf@z>9 z{_H`OpuG#S!`K=Hv`yK&vObtFHNSK#s}hotjgh-)L@5xNBvFTxj*vI4ED@1~hR&oM z4pf(pjkOIqKFRauLOdS}u`b=6MRejIanDQXBzxT0Truut5XCYxEKtSuw&S&D!TP{L zw)bPLEK@@(%V#D=^eou{+Jeq`O)(i&jOD)X6Yqf}IOJJpzOp_z`SxL&$A$_Z2YMr( z->?qWSFV3Q?`?bMbf5+~8b!2_L87jKpAlVA#og76P=sQ2mU9;`+5DtdXX(~fP z5+Z@u*j%!%lx?_2%V>Y$|7h={8U~7e9Abh{T_j5>MifDyRAFGk2gZY{grgTJFhC-i zW=4WB$g`54Cf8{jGC8CDPk)K1;q;edm=;7=uBAV*={7C2m%g$3uWGm2VCoA8_4q$F zGkt;Q3F6ts)JNpUQVWVNHU?=2b z9>jIdXNL~w_+QBcJdJQlGoz&TBV#*V#=*y!iaYEmJHILvV|pdbNeli0v2Tl1zV)$E zt-j_sw?f*50iTcM>X4hYPh;9;eT_(!zs_3D@m0*{g_v*J(FMyX-gyMh}V{(mc## zWw|uQdDaCni7tsW-Ni_SczC97k!&9mv7G@ z<=X#yH$lPi0D(jr|JhZR=LR;sVbnJ2`wJX;>%;o)qFb{gTh>~eXJ1p&A(N+9XwT22 zhXJ>fR+gSl30oO^Wn0Tg(7N8w%&@+0508xek`kg^e%p=Dqx4SnbYJ!O@i$q4iiCWx zs0TM^zgQg;E*I}tCzBR_r78ScP3C!1<<7!Bh4-_bIOHJ<$OCFJWAfeDC*vLMc;O{_ zZ&&zDOr)moolX&q0Yb3J!ANI;Hdf*r?45)SOIp7SoCZO9YIR#-y%0NE3v2_%NMMib zoJ|q}DQq#X04{WI6q(_P#Amwf@rT=f)o$O>efTQy1O_3Ywr~e|#)dj;be|Xr#^s_? zmw_gac@vY>z@k@aR}Dr$%JZh5~bx|@$#`n=s}dd#eu6zz>pE6=rY zYKIn5sGut>fY;kg&p}&`8m$yB)E9J-U`y!%%u96z?5nr>dkX>2u8jl<5!~xz6E_&F ztu4AXnwe7%uI#(4atN)P7SWf7{Q;p0*Ilrf!rkhly8HGChoML=52w6xAqReeJs%E~ zDNF{)qGG~b1{Bi5PZ67JMs(ufyK()Z(UX{pIUwrVau9}wDN=z!k$7JgVrIB4JxQBn zn=z_3zNv5kBS1v##@RnH8- zXte+o%a3P3UI|3t8@|o7yqcJAA!@!)KwX6C2L7NXeV#;qkSY&?)LvQg1Zk^adKTQJ zwLbC%nvGUfj@o``Sy{_ZyQVPrawU?b(i%0V48-(F!59r^uuiwOys(;WYOpKhN>6Kgz zo!#wC2amc8d|3US3&5o$h0u@PC+l3)ncbbX(iZF*7s8>@qVmGc!ZX z%oN9V%*=Mo%*^bVnb|ROj4|Enp6)X<=k&cZN19*yCF^rlNu`o@?b_ek?|#>_%;b&i z%!sKO7|k6_3=IA_WHK^i2IiTYaT)`2hmB0kIZQas*@4JbRwgDh7B((sv;TFc7Z>1v zRJK@wfW3d}^x^`xC;!K~{kZ^tS*POscfv=2-TwW8e~UN2k3E;Yf5!c-+kc`Gou*N0 z8WRBb=4-*RDu@&Ttu@lcLGSZ$`&9YOw7KCjqeAzn9Yb>L!_z z_V7ZRoIk*U-btZmMH+U8jA`eCws1;=2<1?^O0uod1zKQJaDj?+?-MFF8r}?))v0{V ziA|Z5xC@_cnf`*DN+)&yf_`o}Aqzg1zA{D2SdJ8q%7^dM_!&0hkU>Z?+gf(*Y`U&v z{FpW*hqlG)BK}+e=nb z!8(_^9C0qL-z)|@vbQKBbkUEZDg@2L7^OXU4=YmEQ6yTZ?RPNwK|?yf82!cc5? zltR~~YylOjmDLI4!h{%) zBFK_TB})luv5b=w$2!xFUd;_I$@g1MZYsG`Z^#_9ZM%BL!D)1QOiHU z(vMDBo3>MnBppC*GKf!(RUXU>N)5POg27u5jGyVz4m9O#0!g9{^MoSrSDZQ-&s`7< z;>BX-N)L3L8JISUrIY4$X1E_`jz!ocgdU`B^jHx}mp0485EV6Rs08O6f!U335M4+&3!qI^6IO97f z^6- zVx--+%+>?q&UYaE6?f$WX@d#18$B2^!q=T#6+5STh}P8TTURh=z4=hQ{y-9jCNR<${EaqO(d^7>VR7JQz(Mq) zVa!#t%G)Ov9|1KcdgR-5b4C?{uUCulW=x*-%lW7i7kI3Z`WdY zzYVt)j>1oE>_CG=>!jbad6Ry17a93MwyPhT&3FD!?e$w-ub2Vuc8xUs3(|IYvgRGo zP`sou9E04H%n1Z>-f~OTm*YOr;JYYKy`Rvcj>&GERVpnk;eQ1ZAqGRd&HCR;(D+`b z=r?5Ea31RLbs(j(zVtnQ#>{ZK;l1Jw*9b71yWGj%|n|*cRa8e*YACM zA~_9f5?$*;`X+AZ(bTollh;$utx_`?FV8K^0dAF7SbYQ(Mc*3^hWo{dyHg6XS;%wjzQgmOQt=*fXAvG32Y+a0z< z*xFe$@CY-WPbsmTmhk{2Uxhv*JOL^T$^B{2w&`lTmV>4J)OAYt5j`j2i@4`~gMH8^ zjwht2z!ynB(qdr9Eu*I>VFJ}Y%@fg6+KX^@oPpHL(~X+uFh2${Wy#ulp1;{#qMU|3 zrfGde51rW>q~JDaGZiF_lvpm~eiX1lz>lhWB$I9=zQI)NjTo3|n{GQ|b3^4RGC68c zdtYN$D^r@4yg1PTSFk*OXe1}kZdhOG<46Wa3|)F?w?sGWjq|h5XS3p05mk}^5BO<; zzeh3Jn-}5cww%_~s$55FjLcTx^(6ZQ?;^fZRyKm%TROuhm3Gd2<3!Y3&>=B?^4UVW z+M0^#1|yXBLj5WpgV4}R{kS)J;!;Z<+}&!ISFHt*^4ibsAyumaDde-5rJSE{3f5gl z-khBf6KUJ-)im>KpB2TMq81X*Pkh$YH5PgrBzZ%aks{fzjW@H|3Um6md9T{wEk3Yg z(AHg1fR*>*pyCpNmVjr26MJ@ldAUSg8BS#6I2FXi^9l38XK$W@y(eDO>JtT1AmgVq zp$TXP@v}Whxw6Y+yv{qi@&s`_ICQmk%2@9Jw%Z|%Yb}p8B1(fDol;qfB3@JxW_-s@h z9PR`7iWO95ic62?vho#%S*B(Osp^}+{X*?QI~Wi6uGgSB_3nAhe61H_)E+INkicgR z!(!n+t8$*9Bbt;_9s{I`S7xllvp~!>iw;%`HYxAiBsw=}qYBFoT!V2&VKP)565#CJ z;OvJ`507`bad&)1{2V=#qu*d;=a_`t{Z@uax_AXhk?LHVg*afU)<0Bdu<*9|KReAF zwVjP$2>`}4n7)8oiC}e-{31mhanG(#6@)I+wV28p|Jo}Ve1Q0BSm^{8ow-Ywf=V^9 zceYrGK(g^Er(xRXUaphYpesb{;D^i+_|;BfR_E<3Mul7Um^Pk@(fWYgl{W1$IorH{ z2IzVxu{baw)Sje&J^Ncb`-dBD+@^EXlU3}>az$9YjvIVZ3^ibOXjw_iZP+CeTQe`# zHZoF4C`v07k}vLwTIPr6@HEo8;T1d( z{}Co1>XSBMR!UKxdfleJn3!i6ga!9v5bj}fcpsh)jz%1grvxwJ90gyT*G0mvlAz)$ zglGkb!m}nl$S`ExGc@aGDGeABH^Xn~gJ8g=!R8rHYEddt78FD+Nlv^bPI41OSBJ^v zaP7Ou?}C>r9&C}odHS(Zo#w{HpbiYy#dlaiC zI=RyaFbia=NGlmP3~)xXIZ!{u4wY9)W>`9_vyWo9e%nA}=wB$%JR+1eW2aZ##>m)- zSCQT}MoJQa)0iqCP-*cS*k=zdSC5~|!>{U1+redEB*|cclpJ9!9=w#~5WO)(Nr_G+ ztmZ#ky>SF#G2h?W@ZL@h;W#~`Z~l?RhAX$F_f6^E%Lbs`RWJT6YytC5jiGM&OC;U< z%Tzl&ouiRidrbnS<}M4IB$2MEl-DQvMoag~LQFe`WbHGf(jPVRPMX$SbdC7Q+K4jr z1{=!oQ?1Tvb?oksiyA+50~JcrMq3>Wj2+s<#(O+}km;MtGJJTqxDtQYYW)~O*#2GQ z$VgMZHM4}yYO;4Ht4LOi;aC)Vc0^Z-RZa^gO^3bK+@6F<)i|F;RPgcMTl(xe&tXqF zz>!9>72i%bTBZu!d!Uo>#H;qR=hU;2bK^t*V%b>j=O4lFUf~Q?M0yBu;6w1=d?v8_ z^@08ulPD5wz5(pd*n7w(_{LEpQI6rv{Qgnbt{zwi@EgRK{#!T9M@f7LBc5a34ma9w zp?g?wp7qpAgQ*CVsWN|nWCw_Xe^mz2#JW5(h@cN^o zS}zA%Z{!-=Y*WwU)C1o znK<&)=|)q(|7-A!{y=FIys%rlSV;^m^r27lJ30-0&mEqC6iUCgihyAap%tAi9Ilmm~xadL*y@td>?4jJ!XosmMIvuti(nu z7}PLIN-LI*RO^FVJKMJa8$TE?gN<-U3O5-Vc zoP3|nu#QnA82jLdX#}5S6W341^5Nvebs${JyKM*^AUgqBe-aZJE345=YH8X%2aTe7_{K1hQLOqpbIf(0YY&Eed%qR$68eAhf z)ECiga$h$_uvPxhqX?vvhP_0Whl>;wR|4MEY#=8FVeLsyC1vG> zoFXOvrqI-k!h?cBG%@UX6{@I$`iyXc@T$=1^WF+3%f(ovUMd()9$dMVoYs%>+@2by z$1=mD*bWd%4VRcb91YyZkK!dk;2(&cTIyT{$btiFSC3KZ_DLt*HNsxFhFMd$6DJZw zL85mgsyPQvW8LsG$6&#=)dHK*G-G8&GLaG-Ds}B5v_BHIaG1x0fcP&3Me++bTAHx} zM+hZ|XPXI+1U_?_n7f;0e@Y4_PUgxZDWny{Cq{p4$F!n%Wl&q6phf$>Y-BKh7XLg?q8 z-EjCsaPM4V-}X4b4J)33zM()Q+3%}Z$o0%bx>`5}g2d#20g+6n$`d~Al%P)s46%JK z<8g#4v3_Naj#|h9d+eSYKjUva)Iq>ZxRr2rM>AKxv@xY;JP`2u<-cSI{R;y3D3`>(jUK?@qWmUE8Ye4w~!7YCmPr zZ<~{0T-y3+#ZFay=e03H-i}Dt)cK-pBg3 zXt^8-S&l$W^ip~5u=jXG8_(*qPi^LD!Z8UJ8 zgGkC{HOk?!%T?+`-NxTRc#p(F4jdIj?_qVV*-v;R|7ltJyG=L2=)J~uqgDt@cI13~ zDg{Fm){z%0>7M5%h(?)_<$kwrtqv5$MW@M&Q{F6ZagRrqM3LYxnq#V6X))jfw&SH9 zv0YM+v3>ereX34GU5Y9&q%WTp{pIftm-jd2EIG#Sn4xRACCI}2V?H5OFG3N$n^@rK zI=+G>ntVq3i)}p@uxn`=__L0d(ATZwdi z!-L!M^CDRds)Xq|vz(H&XX2FigMkAe%;J*ts$}-4REsO-_x6Z~`lIU2VL~^hs_Jk! zXB!6odjN9#z9i*r*pt*!xmc@h-^nj;SCQrk8Zi)lVwyf(%~K;;>I=qQP?XoCHGAgT zC0k~@CcADq*DqC194=h+ zmsSaw1n$JN6l-y99-3&qVD*z&|C~V_6u-e6*pB`_s3g$hzrSK@ep$rKyb=&|c5U>G zkF_~~r=V_TKY8xTbo~a$dq+nhn+q|^;1NWA1#kJQ@^fOmEZ}34eTKy569N_m%hwT{feX3!)XbyZ|p{)$?%#}q10>OJnA!=1!`FPDe5q{jME%i>L zauSTYi6oSvrC-^wBUXb6DTY!jJY*>nH~`O5BD~?7SseId(TfHsm4&n$PH)pdRUmfI zs~`&dT+?;Vt)Jz}D|s;*$$s4^9fp?LpIe`muavP93FMO2RF)wgayzES2h%ez8S)P# z_E*)lR=FmOyJaA_IwJZ;6hOCg26iaPF6zC6`u5C7p*Y&M-I8F{q>@0Inezc4DOEG{ z6X(LwB2bUp6j4$Q;Nml`SW$YfG3A(qgk#wY4s8=Ays!xCAjx)gUofv>SlchRk$f}G zA&l{?e-w>mYY!B8|jWx9sQ7!h@X1%%u<)EO-_lyn4xxM9^sihHG6*s;;D_l?NVLLUl6?GL z^9HuAGQYH{qv#XJ`o@Z3C|IPV5`Xr@@>M9Tr*Xk*z4LxZSMYRpBPB6ZU%h-V-3ZC+ zpyWD6&GLL9PfLe*=`~mI(fk-#6rYG(_XVwU1C6NL>lmER$%li5F%v_S_c52QGuqD1 z_DVzIse;uYww;$55hmr_jld^Z0*>OaD?BSlQiH!?&KErVW%~8$mZOdsjh~)#OW#SS z*uSnpt*=)lzft_Ssu55{2gLxn)O3(PiR!$p0~W3JS^D&M`>vB<2Ljy~do{3eLx@sR zEQG_J+P*%mKcupP!=SnI1auDg@>k0v+NGdx2NAkCW@;8cFY}RJ!YdEf@(S6O-m2C@ z8mrhASnJqHWuK|(z^c4*4mED?JnQ2+94 zxN-O=-fG|2N5hye?_0mZap{Jzqn_&hrff9&ljEl<#PW2L4&K2si~Q{u^F=&fSDcGJ7;8U zV$Q~8&S7lM&c@1%VFh6G~%{g7bqpyqg=ra#T3BCXkXs3CqzOKnM(Li9|=ywO?|yX~fXgvhF*bPv(B-m(+XO4mEmsIn#m zy}QI6qkEY$2#ytmzSJ_Tu%TtmpL79^r7x*cZYpzy2rJ>P?I9U%`m+@rPfF^t{z`?T zZ!s188NN!cPkwCv!V#v*Z?!mDU5Sjiyi#Uh+Kp0?b8112g}FV~vQ-*9`(sA7CQ;KG=h z_ncJ?zf8T9Bys^hAW9?p#-NEcqf^%$)nTqLF|kSOb&58XNxH?lB{A6+-Nwx%Q1IhY zXJ{+jQ{X0!Nv0YqxHEmS;>8%iloJ6m)xPTzV)Vn24*aiH1ZY3 z=C6OT2!0@{bw--f=fbWP!iX1l@h3wv}82#uI+h59gQ1Yg9) zRBlm80gO9XY<``~qy*{`-Yuw!I(>X)CNV;78k#%^XwktFZzz z-Fdn!l{*{!w{@~U0!HtOe#~uiKu{uVa~gM7!Nh_Hl)NEo52TRvmGlW+`cS!*Dz+kh z0=^UZIv`ybbDOlansC{7nn=nBGlSw6xLT3U_EAe@7Kxb|(1C&%oyGxIC7#KrTM4i0obQtLmbX6MBBq{N9 zJ9Rpe0A|-3xmZi|4;bMhN=;F2EbYf25EHO`^MRO9u%h&;({9^Cd&}p68qC#Qd${>* zliG+*VzCONposQC;HpdxcUmCc$%x=gut0PLS)K!R{kBrT6T(vk)bfmv+8M}-k=wJ- zBB0~KT#afCthRsrL8QX!t=WaUvL}&h5KbE(V_Vs?-{W42ga6h0P0=^FxLhk9W9;OR zJS|=RQOe}DJn(4XcEW={Lu{oJvSQ}7^rDPF(xBV>)e9^BVe_*bdJr5@m?#Otpsw_m9ZxH}JPl_Ut>aK!wI+pMc2AyceS_p7 zrDxpe3SdGOm*SI%sEj7NIZXI)kECwe%pn1Ey4g4HtJFdp5L$sNn?*29_{(pk++2a> zWS_7VxA;1JcThMw{Jeb~RV%}IE;n^`WBO9CiVv}xcQzJ??v+yBRP7p6Ed&vIiL|PT zEdpa-2S%lv;F{1G`a8Jzo}cnhg<5qmUox1_70@`5F;hsVO_hshwg-bWBJ2JafOuqo1439Sv%n*&c;zP>21Vh}mYx^PNC)+bJ|}H0K5UeY z0f3pRkdA3*m(=3;_pyxntF!ZrtFs@+3$7l|&v8vOV{2g!OcMD$pKp8EohIX82GYqK z`io)gE8>~HDYctx(jPfMgN{! zk7dq8%?0gpoRA>bS1$6SuAQb-e%~vb8taSG%mZS_4m!xOGv^Ya8aZta`HU|ogNdQ6 ztBIzp%SpFAG`LAGLmDD6JDpE+783^4rt1xkI+mxiJg9sQC3m=WOwWSay=UoYCuOBC zs|?wTaqH2>_NJ2$Y^detB4axvB4b*3|jdY z3tt2)dBW)%PUQmIMgu5GW;GVCGXTSwg!<$iY>UlSUEht7J_{{94~?=9=(r(TbY-L?6ze|1Ou zo!;|j<>xHW=!l%#++tc#{X*-%ke+JmOz30 z-&8Cx!0%u1lAUq(B-!V7&}Z&2A2i zK1e-r%i;|1rDT~lHtBKVt!DqoMOGz}OQF{FMTiX~YyHdr!CQ8Y$_nX178vS-wcPKsWq5g4w5+8w62 z9F4RP)%*w9h_EDSj49bMWBF-Jci1Xup3im8!wn3{dIODD*-34jOp>KC?3Kd~N=PEu z7a}5-R%_0dGSyw%uW?a!o~F+|+6)Be?Af1gzc)~4qk4@`@&%Kb;5r}(4;KstAlS{C zz0qFzKnLn1t~!2GWhto5>_VtKs0wxNcSfC$ z*T|s;x)-$qsi%|##acXpllVB~K9`wSHkN?;b=3XH8Eg0lQ^AQArRsKzZ z+^J#rDN`I7n92lJYJf;n@j$RxM%wBZ`E9^8OGb?*8hM8k?+KB~!4BB_y<*l1j<{A! z@FTc0JR{4~{2r9ttnJepsJ>x8k=?8?Q6tJM)cg+k};Nl|&l*qOhK55^3Ub($5 znI6A5!ak3$CAg%u5Z(nJD-l*}NU2M>rdzDKIPqqz%fVNR7 zX?{TTP!0SUQ>)9R%S6r@d|3F?>Sh>1ClOmIkLYgJ7*U)_CJ4-4$e<-r;TwxKg{yK~ zi0sGU3RkWO}|l82=iipc?e(DfIkA-UILo9A#ZitRiw@E;wo7LYglz z)Wy+LjW{;a@zDSY*a4rn+1PluHo@O2Wq#wN5qc5D&A$wkFNdh2NCZ5XK~@Vvjkw=I z1A_B4iyTGd`WHb-e^yOqG)mWTtwKscibZrn>@x`TKo;G);(I3{jWN@rP@a8JrG^_x zK>r3eS`2%i@3Hr?3KjJ!zcv+5xs&>cv$#pff`1HTSJj^C z7guzzt{97m+C+Z18f$5{wE0t((~l1Ah;Z^WK{I!f0Zg)SE1lH4Op_W$X{x7Y1h^QE zyf!1S$^om`gcKUsb95Vs-lot#Y35B!DA!UM zBYkGMcxLf~Qa`--@#*M!MLxg2mQeSpbs~0K1!^%?bbh?L{dx*{bpiTJ`>LQad?lfS z%Es5qiGbw)j!oFb!^wkW;ooTmcCv)Kz6pCJN%}+NHP0#2nLN>Q>hR-uZDSw7$1kFS zI(XI0M{GTNL4tk!w;<9VZIJ*`V|xlY0^@!4KLwEZGYLYWQ;Ks02y>=%h2`v(r~T}W zl-dYQ6W-31K`SNiAM)Ca3<6x`brB=uPbkG@bmCi?QHPF-DK@3YG0|g>*vHvO6BLy< z$!B;w*twW65uB;*T~05FD8WrmYWcv0&qN z>eo)-;1T=>v_)5ZcCTc3X(o_#Qm^rwau<#ON2r~Z~9Vtnvrsz z?Do?*Yfzi*UV@^`*=il1IgzBSq<^OcYheB1f|9s2&~PaKr=_3u!wQzS#m5#nq93{C zNHjL>{Wc<=S(=q+eL{IKCBt3UjKPpbICjF?m`#KO#jf)er;B?nZAY5cI|-Rx{Cet z(e@;>VJ~Csyc3@S-Kf+s>ctL!CVcXb?&!yxxG6Oo#f6`M@;uV^Y)*XB#D=g>61+lz z80)`+-#T6t9ky~koFat2@5|J_&w-b6 z#2?k%tP|s-*j4I%eJrg9Cg+#$s(6^eP*VAkD4|X6G8HB(ks{~UgzW^9De}Aa!*IcF z)g3hB67PFBLK^2vnL z%!J8^%bb;qgN=!ki-Vnug~gPalaxZ^{OW4u&dnvD=dZ*Ut23X0und4477<7t-EsXcvH z1nP2@d)HGJFD|s#fyy$ML@EOUg(N67l%-GD6E-E39UeBH?OP%27}sh73L}(}!O%u( zf(ngL3jlEk1WeczFOUxq?YcWcw^rakkJB{1KBOw#iN+G5-qx13k_K4LU7wa4mtrf$ zyDa~luIox-UNJe}f%_6q+gq&6UHzr(XL?QB(zbAJ$~hEiSeCNB z@KnbKm!%@c8h?oWMUcw9ne=+2oVr!#nD-`jT)mEd%pxwb+V3oyLVgTM6eBvq&?rVw z47p#i=N$tpzcr;QO^d7l1dHy@DS3Hu`4%OkRYJBScp>`{Yo}@|l)ROvg#~Z$n}X?; zY&n+b+DNX<`xC6(9jp4yl8Y8!9_f;e752OO2gXycVHq}`2=>Q<=ug3}(Gh8#a-#2r zVbNpjXlI^3%5X1R^}l}IjpG7*8lGLH`m5RfJ3Hae+5KNait7(C{;#Wx|99k-;2+2< z)<2O~uCAVv;lC>>3#<|Tz5*}Z9w1O-a*m!l1QZC=$cM07aOy7X#x2CslD$~+?5%Y+ zN0kF#u|SxV(F97VV$k2El#ofy#qUx|-T&tsw1f-%-+&rF^b7qH$b^&Qo3o-F+bh;m z?4Y}evWzz0lMv~*^5S*)TlA~m zJamE!Z@$0jyW~su6W?*XtCVc7tPrji8MAJEQF@ZOK>~j*KZ>*Af#6%un_!!{UV?cM zX;Jd{*!)@NN9&CHpQ*)dp~wMKVj_$v!ssF_0 z%)sQ6o!uw<|2_1Ii|hB^|9@OUSeO9+f5K?6F#Qea@ZT0405i+KJXz1IR2j7<2jcdg zKe|+KCu-kNKCdz%KsZSj86uK|*k)zt@$l?Fkd<4s<<`fB8A>yZEzbS)RztdgA=Dk| z$qoQF3Ca`o=m^_#IK^J|=m=cl>YbQtKg5hyG^RiTn*QRx?&U<>?7|?TUsv;REs#NI zM8hJI#2YhHMM6SVeQ>>CFN|O&(i_w+FR(2=Crwrt5!!2Us~;2$b_#afk#7@tMQ&T; zcW_@p;&)~J+NGn}kuz&??#fkZCzH^i)qYV$vFKYnj0qJ1)o`XT4E|t}>GDewPK_9~ zpiI?d<1!lgM<+Z#&X&cV;{vrD$0oTub=hvCV#(LJTTIv8^`nJ={03`rTEay|I81}p zMB$*m)WKkwp>!eC16^XQTTq6brNeE?vBL?mcG190j2cU45>vZkFR37m@TH4ZGbx2i z!(%u21B1GNQYkBjk_PXVnkU|F%KW`_2FJR{{K<{}BQA$EpN; z^^b$Df4wSA05Lzn^aD>gqIQu%37sSI5P&Nd;`8)xIlZ67e&^jb=b&k1HGp3;-fuBC z)yq7rYoQT)KSZ7}2e7Mq>ZX*Zz>vxR!MojrVW%G**)pToUH~NiPvvgB-2uI5rEq<K$8hD_8_wUQm9|O<9^#|dD_+S3aRwvZAKCLn# z`%M`bSuuVAM4fXssmP^U(%3F=*J7R*R_4>eB7cYne4u^3be}{bMqq9uwL>DGeDZnN zaCbj|Nhb{o8+uwkLbS!AIfFC$b`2pFl!PqVh5#QiMAF8JGpMRbK$(O?CFC9txk)$D zL99nN3o%ueCBz$3wjc+nrDp!dD-A}koJp(Fve^Ily#*gH1`2WsVy5w9VU009B>dh* zU@r1~6>@J=`LuIstKfQVZNHu7)J)~|1o7Hc+A6q#qAc#qp4N-1P=>W(tKXy6*JrC_ z?Rn-Lo3Dpj`13puAvK<=WBr^lLB?;&zJ;D55;};t<0(cHBDHQhTHGITEORfr0@K2< zzT1xLhT)en#i^qGv@{&VahCa7Y1X=sSq`}|1y89c0GZ7$i!zSiIbXf=OSIT=VdX|` zAw)RQ@VLb|QtbknE<~kv^#Pu!&*Xat{f(I-o%6P}K?n~{K9~%J((r-icW#k~D6Y!- zqpCg5J|Efu%MrxX>SneRAMO5b8Vt66Ik{i4y3Qw|xN9U$?clv2Xed?lso3C{wz(o; z0NsaV=6;Y$!>!k~p=nvz4fV=K%HwJuh*$;=hCj{aSK;((TrV+4!09rM z9XM`dIi{;RHU$xC;o}y%!N!!pcB{#>H_q1T$)c+!4rDHo>plxrwbSu=hIYV{ZRkn4 zqz))xkzM}!xkLazor8&CoY2b(HG#C_%suQ-P-D?B0a@E`_&KL?R2n$mzAMh2i)Ys6#(~zQUhmpIVyU`8Xbks$WhLHC_%m-quD&wXv>G zsjYMF-WIlo%x9nMph6Z^&)ComSzF-73$`n9AjK1L51FL%*BSG1myx~}WzYXAHA8d0 zV+o}L88F4#VT_o|_)8xm=Wp)4KlRst`u_jFW@)i7vHgyf{6`T0U7dywlTx&8LHS}UsIFNlGs;^9LkgF|*a;oFXq$PcGMR!3-LYnlF zlc(!ccQ2jIGv$Qug&+FFllLl#WvtWV3(3s;4)w1sUX@S|b6-@p zyK?(x`|;3(^U1qu@9Ngn<7J~s?xfq+wf6E1xph&x#&$<Wu~C zs94oOmakcF`#jf#cEv0n%UpiIbtDB5bk)H`hC!GHsxX#Eb~4X1Ss5n;g1aZl23@)z zO5*@J1EC|g5IHc-{gv#&Y}*Ro8sjVvDhb>+Uy1l4EGDt+u>rGT{$3YTXn^17l?h;{&`!|e0%ZE%E>F@kZeo(xwpmD7b~rPYuF%iGGJBM~BV z`5V-~mVrgUH3~v!(RkvNSsxpj8TG}x5jLcU;V_1sIES5K6jC70AewC(FBW_k{gl-5 zpoKc;Q>OBQFU#^aPHu_kj*5ZpF8T6n_?ho1Zh|&QbrZ(AvasFa zM=`P*#>CA&xpe>QzI*~ z2Dar}5KNK!yzCo)gxVcr+2TJgR1 zuSCdSb5B2w$(hXE7^)}Dz+P|s4 z`ZK2A)!)H_ObDoiiI`Fl3(LCvF=O#2Q2n*r!E!dLPvuvUJQE+H{-*xekp4^kk)3r_ z5y)(utRu-=g74>B3FZ}@>U%w`D!^z-Z#GA~P}+J+KSw^U;|r%vLJCMt!eK4R+;$Qu z&3kSNR=Sc+m-%Dv-*>))~pVn@-$}2=XV^Z8Pw%GKux=&JqD^j zo>uiVYm5r4IEwlxUM8g4#W))RvXpT%Q$MP-<+IB2Ww-Sy-)yJ5Z1LYVq}at4bej)n z=2-Q>z=I)*6u!S0d|)=oKirW1P=M^LoPVqC{~HRhGFeYyjR`&M^5;jN70GhP%wm0<3VPx-Cn5PHA0}X7(AYsChq_$6ADN3?p5Le4Y zkrT|<=y)a&JYd4e^Plrep=ab9HQS6NPPHq|HY!~CK$=gLf>yFG2}4QXg|O-+4!ezI zv)3WNF_1K{>a-EgzMO0A9a(qXwP@?G<#BaqM|CSy4JQoVausmBy{_6p@gcNjLz4-! zbMNL0Bp0GH8f|{M3Al)T+w2??)gktU81l&tONu+jN%JNRt@zH%K~npHo!*%K)nxSQvYcHg(cy1G`Y#2i2PdI=0pe ztwnQsQ$2Oc0yVpP$V;TUDbi{=&8;$485*(mY%1GhUkbzmW1g}}|Bo}x3j)NR$$t9Kmd@m`?C=NEO zKw*hV0`*A>*V3gd#>`i<hPyLV*Ro!9sHm3nVIYN z$h?0RSPK6ar#;)>o%Za^|8^GcZ%+F)cGR~EgI=K1e)sjfXby+N(W})aLq9{;U^W_> zR4C&sd0ArO(Cgg;9W`y;UV&4kZU&AVK0vQ@`s>J6A^NrEpkoMruLulyG=O*LbwimKhRCKLl;A{Zl z6-=ThxnDjE9dA1$wK3@`rR|0GGAdOuNylL@po`<3EJXG_RV^~|^3X&6!GRAk7Y zgSVLJ6Xvq0=Y(XJ=*P?i`=MuK)csRB9~wIfl>;Feo~0f~F?rc`r!|+<5~e=+3W^eYrG}E!dJU&gm*Nl}N=Ol5mAg zM>@zs+pv^l-9;p3Q*=k2Z#)sd^vTF|037u3A~!9$J13yx>OC);PQ$(9iR-(aPvmBa zGk6t)!KIY-%Fb|GRSy}QY3{zsQkJ?u_P`!o>?bJ5FVB^W(JrraoSeA%Irb4Y$tC;( zRL|CVRFUg27$<3Zsmbj{y|!JbmuAbZ`0!;E_^s%VYi-CC*IGo*Ygly|J3?9G9NzVG zgiKo*N5aI-%~wE`ePU$jZPP96((5veJoXwbvuBSyyRmjmJ0Pz-w{FTD`a$u`cSmq~ z@TJo4bor!C;S1YFn}ysnORd>+1pS;$gOt`$2c*e@Tsv2U#kru|oYUxR^(m(rmT$xn z=4#=OGBG{fT9tbo?;gTB*86bZ$+uC$djDGgddB6Hvyb;7z7uc#T}E4V#b-FrjL*@& zQ+|d5by7s-SXN1P=>hnv8;Q~PYIZt}zKz+ncO64Ds(LxOLLr-Ra+-tIP&&(y?WXk4 zp`C^*>?Y2OwUEzAcebPIwiEhwTgxBa2K}aH=Zc2?T2_y(7UWL{C{K?8mCGx*CQW$; z3IpT}Gg}R(Yfo+r&RXg6YlC%qb=>;8hAv?OfVtqe2|#DQl$M^`DR1kRdhPJGUd5VK za%Q8K6T92fo?>U~>H-<7xwWFN>YghXLs*$yJ)qjka*pmDr$YCxR=$3@+i(mo0zt0* zT=0c|{#~*8%DT>BDev^6nQP2mrixR{TfNfz=Ix^!WJ>z&MkJuPSHFnXdrVz+fxe2} z_s$huVJuq0T6V4i@5OjkuR$$yvVGxb$+yk2v|P1bt3tAtTQ62*4mALw0-W>7DeJYH zDAU&)qx_Dxb|rmLF$9aAf#WoUZiJ;=_1n8-q}dwW$;39%=`q_Yd)btg(rp8wp#G2* zt4k}5uDym7VaZ&tvjQ}qygTonOKQ^G`BCOQAi3D$thZ!#W%|+9(x++e(RS_Ry630I zwr5BGPmeL@rZ!W94;y?q%Q*;V3U13ew%ART=BLMHda~8a2}W7`chD$-2;NdClELJF_b7?xvD=%rTaO6$#3p4gaKxUS=KSz=PJXY!ZUK?^yl3v> zszE0^#3&VM!xh|{qsE=*Y$MEQt<2t_NtFqq&&#rf5Vy)5x2l=GD(t%&VMuxH<6(k= zzy=o||7H8#Ziuf=O|fq#<4;Tjy{wwy!7_tlw0jUXq`9#s=`EkPmE~KbYkUhW5d7C7 z!>#u#6C;sh=vx(3m<*HGw-iB$1UIk{~~C-rGSGl+Wl+7DC4qFJ!OmqPCIpTuozzg#*qX=MD}(HBO;k|g=G#aSSCRS3bJS2dkRdImkMt+UaC-8 zrb38CNc|y@*QmD73jcd`a4hsZng0V4-=W1o$<0SJ)~cl}(F5WzG%OSE%^g828#JEVh$ zWqRQ7B-gtbkAI*Df_%oWD6_{YPZ7T>-F^5VfdI8BNa7N32sP!D#O!$Cq(lof@nr45 zbASk=%ZukjgUG|6#6&)~Kz9Y^;i1dC%TH&2PeL|i3xbdIW!j_KHsfUpwbxSE)s&ll zvL1F=pK+a`LAu9ycWu8(!^XB^)uVLGFP;xqWYJeHtJJAazp8im!`A~k5`7HJ0|j^0 zVSvxB@&WQ^kUP~RKTkd06q)#nH-EeuwxNCMbHTfSp3CwDFVcAc?Q_`?piX5dT%X^x z6;kx2p6dA2<1%##Ip+++)N_j*&GZU07xP~i0YECD=@+yL#nr@QLXes|fI9kj(8`SF zZ!Y*Ohlfm{7fiXgOek{U${exE<%WeWG}?AYO3=f5c+?x$Jh``e2h0-}qEZ}*4<_Q{ zy-Di{TB*t_d=z-1Y(p0`I4zj5o9Ckyt~mD#TGpRO`p$;w3TVZUpP8X`X35ap!`?52 zUzUV}oBQA0H=tT50J(<<72O7w+Z!2qy)bw0wwA~PFc<=vrkyWq;-D{C%mGyM{xaxH zH{E=8L}#75fw{v{>bgXGfhN2TQP9!XJI zIF>}ZtC^vu{3W7lpG$h6OmzFv652x4qfv8>iW3xj|cyY*ui+8mQjB5+M9BPrB4or8o81aFJSXwOk_q9eP2U} zzSNLF5WzB|I+61aQ0cxW$GUMi-c#mI)ZD2{wkL45gIZ7cqMAL~wb|v%;tQRl%oG0C z#m`}?IYN=v3ZC8+=g96VSDH{YuaLH}`*raNbyc-|DW-MkZTF=ky4$LQ3Gr2o5A0E zZr~hrq-%ZIIXP>)zw^olRqm5tahI(^T##Xn0!Fz#ly9L`SNceF5zD2e41{}Duamp- zws#ub9ipU3BEHl)(yFpRrBtvnW7C*AiC;bB)%Dd$^pMtW-e^bwl6_l(O*qfDyJfW2&RPHEjEy1N?ezGAi)~sL$Y*C1UMdtO)$>ReNm4dqp zq#czK*_9=}4X$@tXEbjLc8uL2e91++XxkKbQLHn0Ci)wLRYZ?Y$wvyRtEHz@z?rHk zV(_BpF?vFEVVEsT;s2Xn79XWjhMK~mMqVN1Lbq!qN=cYY9EBd!%E8f(~XTOP9sE@5)xb%RFn2-$tLmBl&LnA`M(ro zg`pA?DGS$L)=m;8xjQ7%lH(rn2}sv=n0xRLjsRsWfnrp2_Qhp%feKFfk%Ka4ut|XA zLf9aWyT`I81o?mQh*0eSx{qi`5*o@uNDA-Er~sz)@7DM;xAi6!ZtlwTQOMx8BL#2$ zVx~t_2;w=Q7CB9jXdDE@aml2HXIc8KNGnarzT=rfQY9sl?F~%4x707J9U(Lo_n6BN z52kMnltV+dVXzl@XlYn0Ro*`x2UWN5QXZJg9D2f%oWkP7A1_=P@6@*p_!}Rwt)U8O z%pk6yB=8`FEvyb8i#NLXPECs(ItRX$BXn&&49+J`d(wZv$OiF(k|r=}4DVA}aVa^N zSKmx$t1s~`rCw+%HeY{vQPYCgUre3E5(7i%P%$&;DTIxp7{i)%6yT833K1Q5=Eq@L zcuuE1o9$O1X z<-)X`gfe(Lq&{z{RLEPlV}rbb0L~l{UH!YqwP*5zCa(aQUbjob8T)HeTbft=2zC5kh4}w>SnUHL7VmecVRi#VC?pYvhsPYnm zYONGPPN*Ci9C62Uk7BV!^V=8qo?k6yH)*rl2KW2>_s7~c- z{&ar6WHApd)HLtfu}`yU<*bn&h;l&=`lANpL6#b=+F>#zx|pbhyGYy7JJ!N|y^%t{ z4PNnWHxcp5&HLhWM5BWDg4g_bK2)hVSe&n#GQOwtiVdZ(GsAC=@ zOp6`Srb7n7(2GNgiYs6qa|}Q;a61&CO7)frr)Z)}7stz@Q3Ipm8yV_25&jVBoOE83 zY~+&!KgB0;?8W+hYM2r=g8+Y+4s-O965i~h%K%5H(1p3wD3n9~R3J$Yn*?T(6FkYU zA0*ka439%J#-3p@?{JA2SOTNw?9($YJ>g@Ru~e*6N?^^&j7-gnPBL(48oEz8+t7N- zE^p-&J1(x-NFqMasQ)6w&%Zz!7m+$b_@nAewM^ftG@vveE#6@YtkW0)r7>lptnAmE zA~OP7bIyXGeQ4;}uy;-JoMI@8*s&d)<@q>?wyZG)j$ujcy*(_wj`mo^NcykXx z#CZkNR**M98>AN%$#EBR9g=c{jFL|#TFx@*&J}h=lLm)S-BWxOZY6M3i_YvZCr$n} z44TNBK@@NXm{$O?*K8@ip}nqe{ItTbh&mfdA`2k~3Z&)b?!E{#lyFBej+%3<$D0`v zunGz^qT_*>fxU!g5grb(M7+xJsL*CybF1*b!gZTj7T z{$u<+%AHv|v6@%x8GbsAV(l-2n33skl-hp+OaBaFmVa!6{uhF{Q&sD`RgU6wtfsyu z^#gXfnf<20BCo-@d?~EaoX!TdkWijDt_DHXZN)d+4p4Ef>YkC9zBZ=Ysp}di8^fQ0 zf2Y8O-5mG61ON~vLx~;(5Wm;YX$KmJ11ylR#o2357hV=HQ7XZqRc`u`bbi1Fna@7@ z)-9G)12Zw6TdAmWU*KE~T1pD!4;BN2K0ik2{L&!{kWi~D6mcFzPiB)e;2rrrM&eiT zPToWQFY5%bVhpVwCu}yzrad&gdv7SOXu>j}>x}Fmo|jn$75yDW@Q=}f=%h9NuP>tu zf}4a=EZGE3z#fR#ter8Lbb9jN@M|zav|jrm`k@>Hw%9~L8Tkc~1*}4lk_GIe+_a?i zjm#<-PkmxJG7R_R4550r?iK-OM;2#>2h?>E)*wssA3x~s*t64$)v;8l4lPaZ7^SNa zeyj>#rnRp)?I1(sky;KYaz*S30v@6^M*(xyD?y#(TzPDo$XUrQhj-OWBkcJr78_JYPD>w7H@6*}bXJ^8 zFPI4dJ{{AqOJRBBF+uq~dF&jg0YW*E5;IZasw`&79MQk-hL$$aw+_yvW=571qpl+~ zS7GpUQKHbl&o(0;8(O!kM1tZeKJpb3)S%Hvx9Q{d`0$2$+h7RJ)3qtafP?^AaF#Uw zWSb5?p@BJ{rWHUiuOp`=$!(28esI>lFz-P(#6Qv*q~>|kM&@hHpByy6%C1RK5|upd z2oYNEkY~ncZOZl-vmk=)IfrQSaLXj6k$Byk)=X>j~ZT(D|CBFS!!v#Q`ZxV>y{F!+f6j*B1YY;Gcj(6n9TaH&O%P? zN>H|;rcJcjH@r(vNd!F8fRq$dv@W z8G6ZglG4e-dF!=YYTc=qy?R^QW4B#%(uSc|q@4k$m#0~Ymw43_SyKOsT)7#T^bsk)I+ANKv$!Se|h6iam?!@gET30{u!Q~NKHlxL3-g% zcpgF+M~ueE+vEE}ztm@BR%AbDOFx-$-V6f=?b1BWA^&V00Cym?I}8-gZ$2PsyoaiE z6!sdp7EsK)pn(`sm@$MP{}k7UpnsfV$8(!_L*P`TbPJl%8oS8*9?&{bqlrs9!if*X zf4$cu!5=v{&h|&LU#O|{wda>4%*qz3XvnbXQVY@?TLJz|5{9%w7 z71P@zO!dAe!BxCmVKcDd)&A_0U%_Cw0u?h0v zj+m@FVk<9voi?ZW!0t8;JAqb9U)fxDD93M0|Ft}9YpxK%zynDS%Amr$=-?-0r^Auo zR;U-PX*Off*2+Lg;Iv{-h;awjD9zRW#o#yhPu z38Lve+UW6Hp_Z^6iFTXFy=tBu6Fvp1D!#0+orpdn^Q@LaHay5~fwN2GFHw(5_`Y|d zPBaLQThm-MxB5@N0;vE#dHPJF0jNI7er@ClfjU11NK;JB=Mp+mMqjFwh2Hd4JHevC z9X5vAnE`EtYyz|>UGIm*^5W~y<6(F1kJruiCwx5~?>DD6H=VC@{H>3t^5X4|FZ!d9 zYhW+Y=iSrn?9ao~=Iwcxo3qoO^}gI)Y`oB>a^btwpTP$c>chJUBW_2_!)kiCa@%-v zU-zHwPs8)e!+aI^Z|lw7*L+>x>)T(aa@X6Pi`(6m7KOcmHq|Av2Io?h862hT?xwv1h>F&MG;3?#x#Nb zm^ia8zu&kMcJ2!zuzh2Rv)6R&Eabq%`{jPy}Yx8Xl0{rclTj z52F*BBb;d!p`#VX?73rNbNRHxa5UemQxFLm(wOkfETe_1%QniflvUniuI)k60#i6E z?XgmgRCou(0<-A%4uGuRn5mk_4hfg%EMwpb7#X7FM-(!S4ZP#jE$J^i{55bh;gMU7 zEbnQSaS5E#K?cc0oduOmso4%N=UUgXz5jw09_^mGJAjxq@waz^;v7@|WtG|cM~Xqp zJ(5~olg50zT9JaRW2-P6NE0|Fi+`Mps1k;j|uM0W0N;q*imYFAi4{4C%SlZHg1ur2Qa`8cbNKvWj3Nfpc-K<4h{O zDgD*5fPkn$twvIR0Tam~W@L2p=L1Zw3+aM#hk9fJfU-!&Ew1@7J%f^dyguVG^oQKE z@1Jge?eq1%%Yv$aY_uaxv}b=k595Dc^+zxKp-(!*?9=0UKl*5oS$5m@`*u0!^*w{V zul@654_2I(bi&17j>r3M*Za$LPXtG9+w0@V?bY`4W&ft1Zu^q$q5J4NdIX=no^HsB z2hOse)SlffS3S9?xGE25#JG0r29wur3=b@t6xRd0ZM#FB@LuyH@ zZY%B~>FNevpldPMK+ey9;=@NUAo)ilFB-)B{W_z|hXea!czX98c z-E7=OGEb9gJL)V|q{X-ycbX*qZ-+Rx;`V9&>%c4ZX;A(~rH^)advXZmC32rYcXN{M zh_=|k&O=uTAUlCtM*K$rv_?FK#hY*E`#Mmj6ciu$ts-NNLDtvqaP{?Gh|<6oxn_+E zZ^)3bPL=4lSp~p)dATe94klF*ff~w=dC7=G66bM}i4kImM)?9Mu%Z;SF`q<3FE9^| z41EB3hCa(W1(KN2d4CSBh4}&*DOiW1V6>QzgHnV&8Xh62Cp?lL9VBZdieNUBLPq8` zjC2}F7KesRCT@DG)p03Vq|>TnUFe7?s_Pbo?2=Q%7uC;FG8j+W}mjsE)q0RvTUxLNF8ju7cRsYuF-!Qbfsa!Eo6 zX)+SqU~g!SrebrCe zf;wrn{TXBbvgBV7pdMUmNszctAsS(a_qbwlZm+xz&jEXxtcDhA>0xT$*An5t~QYc*6+fcy#Tox)C_+Cf|Ge?^xk$+PH zG{^^h|1t|z#Pe2W^4}HJD#n8p8UmM@BX(*O*qIVu%~Nfg&a$>tL%uD$}s|v#-DfSK||w3F&x0 z+$5sG@>iD#(t-1WoF|x5L|YFB9S$L)IgELG)_*w~T7H>OAo}=>x?UDnGHV@C;vgiT zDVLi<*9ai{RRChxsD;sF4>G+sgTrI0u4BdnAXwr_3B(tmLH90cgDQA8Vn}Xxm%=f+ zqwzsM0R38-qiCC#?EAB3V`?Gk*~{&i!739G{MqzL)I0zou+r z=8Jd`UMa4+Indj^sk%tLxp}S=bPv*-N_dY;mlpJSO7@LR3mjMdPzLt{uK7KJCxwpF ziOXbG4x;kdo63*kS`QITKC6jXuX3m30c;Rsbbw1GxzQd|bi-Z4B6;!U&kBYR``4=l z7js1i3;H!#qSTWd1?phXi=7v{ci!J)1)4$|F}QJO?zl^n{H`9vLLHlFtJTPed1Qz? z^U?efvRd%SQW1IC;Vab&vGa0bN(LCGve=UgXbr6yy#*Fns?acbAT4J1ewXM$ z;Y=QedYQna<|AY_G8bBr8KqN@+Xz~AjXLd8Sz3oI*1iEOhi*e$wRAwJM3GHQW*gW) zsiNq|86U)z!iNkjQ+~sZJ(Ul1#Vga&qj*sWG`6tRZ(EzDlr7}$ATRBiw;rm0dyAREp{yR5eivJ6UlNd>oEJngv2ncarR5O)RV{HSU! zdIa{uX$D;1X~v;kQUd52&p|!%uXY?0Dp+6KX?XqBK z2uc|a&5?&^AH|nbZH;a~>(zv6*=mi|7{=;6rnkf((a-CBIUUiLZZ-E9knnltpd*!Z z^&p7^O|dqcYxxbkq&m#ZdWD3g(U+|W@UmlpZ-1fF`*Og^F{9;EJ%sq@wO%7TQVl9|Y zkAM&FAk!P&2AwI`*t!L=PPxi{*t(Q|pO9@|X0M$m>=M3xG@q`CIz*LE2bE*cWYbkw zBzAay@bUipdOqv>O998f5z_)3MlCV(0isIcKIv^9Z<1j@zqxkmwQi~YU|UeDAh)%f$8_f3DSo@&s; zDFt|}E+L!hiBi30Nh{&l-XTeknokd)Pgi&iNXE2Pj)PXS=|ee~eFuh7?anwEDtC6; zGi$vXGw;s3Pe*vol~d4xi-}ghf}I5Vl5_@gN}?p`J1xjWbDH_%z2Dv2E@z)Kwb?zC zGhd~(RwW1$mnb;{)*mBms3+0D;*uU3ZvElwv1J_%Z{Z~`6$)Ps#HC^ttRvm@ac%Ek z{G%9=s+t+rg~{M3(QZ1a9Tg zF_7q0KOWyrMAWl~1faF)5MhAY0bYd3iwf%HA{Z7w#D0yOk8xMR&v0bu=&Kli7>N7fAO_L}{`0$wgVu4?dBS z!|}6fUf8a5)#~~*e}Ug>SFjt^>PY#FDL$Iv;=+2rqaYvpp;%YW#=L+2X+E##yd6Ols(SYXvJ0MUS^ zji!%`j$WG0jXCGHtbGE3N9-5vq5DziGLm}K#DO-U;l-K!P}~{uc?A$6;(GPDXh7~N zY820rxS=^Luce?rX)-rV-2fDM>W^>r6w7KeGMbj!iK+7!tx_|RqD}Gy9FHIh@U`4} zP6dLp-7;}Ix==~`b-A2ks1nOC^USPV$hR;}wSWdJmpm@sG9Rtv5Q@(c)E+HMNmZ%qQ%WN7) zs9YzSoAAjxWV_~XVZ1wxZ(If%uZTT!;adXJOv4D=3;lE{r6zj2o$?EB*+@$0P!qDL z1wOb`3bCOijOw~6h@(p1eW4{j##8Z>9)DgY)-G#s=Ur4cP0gBCntDG!sk@n$JTNw3 zl)S%MLBBpJc)KFr(BXAOgnn=nD!){OfbvPbN{_~MK$LkM_4npVzjuUuu#+WE<2aE{ zEBPGJzYELm-Y18Ap{J}|*Zc)a!uVITAJ+d3+E1dYj#C~ziubYF0U})U~#Sd5Cu)|+A7iN4gd)kyewU(P4Xo_^rZ+m z%n2l(Fuvz_RJvj)StYT7q#@>Y$x*RL&9<`P-l zcjz`mEI9sN?JdtP^QY+#L-oX`59q>n3y1Lc56nGp9md1K*=amXpFX$zxsxCnbSSUH zIbYQ$L-BN81j~-*9Q>$*$BDXBE4Xo^N^_0beE9YQ#MjxgtG>pHwwt+OoO`zuqpr(00tq#}$m z&l(tm5jx^FUp#I&B*X63wV z8M=30x6j?ubQq%6Vw4O`TSqd?$qH7P4^u_sBFUSH^0{V+8pl=)y2MCyOc&-yXfPqQBu9b=l@Y> z`paPW3t*r1Tb}4&6*x&$9aa49&i##Q8VQeBM{OrYCu#U6I2kZJS2=ZnzpSR8KG*d5 zE!H}O7zNZ3&VtNm(_>RkkqrnQz`u1bacoukrynft{DOcxJT-{TJV;VtZmGW`tSuRu z!u6O_&Yc=3L#y7?we_8Hxsvs2yneff&6#WShD}qYA7z8G4;7Z!kDN}i1{-rDAk`>G z&yb$9ZZ2@{JfpyF+&aL4nOp(q&vy{0Lq!2#Dd&l#5Y8GG=TKa{^#y{pd6zp5Ds#mG z4k|mwHN;npFkcxK;It9mXYF4Ct-nR-%-Qu4=Kf@$DdXW9?=Gt!`$cV9sTvdBq?S35Iw&laoDt@I6%X^B>42CQ#?m9%H4$l@n8UM8 zVwk2mP?DV+C?=B4Es3G)F5V;-H?nBKZ_VZAEbkz{Uj^-q)gzcdW2QT8>=HKr}wFJ#qw)|6ucO}S;oc!{1nQnaZ@lfd$PFM~sOaNyxI24BYgB>B+Z^H*se|vI_ z@(br{RoGbFivWuW{<4@Qwps$j#t^|ABS_2qHWW9}eKY+1JonqEIg-@wO+sdI_F#KG zP+rU2TRKtc9sW~50`aeIdzSymMEmE)e~y3XUj7UHtVUHGyY#=W0qUF3?x9B5H3Dg* z3SFY81X3H`CFOYuzrkn-HPS54yR&g~WXejI=8{5I0-UaSmY?ja5nI3^gx5%x!E$#2 zusIX3{OACLW{ObgL-@l1vjed+^+PqPL%U~LQoyec<0e$b;|R{;bB8wKit zA7G^<0n*GPyrHI;XEQGl`$d0~Bz2J-V8n5D(+xw{q&o((!A{w+;o!A(xe$H5t%ZV5 zpt&Cd6NY!$OaccEw}zW%FGjrgME&dR@QCws#}{F{S{T&8~4D4@@ku+|D>+0l(t+^(CJk+tVW`Yg{hItquU29@uN9|Pv7R4QKMs?bPA4ZGLOa09Iba<{^ zum6olAqFvc4Z;l(=Dh&;7Q{cx_(mF7 zp}fIdtKIs2+>0vx%R{M`qym!PPy)^|mKg?H9|$*+W>iSN7_A^ED-t;pA?^-D>-Y%L zJ&UX$i>v~d%#N5EDAh1dzn+7rS79o5xNO3V4ssl0(sqgI_b0KKW^Fls;`wEnI{Mtre+ z&*j|T^p<#=F4BauYoSb(Wrl3)=y#fMKNYd%9=5i{8{d7}lGhd^&RF{S>>nv7{wfZb z|04nB|D$8X!OH%>8b%B(jQ=uUpio`L4u=_`^H}W}-OXk?(u`V!hd&WpQN;s*5>7>f zu%Jx9hBDE2+H;G>*dRj3LwwI=h{@;fVQ4*Egt8P~#_}22B0-r&w9If+N{ZzuxOk~$ zR_U&FHeR{E$SqE{M!w`^A1oqkg2nyU7L-U4%fl4xdxC#=>;`k=TCM{Obq-?!m#)$d zn0fi|XXw{j ztPLvpMVG9>VO}FHV5&Y;-ZnYx86=yv!QqpQd?PWIl@fV+(*r9h#Ut1LNV7NEY0)P^z>wvzADiZo95QQDj)w7*W8as;qJt@xNKI zterE-Qc{rVGRS#vSXcgpq30$d9H=0#KoG;K)-aIjvI_}QEAVFFrHX1c@;#qw0hHFICDDYLYDUk>U>2&;yTm1`l^bb3pg1&)Mqksu&Q zWzp+Biw7$M5alYw#vv$XtP@}z{ha&NuwfIX0Hb>pI^(oJGNfBq+nkFHt7j-|hS^dD zl|F<-iT!bFN6KJ6m z&PkQt==wgC-P`h=s~4o*u*tb{L2FEkB@68oE6vY6f(Doq(Wt@UbnJsF5Xt z*q?5rIag$}Rg6%LG55_&cfU400 z;YlTobOgl8C?GNO7%l%mlhk;lXr}P=k`IT6~Mb0sk!(yc;iq~JY z+tqhuU8})~}G`5+&HRcBH_8?~iZ;P~wHS z$VYlV&A0u#%(QO+~{TJULM>vb2K)ribzAW zVbJEZx}Ubl0$f9L&UcDc>>Uz~$p=#tAT@1bf3PPal|~v!%vuK83XkY8d6XIWy^+G>uG+1AU36V zoxiF;K!-%*_J87e#dyd2U7JYFV^mm>a&OvI9`RwZZ?kq1SjE;xd$swcBP_9!mi=yj zoYbTs*jM!63pdziUiQ#c(Y>=Lb}mxw^9ge8u}v;TKaPRK+^a0Hzp)HJm1f#^h0(bt z_rcL^e^X@$rNg>&9@q@RWS~2_@4=4vRJIpOo7{z>5Rf=>K+cHsL#S|ip_EqIGTN*& zO(aROLh+a35TO?Dw|acos)mtb`(2ZF3*3whbr4S9%Gtifc4hmqT&whqJ<6BMF_H>? zxg%xobvH@C^F!f4Z?KTAaAc6)M9fvkL0C%!)tCZU6%#fmY1B1vj~%4M#G{5E`;_9^ zb?Vvku0lR32G!MVozEJIB)P2kBao7M_ps!zkr}Z%YRn8`Mx`U;3<&>36aXrOzEe>p(zlJbXiwZYPbn#3kx5$)VG~l3<^K(OfIvsqbj`j50W0H zDpg^XX-5X@OQheUFawdqrD=Ag-^F&UU2>(4KYtFI1{A(`>m!@OXB*u03$0{_oHW^# zp$pt$_e=(!D=*v;M1yIO(hVikfm<-L7f{m=y*9WsUZa%b})hq*} zdW6vpw8utn>TgB)*n6^}F`siA)leqchJ^(aDg&2QL^Hr@3R%ha1Lg?frP?_%WcT`P z)rIy2{2?Jf46-xq8$e00T^@kcCz^4^6P}cBC*L3*{KGkV`~-4N{Mxe)ai@II{EhY4 z-AVo=2$-`U8=bl_rDQ)EjqgY`?SZfX~z{vPdZRdY? zG5HphCSYP@)`6lEbF_1@|JybH5PAw0s!_E%Qt49pzgEa3l1V5;)_5gwZjq4Ts-1|^_*jSfStuCJsy)p)XlDVEr~Q`)XOm$j|U-vl)CO;EMz zROidj>+RA06h)k$Uherof}`stGtgFD+@MyqwKSdcjgz16^0~%jzqDwwM*kYTyrq_n z;B(N~xQXbtiDr8%KWvX!o|i*!$KXK+w&h7n*L096wxLJWl=Sfl+@8Q+Kbl&U>wuB7 zW6k=p*ZFJZbnS{_m-LrznR7J*2hFIMjO`(Fg_z@w=7NNrE-|OfXvi9Z&)}v(c#O(M z;@jmLT`jryHlzUBJ+Zoymo=iS_@Fo&CYL#Xb0PbR8kCOiRTHd4yc!3t8W_-sNQx4n+k#OFJ+uuKOLs3AXoP=Ez`iUXMR@;zcRt9(t-t%yF%NI5(hofr(gqPXn{+{ zOhy}tL(vA>!JTLMVXY*bDO}LYdTr^#6f03EmJe?U933fkfD=r{G=jFO;w$2)}4g)rqvl{&oo-v#Vlmeh}HNX;DHUct-)pc(1 zKLb(*RkqBL4_Nrwmn2^Tl?S9;J~TQwkhp+)14-g%T|zF^BWHrQ(_*Yv5VSHzwXY^S zdw7D4K(vb?Ofo~b8OXr_} zD{Koq*GD6E5`!im=>cLX;x`BSE+u{uZlkW2vM*9IP)L^IsK1Ez8Z%Sw;>;4DUjZ?$5_y(a0jgf$*VTLzIfiYeCOVg7+C2=Q zB^;Y_B_vb2*t<3^!z}wf-`V+h)teOHZl1Vl8pl#*ui9O&gPL%h`EfMww zhQFfDwVNNhGm6cMa?*; z)=+$Bd%G3w{+zHCPrgpLo}1>%Rs?lQuEplpI3#K&oaG_@+~Mh67C|> z))2Oj;xgFw!*}YF+i^6D(LF`Qu-`hArJj_RAv-h{GYtI5f67EBP8avN0@$7MQF%b@ zh={>c`Sy>Fa+}ns_8jj7YAvNYono#nYHpl@-F4^8GJ+xY9I*I9@mLJpwcWsUR^7Ka zO?5`zUzSYle_ONv%X}~}Gco+Dt(nVjbEZAkzi}>}5lxXQ3-Tj6?JR63uZ|Q2Il1aL z4Yc=(Cjum*EaE?3@ibUhhWrRAQcv$eJ&jK{?oXfJU|jHU&N7;P&Kh|${Eu4(l%O)U zI`b(U5*-_c!whBZcD$^dL{qMC950)S9YW?^|LlHJoPftW_%cWO{O;l9!j2a7T!y{o zifrmof$?n2DtFWNK|zt0$f= z$)ICM&3O}|rMErrJAiSYn!hb0~vJfU8#_-12`Z{j-f}EQNE2CRF#GfxMI~RYF zAowQz+s((8Q@i0~1wTXr<0podoK)+=10*QUbh`F38M}O5D%Ul#opt{`$|?B~(qWwo zt34}%+{lFRT2X;o5GWp9FYYfAL=`{U8}F;4;PhA z{kYJ8hSKk+?6qdy46U&V)Byw6+`-ZXuer22@NV45qxmY&l~bg|xxG~rWsJyo^wrgt z(Y_Hv)Bkx&Gr%FRC*W9;&;(OZ9 z+a>u;%W5_`K-<}wGT&gTs6+@5ujYpk7R|w+nNSpNbAoa-CsPg$VD^&Rr)AiaFflXj zg?}GlbD&t_ZRfbc*VB89iRMd3EIlF`=EK*~erVU5H{ij)%G%oUK7F98^5J=PbeQ8i z%i7k-(tY5BL8jDN(Q?EDInLF2l55{QrxhgvDD&6zl^srgq~7QMa9}+DvUN3c&CV?* znxCiJ^AuiF|cEJ!}B*GOgXCl4#Ko3$s9!<*7$-`Qy)L;w; zn!=TGhLQPCEsz^-hpq`xAo?SF= zZ{g|xmgqTHnf~P-{Gysv%sMMV*SQ+PsR-DaMi&K|0NkZ(^C%7Wwrk+8AM;HJ8m`8z zm!EGi4|T-rqix~=_lAh~+}$t1IEr<|2^(PD(*fn!1`;5uRsyEbhUCJU$VMFIqNYxc z_-W?1K99i=-w(G@9*b8pX|1CP>Es<-#BYt`<1Nx`t?00y8KBuf!Ep&SQ-&x410)hl zy&s;EN6*{X0cbYDpQXgh!jyoLP}*h(I)7MmKFHmje@IUHH5q&!hLh$vtND(r)W;5J zs8%N-i}v?@4XmqlHl{#e*@mkYs_0(a4UpYyB`RQ#Jx8QAxiixGX~{MSo&-IH`9SqZ zhGBYyZPmS&FIury=~gogp2Hq_k7NL;`JD1KXAU*Euw1^BNnsjb=wmAJBruDl%<}(2 zGV943O;C{R#|6smJFu*k!Hb`Kt)<@cYJQNX$4&Z8fWU1D9aYZNoRWfIFon#{V2^ znboWH*!KLEqweC=UB=U%!xV)Wy_t>;2E=Av&5A^3vn%AV^|3Lz$!=P0xeFz-u5Gz1 zLrPzgx!Bf;@=~^lr7y*TJ{Hq;2>95t;M|BZNyh$XGhk~rWg(X`bo08|q0x&=Wg9&; zw^nrj5-0AORRexW-sETP2W_5B#`FBHk&AH7?4~OU?qk3OL#7zmL2e};IVu?jMX#t% zKa9@12Wt`FSDZ@5ksjPH1wDtiNO?CZB@Ge%mDD(^=rm<5C6-2dtb*P=rtiP3F>E#H zrYZ2-r@3W60)CH>`cI)0fE^5R>mO@yioxlgu09gl56?c86CdIiVu(9FBK)`N17w0f zq?o_2t3qC<1>1v--sx80lNVcJv$={i-`db@>s~7goA7Le51=DN3txc_A?G4Y^&)KLlEG+$Gn49@uuH-1s*?frqqUeGkq*SQ z;dlvdi)*y|3#ciG%;jC`S8(cRly5aMS(4J16ytT7w9KBSXq}Ih9^*8v#d=(>g2QSU z7iTKXXRI96&;@DhhQoQxMeh_{iY>I8I58g1=}BWA`8qc)5I8t6ryNQ)Df^t}_477Z^AP~f|DXXu^cd;JA5tN^M0o$R26jxs z^^-1>1+WgDZyXQU+$eF_q{}^wes54+At5Ic=1E8MkeNMp@ITu18aYDx{FLL5ZmiQ28kf4Sm!_~8Yz{SbhgUBWCRphG z5qDH=X%Wc7zW^19Kc->UYzC@)O{S9FV6=3{?f5p-NIG(d$t%4ZU=a2mexDYj&#bN$6MFmn9&T^#?1xVE#S zfvuChoul*rKDf=q@OP2x|CkL}7@7YQxXsNCMfYzh?eAbW6rBIV14BNJCBg3|B+qP}n5gB%d%?$g+y|1dfy8Dh-)!$d=*Zz0LIA@Q&*P3&# zIk83mO!X$hHg!?HKSH4hH=+n3-uO<{k1mC1NY-5N_TH(=JplwgO%wT@wuA9qz2=vP z^7|t(=w{oLk1riUbHyJ#a;nZ6-s*K5AxmO;2N!V_l2BW=? zMmRsPEjqU<5zy~Ys~qIlZ6JLL*^Dq8Fiof^3KNeq)Z+sS*?`zX6#RTm#r#oSx2UJI z{d4ou1Cw7p=|5lI#kqKX=?X2!-bgnE83Z#kNiB+OU%%~bxc9OvN#>#TU7eYgOq}T0 zihYMT{c=)1#+NXd`2-)DiP+m2IT>)^E2BRKlCYGJ3lCDF^P%DQ0JVI|>MKhWh*)tM z=SSMrXICq$$R#Wb9xkOakZXkytQ9v3tTE}uha@K!L>g=$12-vI*4ASY@T1=7pFM|1 z|9)7azmoFeB7Petab3c?n#*(nnIHm@evETjDh!g(?(%JaHXQXSAwOYqHV+Vor9xVT zKMe3E(Gr-ciive{f5NUrEAHim>E=f>WjAB z5Zl%*@5FRw83ZqG)8K&Vu_%S@DMVcz_tP^iTAc707HW2t-8bb6kH~eK;kTG5>z8V9 zjo_nVcpC=I{f}sBB(iO--ew7qCgyrXIswk0+oY|Sg<;fw9#RfeMrM?o0h*Gf!Z!}s z(Lg`X&YraT)v6ZTkgVKskVmXLSNeni=@-df~qT?pTS4 zNAnW``3lyn+hBpLG7RD7omIN{4D~|<+Q$ykH*Xkb+@Wg23^-XD$zw(FGk($?c zN$F{G&{9+ZulZO%zg)Pw!{*W<4g2~k;OdK{Z(@ln1|(ycNzo9JD^Uw`tm-r5AD2<- z2MHoctC|fRTx6mi{XpNft`UW)OHkcKfpm2bC2~fT%#5e?wdCp` zH92~uKnF8=4G4;APeJ&85Dc?w7YQSIA*b8v2h}kwfM2!Ex=+a{6f0&y)rN;0bIw=1 z(+*oJrcn*VPt*2&p?sK(dnH(l^Ie9lSThKy?p%~$M+wk3sy}E?!ojP=zBb!TkY8fS z=^@^9jKPCLo(oUNWM#vqOkyR>30XB2`8R1n{OU=dVTj-`x3~yR7S}r(UWi#wKf0@B zme7hk5N>3$94gjPKpsVt872i6Hk=_EJ#S|yRwiDAPKgMBm!Wfk*_a?MyKveqynjsf zK1v$0Kd&PqN&kQhA5B^YO`-nSAk*GC21LNMD=C=pk17HwztpfkG%9R?g{6tXa#v-N z^v#&MaHvoIAb}n9H1ufbaQ&ah2T{PS^JnxswT(aB!oVTB4uFF`++WvqH&fz|75YDO zMv_JxUA-i5$cxxDBzJ(roesj7Xgw!Kne*pG4hA}d$xvCkG!6uZm3rj-9hGT{V&G%) zORoJ5OuG+?j@#A`DA)^Gs##>2I~a#sU=$TDaQ+(1IBwF{XGgJj)&CvvT6d zQ25kV2d_?UMA42zq}*3XMBl#wkCqCIGfTd|doar}jMYUso}m|0yv%;st~S{NdZay@F6=pcq03a+f5b;|xCPg9`RdZP)xrD@IW zGG;zbjxT!gmWzZ9ktDiDLe!8q9G-A_=3?b&Sjt~lgp6T%DoL^%e|V1pV}lqNDliBg zxFot2QJkxzZ8m}(-#v!$M)%Xf&0a2iVP9)ET)n}iXBQ*;H5bXba#6hxhc;WXsd^Fo z&I18?vMQ=GPwoCJB(i}*x>G_Ml-JO^%=;HTBI%YK{Uerlg&v(SMwzLsTdqsZ#L3<5 z9o}61N6KFm9E|jT0Zo71s()yF{=ZNKRwVy7vZ&xs)B1m;3IN|Gj%M^$$7rS;_J&dF zAL-6eRci|v0aKnanFL}6j)e&NBHg>P<}_uq(A2+Mw-^tV**T*sgRY87(O9hLJsKV2 z;(cY(+Vtt6Zvu4GNKPnt+<$M zmmK#$TgAUs;q;7O`M`fZ|FkDs>r#_;$Pk0?I#aa`q_p7r#rTvQMP1V%o=HBg6Q39^ zJgOor0wu6||M7C64+a7xp4^y(gnV~5a+k3TSNpiFf7SfBUh2ZGmscWBPI4=vD63ys zbf+X1N4#aa>vcoHF9hyY-q#6MV0PBJD`Z6j60lMkYMgMu< zt}k}`+vU+#$<_$2bCI43ODWFmxd7lSywbz-pTEE&3?Pp!nl8V7+ z^F%>*!ccGfPUbsrm35Rx(a&T*92DehMIwo8W|l8#p7cOL@9eAIwJE zYjlzq_q6jNM_lS@F2ZozYML&QL`B**HAs5w>C@O=1O21-);y9~l2sY!1}cdG=7NJJ zI!Q*85qTyBm>fHFnPTei3v%&Umc8Z@<>TT=0ysQ1)hc5#H(cVhzQ=-|=lzYjd@U>z zWF7?_&%In>0-(}C&bHHW5JSNW?9M8!CM0pQjg2Ro0i>%A0NCBh9&zG-F9B?z!+>rWi>OenocS+_FmU8a>SO1vqfpug5{6 z%6Yb4lx=v;cQ4jEaD`xs3&Y9$AapWouyg+z2N}fOYsne6(zrvPUX;a7?uX8sD4631 z6(|?=q2k>!2qf63my!|&DjsK&UzQR)w1l>?JzckVgj(62$PXTXmxsJRCIQHXy43K# zAh|PJw|VE44OfBum8}R&{wPZrEReecEaB&eoU($`r|$lf8dWT`l!x6~@w=QKTjsOK zc9q$N4BuC6>unAs{S!YbrV2#l)sde9H#y?K9ru9Q+u{UdWqr@V(hx)ofI1Vj!9j~H z(T}PO_5_D*1N?y8ld?BViDdKv;Jh$)^Qn9!Qj&BXup*(~xu6`kSs*Fu7r?x`6NKmp z>EbYeR$Knj&ao?=Xt^{P%s?cLN(M{Kc^?VeMg{M)b(tLdhL{vN-)V}ZRM<>X>bHII zmVV^lU@L}%?>Dq?_KlLowk^z=z}7FY5JFwV0bz)y1#l}7yIqGI-l>JFHAij zKW0>IuBu0Bf?INaZFb^;2BI3MN$3=-q;GxhWaku4CJ`_8>uR6Z=>mab&x<3O(c0Bl zO-jPY&yxP;+@A4@v-<1^D|p`6;zl1?dj0+LK(DrAbe!a1x9oMuxoHny6|us=pnyW~ z6fntFKC%jrdxcYyYNcWmwPxJ-vhQFMX<+LfX!OXCYJ9kz*7QbMkB5R}e&o%&QY$g+ zfi*4JN0lUB;x}f4onN7&`7Mih!nekO!jCSCs~R*Dq)#_*x=+}5;?3l|Pr$Y%EQ-In zM8BHi|2($;EePL#>Du)T4Oy7zjp$kRSxlJOSPhL0zT!>{n3?J57}@De*xB{}*DxRB z|A@>}Xv2hNzH_(2x;r%WCM~`2>V>`8sO5i$CDil=&htPM&Uh4oD zxf3hms3TTZc^;SL?>CTvjL9Cs&;AsFaJdjRvxx0#97@9mc?R*B0>4Ip<}nR04DYJP z%Lr-#tB#u6gTxi(_}_#!d$pMAXEm@3!RZ;u_#4@J2Rb!6P4lm|C?m^1Y|;O~_Za^M<^FSgPtxYkXv$|~ z9_Ns7QRveDD+%FdYK8*{n-}>rn$o6+t(wCO{F=7;GZ}BS&F7>FGS=%!7#5umtAeX~ zVoEX)lJ;-Wls$90(*;QC$Z+eJwwF~pLhAw#7y%a7Sm)V`3_A$`zUP}%cf&e*k6ySd z%o~}neHd20T8=p63w0Z3$6Lb~1d_X6H3l1jR(Qrf7`hpPeV(;7RYbsC*;6mPjOf3mpkn&yA@ehBVMkVTWeq@4|htH(Wzt`YrF zx5@OegVHk)9oW7HpDv@kQtcw$hS|5a1iM#|ypr4uauoqyCCrvOCXB#-L3*v-j;)QX zYpHcltyP-XWnYk92U#N1UwnCnKLeotF8=s`4QBlz;r!d5`GU3n<-x2A&3_DX>Fn7u z;@BgWp>?s^oS0}bTN{%jHo7GYqa-P^^Lgin4zJ(kV0Lh(If)!L^bkJ>fveJSM^L=zffKo3?ST7q%f)qWdKWO@V>#$jvO?eARYYo zO+SyuQ93)x3`J+}Q=&9PfSJT+kGJo@3?L(ZhHWhhO!ygNN?@LIWgyj8@!bG`r0pAFlv^Ux zHv}nV!ox%QrPW{XBtnMvta2E^)VC{f5Iz2Krs%mtaV}2-Z48YT)FKO- z@z_!EMA9jnHDY)Bv@j_GgM4msF#IGCzVXCs8|C=)F9jZt(N6=rB%xIZC$dl-~ld4%=AZn(CstFJmWK**!*TL<`7X# zf%M04QQXwy9zgz)X*8ICmMfh9{_Z7 z23`3iRPpZ!KJh9S#T9eqy2HP_Y!o*WAJB^pO9NGYET8#o zHf0$1SRbA34dn|H(Y}Ia>K)#9pk<4f-4(3>so_UJ1l8CgN zsGNZx8HYqIBYYNb=;%4K@A5L;zhrt6eC&rj2;NcgoW@M;3H#jEv?i8aWL287l_nPY z4mtdYyD(#)D(ZrHx~}xq8 zcjnAO#n~-||7+9z4hxunIj#%Zr~zVkfmE7k*CC7O?rTQxX{-;tkMxH|D)jqc$879dV)1@-9!K6N?5iP2(Z1o1o?#IB96R)ku5zQuM@(C96 zT%TtiZI|O5QxliWy4rwq8O@xcZ(AunrC7D;?ya)N?eA87j8E?LQovqmiu2k8nH0cwmosOtM{y9=IN5?L~XKdG_OdiMmItsRhOc?uyIi5^An`EYe#TJg7cc zr*@f9>0?=(++2vg$B=#pq%i2t2AB7%e8)VjOT~z?Dt3A=z-)GG9E-u!7;$3_b?&jw zX)^74GH9>V>FOuEJw<5;;OK-ps*yk-L=%~>Rf^v1jkl-q&vQRWL`i-Q!Xr{rbEg~=J;Nn^rGZ{k#tYd`| z;W~;DsS3)QWLza-sGJT`R9ueyv$P|iQgE=LV3VJPWp~w#c>lE1 z5*4GiQDdP=ysskld;wEcL{)}TQzhTgshzVIIPB)Fbw-~H3fhX-0`W2Q#&x*znh4=a zEHg6=M1E0ThHT#Gn zS|(sxlWBhV#1S9up2OY0S)#V-bL5vC6YFo1#Sw-nERa$itTXF>gAH&YGPa@0iBLxL zzKJ2v>Fz~7?kjEOd@&Ew#1Hi+}!@6jGbwh3cGG4~^S}U1kBwsBbhRVxZTBSyBn?X(7_zJJ+`{dVYK? z=52GX6J^h)60Y5?4AoxW5^l(W)QLHwQL1?$f0BA>t~EkXy%&oaC1}pn&VL<1N36Za zaw0)yqsjk)a$BlzgnPgDsdXqflw~B>u+_n?G+Ej*mN#d26)TwZJ64c;Uk;9aK@j%- z&*kSQ`@#Ul#Sb?L$(qDX^N<}H7xbOl0k(5GSkA}+*u6iO)=dMg2NX$&{y#a`uoWpN z(ojDfc#1Lc4dYCnryk{Fm)$-WozFb!=uAYSJ1^h)>_=DfP9>iV39(Qb}_nZ|MWW%Fo1&_mxy#LRQ84_Ho%GW4`y`@j%^@ zaXBR2k=}3RReTFhn|T@X1FZX<>_(4x)1g&O`NN3X>!g_FiBh^y1u4R+5=`EpQ*aiF zEB4N60JZS}D2r~7&xeo_dM2>TDEJ08As7ezSrNBWVo$9whKCQi?4$yMBlMllM9Q-0 zMkp?jQJ~zYG9ouD)6`Z|2&X!GV77(6U`BsSeha6^oV4auVwc0XgyeQDN=XHFoJc>l zR4vpwvwqG`oF1_uF)pkEkHPbrfAUpV>a$^Q$s$_mwngzh3`~12MP7dM(#XU$d6PFy z{=u1y@deJNb^eDy2vQO!mpnp;mgscb#_#XK9h$}*jTj6#l(-ByAyOj*^LC?O2~2-1 zb+5ecKD@}Ozcq(CKk^{6FiE{$-{^$qU)7G-41R5@sMZuItw)Nxrty`gkTV{NZWVQT zYy3z>XMRSik(2b})b>lz35%pE1JXz#{X%1!^S&oqaUWgKzi4e3nf?*?_&Z$9!2Z90 ztJQ7RMc}=cYw+jL5FwU5Y-tO~W7q6<@tqY#DWHe}`{WXZgb0np%`-k;rfE_V$$#3P z7rJSLXYOTqsH|kTt$5JCIB{{b>8&Y>LHBjuEF_>)5O9@IAP!>5c0P9Z_l?|8#q^P( zLT)$M(Eb)i4OF81?37}is4Pw3poJFXaOc6@jE0aih;c+r5(pR3X~*vR4DEvS^f>Sn zs_N{aKA4MO6XY_u?!4ZL_Qul>K_nWVDqz=`GzVzFhiJ+D0>lZzQvn-)5Y3Cx&0#WV z7ujjh>``jkpgL)B24@2SvK{aUYLg7PE35E}1?sZ$rnte#gw=imI&kHt>je@2N@8X(Bu�A@jsU75ftp=uXK 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

    RWNjEz=RWm6Q`z=T8R5 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 b0S - - - - - -Host Communication Protocol: doc/md/1_stack.md File Reference - - - - - - - - - - - -

    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    doc/md/1_stack.md File Reference
    -
    - -
    - - - - diff --git a/hcp/doxygen/html/1__stack_8md_source.html b/hcp/doxygen/html/1__stack_8md_source.html deleted file mode 100644 index d2729a2..0000000 --- a/hcp/doxygen/html/1__stack_8md_source.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - -Host Communication Protocol: doc/md/1_stack.md Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    doc/md/1_stack.md
    -
    -
    -Go to the documentation of this file.
    1 \page stack FPC embedded stack
    2 
    3 The communication stack implemented on the embedded devices by FPC follows the following
    4 specification.
    5 
    6 \image html stack.svg "HCP embedded stack"
    7 \image latex stack.eps "HCP embedded stack"
    8 
    9 \section phy Physical
    10 
    11 The physical layer have a fixed size buffer of 256 bytes.
    12 
    13 \section link Link
    14 
    15 The link layer handles packet consistency.
    16 
    17 Each packet received is acknowledged on the link layer, if an error occurs no retransmission is
    18 done on this level, instead the error is propagated upwards.
    19 
    20 Channel | Size | Payload | CRC |
    21 ------- | ------- | ---------- | ------- |
    22 2 bytes | 2 bytes | size bytes | 4 bytes |
    23 
    24 All fields are using unsigned data types.
    25 
    26 \section tsp Transport
    27 
    28 The transport layer handles packet segmentation.
    29 
    30 As the PHY MTU is 256 bytes the maximum payload per segment is 242 bytes.
    31 
    32 Errors are propagated upwards.
    33 
    34 Size | Seq Nr | Seq Len | Payload |
    35 ------- | ------- | ------- | ---------- |
    36 2 bytes | 2 bytes | 2 bytes | size bytes |
    37 
    38 All fields are using unsigned data types.
    39 
    40 \section app Application
    41 
    42 The application layer is a optional security layer, the default implementation is clear text
    43 (unsecure).
    44 
    45 If a security solution is used it will be part of that products documentation.
    46 
    47 \section hcp HCP
    48 
    49 The HCP frame is described in the \link hcpf HCP frame format section.
    -
    - - - - diff --git a/hcp/doxygen/html/2__hcpframe_8md.html b/hcp/doxygen/html/2__hcpframe_8md.html deleted file mode 100644 index 9ef5004..0000000 --- a/hcp/doxygen/html/2__hcpframe_8md.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - -Host Communication Protocol: doc/md/2_hcpframe.md File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    doc/md/2_hcpframe.md File Reference
    -
    - -
    - - - - diff --git a/hcp/doxygen/html/2__hcpframe_8md_source.html b/hcp/doxygen/html/2__hcpframe_8md_source.html deleted file mode 100644 index 17a6bab..0000000 --- a/hcp/doxygen/html/2__hcpframe_8md_source.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - -Host Communication Protocol: doc/md/2_hcpframe.md Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    doc/md/2_hcpframe.md
    -
    -
    -Go to the documentation of this file.
    1 \page hcpf HCP frame format
    2 
    3 The Host Communication Protocol (HCP) describes a general way of sending commands and information
    4 between devices.
    5 
    6 \image html hcp.svg "HCP frame format"
    7 \image latex hcp.eps "HCP frame format"
    8 
    9 \section cmd Command
    10 
    11 The Commands define the general action that is going to be executed. However, each command
    12 can have several Arguments each with data attached.
    13 
    14 | CMD | Num Args | Payload |
    15 | ------- | -------- | -------- |
    16 | 2 bytes | 2 bytes | xx bytes |
    17 
    18 All fields are using unsigned data types.
    19 
    20 \section arg Argument
    21 
    22 The Argument is used as a complement to the command if it is needed and can contain arbitrary data.
    23 
    24 | ARG | Size | Data |
    25 | ------- | --------| ---------- |
    26 | 2 bytes | 2 bytes | size bytes |
    27 
    28 All fields are using unsigned data types.
    -
    - - - - diff --git a/hcp/doxygen/html/4__biometrics_8md.html b/hcp/doxygen/html/4__biometrics_8md.html deleted file mode 100644 index 84a283b..0000000 --- a/hcp/doxygen/html/4__biometrics_8md.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - -Host Communication Protocol: doc/md/4_biometrics.md File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    doc/md/4_biometrics.md File Reference
    -
    - -
    - - - - diff --git a/hcp/doxygen/html/4__biometrics_8md_source.html b/hcp/doxygen/html/4__biometrics_8md_source.html deleted file mode 100644 index e31e745..0000000 --- a/hcp/doxygen/html/4__biometrics_8md_source.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - -Host Communication Protocol: doc/md/4_biometrics.md Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    doc/md/4_biometrics.md
    -
    -
    -Go to the documentation of this file.
    1 \page bio Biometrics
    2 
    3 \section capture_b Capture
    4 
    5 @startuml
    6 Host --> BioMcu: CMD_CAPTURE \nARG_TIMEOUT[timeout]
    7 ... Wait for finger down...
    8 rnote over BioMcu : fpc_bep_capture
    9 hnote over BioMcu : image
    10 BioMcu --> Host: CMD_CAPTURE \nARG_RESULT[bep_result]
    11 @enduml
    12 ***
    13 
    14 \section extract_b Extract
    15 
    16 @startuml
    17 group Capture
    18 Host --> BioMcu: CMD_CAPTURE \nARG_TIMEOUT[timeout]
    19 ... Wait for finger down...
    20 rnote over BioMcu : fpc_bep_capture
    21 hnote over BioMcu : image
    22 BioMcu --> Host: CMD_CAPTURE \nARG_RESULT[bep_result]
    23 end
    24 Host --> BioMcu: CMD_IMAGE \nARG_EXTRACT
    25 rnote over BioMcu : fpc_bep_image_extract
    26 hnote over BioMcu : template
    27 BioMcu --> Host: CMD_IMAGE \nARG_RESULT[bep_result]
    28 @enduml
    29 ***
    30 
    31 \section enroll_b Enroll
    32 
    33 @startuml
    34 Host --> BioMcu: CMD_ENROLL \nARG_START
    35 rnote over BioMcu : fpc_bep_enroll_start
    36 hnote over BioMcu : session
    37 BioMcu --> Host: CMD_ENROLL \nARG_RESULT[bep_result]
    38 |||
    39 loop Enroll Image
    40 group Capture
    41 Host --> BioMcu: CMD_CAPTURE \nARG_TIMEOUT[timeout]
    42 ... Wait for finger down...
    43 rnote over BioMcu : fpc_bep_capture
    44 hnote over BioMcu : image
    45 BioMcu --> Host: CMD_CAPTURE \nARG_RESULT[bep_result]
    46 end
    47 |||
    48 Host --> BioMcu: CMD_ENROLL \nARG_ADD
    49 rnote over BioMcu : fpc_bep_enroll
    50 rnote over BioMcu : count
    51 BioMcu --> Host: CMD_ENROLL \nARG_COUNT[count] \nARG_RESULT[bep_result]
    52 Host --> BioMcu: CMD_WAIT \nARG_FINGER_UP \nARG_TIMEOUT[timeout]
    53 ... Wait for finger up...
    54 BioMcu --> Host: CMD_WAIT \nARG_RESULT[bep_result]
    55 end
    56 |||
    57 Host --> BioMcu: CMD_ENROLL \nARG_FINISH
    58 rnote over BioMcu : fpc_bep_enroll_finish
    59 hnote over BioMcu : enroll template
    60 BioMcu --> Host: CMD_ENROLL \nARG_RESULT[bep_result]
    61 @enduml
    62 ***
    63 
    64 \section identify_b Identify
    65 
    66 @startuml
    67 group Capture
    68 Host --> BioMcu: CMD_CAPTURE \nARG_TIMEOUT[timeout]
    69 ... Wait for finger down...
    70 rnote over BioMcu : fpc_bep_capture
    71 hnote over BioMcu : image
    72 BioMcu --> Host: CMD_CAPTURE \nARG_RESULT[bep_result]
    73 end
    74 |||
    75 group Extract
    76 Host --> BioMcu: CMD_IMAGE \nARG_EXTRACT
    77 rnote over BioMcu : fpc_bep_image_extract
    78 hnote over BioMcu : template
    79 BioMcu --> Host: CMD_IMAGE \nARG_RESULT[bep_result]
    80 end
    81 |||
    82 Host --> BioMcu: CMD_IDENTIFY
    83 rnote over BioMcu : fpc_template_storage_get_all
    84 rnote over BioMcu : fpc_bep_identify
    85 hnote over BioMcu : id
    86 BioMcu --> Host: CMD_IDENTIFY \nARG_MATCH \nARG_ID[id] \nARG_RESULT[bep_result]
    87 hnote over Host: id
    88 @enduml
    89 ***
    -
    - - - - diff --git a/hcp/doxygen/html/5__image_8md.html b/hcp/doxygen/html/5__image_8md.html deleted file mode 100644 index 69eee1d..0000000 --- a/hcp/doxygen/html/5__image_8md.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - -Host Communication Protocol: doc/md/5_image.md File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    doc/md/5_image.md File Reference
    -
    - -
    - - - - diff --git a/hcp/doxygen/html/5__image_8md_source.html b/hcp/doxygen/html/5__image_8md_source.html deleted file mode 100644 index 9aa7e11..0000000 --- a/hcp/doxygen/html/5__image_8md_source.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - -Host Communication Protocol: doc/md/5_image.md Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    doc/md/5_image.md
    -
    -
    -Go to the documentation of this file.
    1 \page image Image handling
    2 
    3 \section create_i Create
    4 
    5 @startuml
    6 Host --> BioMcu: CMD_IMAGE \nARG_CREATE
    7 hnote over BioMcu : image
    8 BioMcu --> Host: CMD_IMAGE \nARG_RESULT[bep_result]
    9 @enduml
    10 ***
    11 
    12 \section upload_i Upload
    13 
    14 @startuml
    15 participant Host
    16 participant BioMcu
    17 
    18 hnote over BioMcu : image
    19 Host --> BioMcu: CMD_IMAGE \nARG_UPLOAD
    20 BioMcu --> Host: CMD_IMAGE \nARG_RESULT[bep_result] \nARG_DATA[image]
    21 hnote over Host : image
    22 @enduml
    23 ***
    24 
    25 \section download_i Download
    26 
    27 @startuml
    28 participant Host
    29 participant BioMcu
    30 
    31 hnote over Host : image
    32 Host --> BioMcu: CMD_IMAGE \nARG_DOWNLOAD \nARG_DATA[image]
    33 hnote over BioMcu : image
    34 BioMcu --> Host: CMD_IMAGE \nARG_RESULT[bep_result]
    35 @enduml
    36 ***
    -
    - - - - diff --git a/hcp/doxygen/html/6__template_8md.html b/hcp/doxygen/html/6__template_8md.html deleted file mode 100644 index f32f4eb..0000000 --- a/hcp/doxygen/html/6__template_8md.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - -Host Communication Protocol: doc/md/6_template.md File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    doc/md/6_template.md File Reference
    -
    - -
    - - - - diff --git a/hcp/doxygen/html/6__template_8md_source.html b/hcp/doxygen/html/6__template_8md_source.html deleted file mode 100644 index cdf6183..0000000 --- a/hcp/doxygen/html/6__template_8md_source.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - -Host Communication Protocol: doc/md/6_template.md Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    doc/md/6_template.md
    -
    -
    -Go to the documentation of this file.
    1 \page template Template handling
    2 
    3 \section upload_t Upload
    4 
    5 @startuml
    6 participant Host
    7 participant BioMcu
    8 
    9 hnote over BioMcu : template
    10 Host --> BioMcu: CMD_TEMPLATE \nARG_UPLOAD
    11 BioMcu --> Host: CMD_TEMPLATE \nARG_RESULT[bep_result] \nARG_DATA[template]
    12 hnote over Host : template
    13 @enduml
    14 ***
    15 
    16 \section download_t Download
    17 
    18 @startuml
    19 participant Host
    20 participant BioMcu
    21 
    22 hnote over Host : template
    23 Host --> BioMcu: CMD_TEMPLATE \nARG_DOWNLOAD \nARG_DATA[template]
    24 hnote over BioMcu : template
    25 BioMcu --> Host: CMD_TEMPLATE \nARG_RESULT[bep_result]
    26 @enduml
    27 ***
    28 
    29 \section save_t Save
    30 
    31 @startuml
    32 participant Host
    33 participant BioMcu
    34 
    35 hnote over BioMcu : template
    36 Host --> BioMcu: CMD_TEMPLATE \nARG_SAVE \nARG_ID[id]
    37 hnote over BioMcu : template[id] (nvm)
    38 BioMcu --> Host: CMD_TEMPLATE \nARG_RESULT[bep_result]
    39 @enduml
    40 ***
    -
    - - - - diff --git a/hcp/doxygen/html/7__storage_8md.html b/hcp/doxygen/html/7__storage_8md.html deleted file mode 100644 index 3e99ec5..0000000 --- a/hcp/doxygen/html/7__storage_8md.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - -Host Communication Protocol: doc/md/7_storage.md File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    doc/md/7_storage.md File Reference
    -
    - -
    - - - - diff --git a/hcp/doxygen/html/7__storage_8md_source.html b/hcp/doxygen/html/7__storage_8md_source.html deleted file mode 100644 index bfa997b..0000000 --- a/hcp/doxygen/html/7__storage_8md_source.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - -Host Communication Protocol: doc/md/7_storage.md Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    doc/md/7_storage.md
    -
    -
    -Go to the documentation of this file.
    1 \page storage Storage handling
    2 
    3 \section delete_id Delete ID
    4 
    5 @startuml
    6 participant Host
    7 participant BioMcu
    8 
    9 hnote over BioMcu : template[id] (nvm)
    10 Host --> BioMcu: CMD_STORAGE_TEMPLATE \nARG_DELETE \nARG_ID[id]
    11 rnote over BioMcu : fpc_template_storage_remove
    12 BioMcu --> Host: CMD_STORAGE_TEMPLATE \nARG_RESULT[bep_result]
    13 @enduml
    14 ***
    15 
    16 \section delete_all Delete All
    17 
    18 @startuml
    19 participant Host
    20 participant BioMcu
    21 
    22 hnote over BioMcu : template[] (nvm)
    23 Host --> BioMcu: CMD_STORAGE_TEMPLATE \nARG_DELETE \nARG_ALL
    24 rnote over BioMcu : fpc_template_storage_remove_all
    25 BioMcu --> Host: CMD_STORAGE_TEMPLATE \nARG_RESULT[bep_result]
    26 @enduml
    27 ***
    28 
    29 \section upload_s Upload
    30 
    31 @startuml
    32 participant Host
    33 participant BioMcu
    34 
    35 hnote over BioMcu : template[id] (nvm)
    36 Host --> BioMcu: CMD_STORAGE_TEMPLATE \nARG_UPLOAD \nARG_ID[id]
    37 rnote over BioMcu : fpc_template_storage_get
    38 hnote over BioMcu : template (ram)
    39 BioMcu --> Host: CMD_STORAGE_TEMPLATE \nARG_RESULT[bep_result]
    40 
    41 @enduml
    42 ***
    43 
    44 \section count_s Count
    45 
    46 @startuml
    47 participant Host
    48 participant BioMcu
    49 
    50 Host --> BioMcu: CMD_STORAGE_TEMPLATE \nARG_COUNT
    51 rnote over BioMcu : fpc_template_storage_get_count
    52 BioMcu --> Host: CMD_STORAGE_TEMPLATE \nARG_RESULT[bep_result] \nARG_COUNT[template_count]
    53 
    54 @enduml
    55 ***
    56 
    57 \section get_id Get IDs
    58 
    59 @startuml
    60 participant Host
    61 participant BioMcu
    62 
    63 hnote over BioMcu : ids[] (nvm)
    64 Host --> BioMcu: CMD_STORAGE_TEMPLATE \nARG_ID
    65 rnote over BioMcu : fpc_template_storage_get_all_ids
    66 BioMcu --> Host: CMD_STORAGE_TEMPLATE \nARG_RESULT[bep_result] \nARG_DATA[ids]
    67 
    68 @enduml
    69 ***
    -
    - - - - diff --git a/hcp/doxygen/html/8__sensor_8md.html b/hcp/doxygen/html/8__sensor_8md.html deleted file mode 100644 index e284b37..0000000 --- a/hcp/doxygen/html/8__sensor_8md.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - -Host Communication Protocol: doc/md/8_sensor.md File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    doc/md/8_sensor.md File Reference
    -
    - -
    - - - - diff --git a/hcp/doxygen/html/8__sensor_8md_source.html b/hcp/doxygen/html/8__sensor_8md_source.html deleted file mode 100644 index d665b32..0000000 --- a/hcp/doxygen/html/8__sensor_8md_source.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - -Host Communication Protocol: doc/md/8_sensor.md Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    doc/md/8_sensor.md
    -
    -
    -Go to the documentation of this file.
    1 \page sensor Sensor operations
    2 
    3 \section wait_up_s Wait for finger up
    4 
    5 @startuml
    6 Host --> BioMcu: CMD_WAIT \nARG_FINGER_UP \nARG_TIMEOUT[timeout]
    7 ... Wait for finger up...
    8 BioMcu --> Host: CMD_WAIT \nARG_RESULT[bep_result]
    9 @enduml
    10 ***
    11 
    12 \section wait_down_s Wait for finger down
    13 
    14 @startuml
    15 Host --> BioMcu: CMD_WAIT \nARG_FINGER_DOWN \nARG_TIMEOUT[timeout]
    16 ... Wait for finger down...
    17 BioMcu --> Host: CMD_WAIT \nARG_RESULT[bep_result]
    18 @enduml
    19 ***
    20 
    21 \section sensor_reset_s Reset sensor
    22 
    23 @startuml
    24 Host --> BioMcu : CMD_SENSOR \nARG_RESET
    25 rnote over BioMcu : fpc_bep_sensor_reset
    26 BioMcu --> Host : CMD_SENSOR \nARG_RESULT[bep_result]
    27 @enduml
    28 ***
    -
    - - - - diff --git a/hcp/doxygen/html/9__device_8md.html b/hcp/doxygen/html/9__device_8md.html deleted file mode 100644 index 34a3526..0000000 --- a/hcp/doxygen/html/9__device_8md.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - -Host Communication Protocol: doc/md/9_device.md File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    doc/md/9_device.md File Reference
    -
    - -
    - - - - diff --git a/hcp/doxygen/html/9__device_8md_source.html b/hcp/doxygen/html/9__device_8md_source.html deleted file mode 100644 index ff87129..0000000 --- a/hcp/doxygen/html/9__device_8md_source.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - -Host Communication Protocol: doc/md/9_device.md Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    doc/md/9_device.md
    -
    -
    -Go to the documentation of this file.
    1 \page device Device operations
    2 
    3 \section reset_d Reset device
    4 
    5 @startuml
    6 Host --> BioMcu: CMD_RESET
    7 BioMcu --> Host: CMD_RESET \nARG_RESULT[bep_result]
    8 rnote over BioMcu: Reset
    9 @enduml
    10 ***
    -
    - - - - diff --git a/hcp/doxygen/html/annotated.html b/hcp/doxygen/html/annotated.html deleted file mode 100644 index 2be5b26..0000000 --- a/hcp/doxygen/html/annotated.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - -Host Communication Protocol: Data Structures - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    Data Structures
    -
    -
    -
    Here are the data structures with brief descriptions:
    - - - - - - - -
     Cfpc_com_chain
     Cfpc_com_chain_private
     Cfpc_com_packet_link
     Cfpc_com_packet_transport
     Cfpc_hcp_arg_dataCommand Argument
     Cfpc_hcp_packetApplication Command Packet
    -
    -
    -
    - - - - diff --git a/hcp/doxygen/html/annotated_dup.js b/hcp/doxygen/html/annotated_dup.js deleted file mode 100644 index d5950a0..0000000 --- a/hcp/doxygen/html/annotated_dup.js +++ /dev/null @@ -1,9 +0,0 @@ -var annotated_dup = -[ - [ "fpc_com_chain", "structfpc__com__chain.html", "structfpc__com__chain" ], - [ "fpc_com_chain_private", "structfpc__com__chain__private.html", "structfpc__com__chain__private" ], - [ "fpc_com_packet_link", "structfpc__com__packet__link.html", "structfpc__com__packet__link" ], - [ "fpc_com_packet_transport", "structfpc__com__packet__transport.html", "structfpc__com__packet__transport" ], - [ "fpc_hcp_arg_data", "structfpc__hcp__arg__data.html", "structfpc__hcp__arg__data" ], - [ "fpc_hcp_packet", "structfpc__hcp__packet.html", "structfpc__hcp__packet" ] -]; \ No newline at end of file diff --git a/hcp/doxygen/html/arrowdown.png b/hcp/doxygen/html/arrowdown.png deleted file mode 100644 index 0b63f6d38c4b9ec907b820192ebe9724ed6eca22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmVkw!R34#Lv2LOS^S2tZA31X++9RY}n zChwn@Z)Wz*WWHH{)HDtJnq&A2hk$b-y(>?@z0iHr41EKCGp#T5?07*qoM6N<$f(V3Pvj6}9 diff --git a/hcp/doxygen/html/arrowright.png b/hcp/doxygen/html/arrowright.png deleted file mode 100644 index c6ee22f937a07d1dbfc27c669d11f8ed13e2f152..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 229 zcmV^P)R?RzRoKvklcaQ%HF6%rK2&ZgO(-ihJ_C zzrKgp4jgO( fd_(yg|3PpEQb#9`a?Pz_00000NkvXXu0mjftR`5K diff --git a/hcp/doxygen/html/bc_s.png b/hcp/doxygen/html/bc_s.png deleted file mode 100644 index 224b29aa9847d5a4b3902efd602b7ddf7d33e6c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT diff --git a/hcp/doxygen/html/bdwn.png b/hcp/doxygen/html/bdwn.png deleted file mode 100644 index 940a0b950443a0bb1b216ac03c45b8a16c955452..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T - - - - - -Host Communication Protocol: Biometrics - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    Biometrics
    -
    -
    -

    -Capture

    -
    -

    -Extract

    -
    -

    -Enroll

    -
    -

    -Identify

    -
    -
    -
    - - - - diff --git a/hcp/doxygen/html/classes.html b/hcp/doxygen/html/classes.html deleted file mode 100644 index 4f3072a..0000000 --- a/hcp/doxygen/html/classes.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - -Host Communication Protocol: Data Structure Index - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    Data Structure Index
    -
    - -
    - - - - diff --git a/hcp/doxygen/html/closed.png b/hcp/doxygen/html/closed.png deleted file mode 100644 index 98cc2c909da37a6df914fbf67780eebd99c597f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT diff --git a/hcp/doxygen/html/device.html b/hcp/doxygen/html/device.html deleted file mode 100644 index 7a316ec..0000000 --- a/hcp/doxygen/html/device.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - -Host Communication Protocol: Device operations - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    Device operations
    -
    -
    -

    -Reset device

    -
    -
    -
    - - - - diff --git a/hcp/doxygen/html/dir_000001_000000.html b/hcp/doxygen/html/dir_000001_000000.html deleted file mode 100644 index cf9d79f..0000000 --- a/hcp/doxygen/html/dir_000001_000000.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - -Host Communication Protocol: src -> inc Relation - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - -
    -
    - -
    -
    -
    - - - - - - diff --git a/hcp/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/hcp/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html deleted file mode 100644 index 0ad6e8b..0000000 --- a/hcp/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - -Host Communication Protocol: src Directory Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    src Directory Reference
    -
    -
    -
    -Directory dependency graph for src:
    -
    -
    -
    -
    - - - - - - - - - - - -

    -Files

     
    file  fpc_com_transport.c [code]
     Communication transport layer implementation.
     
    file  fpc_hcp.c [code]
     Host Communication Protocol implementation.
     
    -
    -
    - - - - diff --git a/hcp/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js b/hcp/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js deleted file mode 100644 index a4b8e35..0000000 --- a/hcp/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js +++ /dev/null @@ -1,6 +0,0 @@ -var dir_68267d1309a1af8e8297ef4c3efbcdba = -[ - [ "fpc_com_link.c", "fpc__com__link_8c.html", "fpc__com__link_8c" ], - [ "fpc_com_transport.c", "fpc__com__transport_8c.html", "fpc__com__transport_8c" ], - [ "fpc_hcp.c", "fpc__hcp_8c.html", "fpc__hcp_8c" ] -]; \ No newline at end of file diff --git a/hcp/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map b/hcp/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map deleted file mode 100644 index 75b1903..0000000 --- a/hcp/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/hcp/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 b/hcp/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 deleted file mode 100644 index 76e9230..0000000 --- a/hcp/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -078edd713872194e35fdc26e1b4695d3 \ No newline at end of file diff --git a/hcp/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.svg b/hcp/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.svg deleted file mode 100644 index c0f984a..0000000 --- a/hcp/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba_dep.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - -src - - -dir_68267d1309a1af8e8297ef4c3efbcdba - - -src - - - - -dir_bfccd401955b95cf8c75461437045ac0 - - -inc - - - - -dir_68267d1309a1af8e8297ef4c3efbcdba->dir_bfccd401955b95cf8c75461437045ac0 - - - -4 - - - - - diff --git a/hcp/doxygen/html/dir_bfccd401955b95cf8c75461437045ac0.html b/hcp/doxygen/html/dir_bfccd401955b95cf8c75461437045ac0.html deleted file mode 100644 index 3347207..0000000 --- a/hcp/doxygen/html/dir_bfccd401955b95cf8c75461437045ac0.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - -Host Communication Protocol: inc Directory Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    inc Directory Reference
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - -

    -Files

    file  fpc_com_chain.h [code]
     Communication chain type definitions.
     
     
    file  fpc_com_packets.h [code]
     Communication packet type definitions.
     
    file  fpc_com_result.h [code]
     Communication result type definitions.
     
    file  fpc_com_transport.h [code]
     Communication transport interface.
     
    file  fpc_hcp.h [code]
     Host Communication Protocol interface.
     
    file  fpc_hcp_common.h [code]
     Host Communication Protocol common type definitions.
     
    -
    -
    - - - - diff --git a/hcp/doxygen/html/dir_bfccd401955b95cf8c75461437045ac0.js b/hcp/doxygen/html/dir_bfccd401955b95cf8c75461437045ac0.js deleted file mode 100644 index 1177085..0000000 --- a/hcp/doxygen/html/dir_bfccd401955b95cf8c75461437045ac0.js +++ /dev/null @@ -1,10 +0,0 @@ -var dir_bfccd401955b95cf8c75461437045ac0 = -[ - [ "fpc_com_chain.h", "fpc__com__chain_8h.html", "fpc__com__chain_8h" ], - [ "fpc_com_link.h", "fpc__com__link_8h.html", "fpc__com__link_8h" ], - [ "fpc_com_packets.h", "fpc__com__packets_8h.html", "fpc__com__packets_8h" ], - [ "fpc_com_result.h", "fpc__com__result_8h.html", "fpc__com__result_8h" ], - [ "fpc_com_transport.h", "fpc__com__transport_8h.html", "fpc__com__transport_8h" ], - [ "fpc_hcp.h", "fpc__hcp_8h.html", "fpc__hcp_8h" ], - [ "fpc_hcp_common.h", "fpc__hcp__common_8h.html", "fpc__hcp__common_8h" ] -]; \ No newline at end of file diff --git a/hcp/doxygen/html/doc.png b/hcp/doxygen/html/doc.png deleted file mode 100644 index 17edabff95f7b8da13c9516a04efe05493c29501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t diff --git a/hcp/doxygen/html/doxygen.css b/hcp/doxygen/html/doxygen.css deleted file mode 100644 index 1425ec5..0000000 --- a/hcp/doxygen/html/doxygen.css +++ /dev/null @@ -1,1475 +0,0 @@ -/* The standard CSS for doxygen 1.8.11 */ - -body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; -} - -/* @group Heading Levels */ - -h1.groupheader { - font-size: 150%; -} - -.title { - font: 400 14px/28px Roboto,sans-serif; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h2.groupheader { - border-bottom: 1px solid #879ECB; - color: #354C7B; - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px cyan; -} - -dt { - font-weight: bold; -} - -div.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.qindex, div.navtab{ - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; -} - -div.qindex, div.navpath { - width: 100%; - line-height: 140%; -} - -div.navtab { - margin-right: 15px; -} - -/* @group Link Styling */ - -a { - color: #3D578C; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #4665A2; -} - -a:hover { - text-decoration: underline; -} - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #9CAFD4; - color: #ffffff; - border: 1px double #869DCA; -} - -.contents a.qindexHL:visited { - color: #ffffff; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: monospace, fixed; - font-size: 105%; -} - -div.fragment { - padding: 4px 6px; - margin: 4px 8px 4px 2px; - background-color: #FBFCFD; - border: 1px solid #C4CFE5; -} - -div.line { - font-family: monospace, fixed; - font-size: 13px; - min-height: 13px; - line-height: 1.0; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line:after { - content:"\000A"; - white-space: pre; -} - -div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; -} - - -span.lineno { - padding-right: 4px; - text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; - white-space: pre; -} -span.lineno a { - background-color: #D8D8D8; -} - -span.lineno a:hover { - background-color: #C8C8C8; -} - -div.ah, span.ah { - background-color: black; - font-weight: bold; - color: #ffffff; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); -} - -div.classindex ul { - list-style: none; - padding-left: 0; -} - -div.classindex span.ai { - display: inline-block; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - background-color: white; - color: black; - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 12px; - margin-right: 8px; -} - -td.indexkey { - background-color: #EBEFF6; - font-weight: bold; - border: 1px solid #C4CFE5; - margin: 2px 0px 2px 0; - padding: 2px 10px; - white-space: nowrap; - vertical-align: top; -} - -td.indexvalue { - background-color: #EBEFF6; - border: 1px solid #C4CFE5; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #EEF1F7; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -/* @end */ - -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #A3B4D7; -} - -th.dirtab { - background: #EBEFF6; - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid #4A6AAA; -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: cyan; - box-shadow: 0 0 15px cyan; -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memSeparator { - border-bottom: 1px solid #DEE4F0; - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight { - width: 100%; -} - -.memTemplParams { - color: #4665A2; - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtemplate { - font-size: 80%; - color: #4665A2; - font-weight: normal; - margin-left: 9px; -} - -.memnav { - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px cyan; -} - -.memname { - font-weight: bold; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 0px 6px 0px; - color: #253555; - font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - /* opera specific markup */ - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; - border-top-left-radius: 4px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 4px; - -moz-border-radius-topleft: 4px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 4px; - -webkit-border-top-left-radius: 4px; - -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 10px 2px 10px; - background-color: #FBFCFD; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: #FFFFFF; - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} -.paramname code { - line-height: 14px; -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir { - font-family: "courier new",courier,monospace; - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: #728DC1; - border-top:1px solid #5373B4; - border-left:1px solid #5373B4; - border-right:1px solid #C4CFE5; - border-bottom:1px solid #C4CFE5; - text-shadow: none; - color: white; - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view inside a (index) page */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid #9CAFD4; - border-bottom: 1px solid #9CAFD4; - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.even { - padding-left: 6px; - background-color: #F7F8FB; -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: #3D578C; -} - -.arrow { - color: #9CAFD4; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - font-size: 80%; - display: inline-block; - width: 16px; - height: 22px; -} - -.icon { - font-family: Arial, Helvetica; - font-weight: bold; - font-size: 12px; - height: 14px; - width: 16px; - display: inline-block; - background-color: #728DC1; - color: white; - text-align: center; - border-radius: 4px; - margin-left: 2px; - margin-right: 2px; -} - -.icona { - width: 24px; - height: 22px; - display: inline-block; -} - -.iconfopen { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderopen.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.iconfclosed { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderclosed.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.icondoc { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('doc.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -table.directory { - font: 400 14px Roboto,sans-serif; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: #2A3D61; -} - -table.doxtable caption { - caption-side: top; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - /*width: 100%;*/ - margin-bottom: 10px; - border: 1px solid #A8B8D9; - border-spacing: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid #A8B8D9; - /*width: 100%;*/ -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - font-size: 90%; - color: #253555; - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid #A8B8D9; -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: url('tab_b.png'); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image:url('tab_b.png'); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:url('bc_s.png'); - background-repeat:no-repeat; - background-position:right; - color:#364D7C; -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; - color: #283A5D; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color:#6884BD; -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color:#364D7C; - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -table.classindex -{ - margin: 10px; - white-space: nowrap; - margin-left: 3%; - margin-right: 3%; - width: 94%; - border: 0; - border-spacing: 0; - padding: 0; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image:url('nav_h.png'); - background-repeat:repeat-x; - background-color: #F9FAFC; - margin: 0px; - border-bottom: 1px solid #C4CFE5; -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -dl -{ - padding: 0 0 0 10px; -} - -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ -dl.section -{ - margin-left: 0px; - padding-left: 0px; -} - -dl.note -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00D000; -} - -dl.deprecated -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #505050; -} - -dl.todo -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #00C0E0; -} - -dl.test -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #3030E0; -} - -dl.bug -{ - margin-left:-7px; - padding-left: 3px; - border-left:4px solid; - border-color: #C08050; -} - -dl.section dd { - margin-bottom: 6px; -} - - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectalign -{ - vertical-align: middle; -} - -#projectname -{ - font: 300% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font: 120% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font: 50% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid #5373B4; -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -div.zoom -{ - border: 1px solid #90A5CE; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:#334975; - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; -} - -dl.citelist dd { - margin:2px 0; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: #F4F6FA; - border: 1px solid #D8DFEE; - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 8px 10px 10px; - width: 200px; -} - -div.toc li { - background: url("bdwn.png") no-repeat scroll 0 5px transparent; - font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -div.toc h3 { - font: bold 12px/1.2 Arial,FreeSans,sans-serif; - color: #4665A2; - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 30px; -} - -div.toc li.level4 { - margin-left: 45px; -} - -.inherit_header { - font-weight: bold; - color: gray; - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - white-space: nowrap; - background-color: white; - border: 1px solid gray; - border-radius: 4px 4px 4px 4px; - box-shadow: 1px 1px 7px gray; - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: grey; - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: #006318; -} - -#powerTip div { - margin: 0px; - padding: 0px; - font: 12px/16px Roboto,sans-serif; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #ffffff; - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before { - border-top-color: #808080; - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #ffffff; - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: #808080; - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: #ffffff; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: #ffffff; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - diff --git a/hcp/doxygen/html/doxygen.png b/hcp/doxygen/html/doxygen.png deleted file mode 100644 index 3ff17d807fd8aa003bed8bb2a69e8f0909592fd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3779 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 diff --git a/hcp/doxygen/html/dynsections.js b/hcp/doxygen/html/dynsections.js deleted file mode 100644 index 1e6bf07..0000000 --- a/hcp/doxygen/html/dynsections.js +++ /dev/null @@ -1,104 +0,0 @@ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} - -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); -} - -function toggleLevel(level) -{ - $('table.directory tr').each(function() { - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l - - - - - -Host Communication Protocol: File List - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    File List
    -
    -
    -
    Here is a list of all files with brief descriptions:
    -
    [detail level 12]
    - - - - - - - - - - - - -
      inc
     fpc_com_chain.hCommunication chain type definitions
     fpc_com_link.hCommunication link interface
     fpc_com_packets.hCommunication packet type definitions
     fpc_com_result.hCommunication result type definitions
     fpc_com_transport.hCommunication transport interface
     fpc_hcp.hHost Communication Protocol interface
     fpc_hcp_common.hHost Communication Protocol common type definitions
      src
     fpc_com_link.cCommunication link layer implementation
     fpc_com_transport.cCommunication transport layer implementation
     fpc_hcp.cHost Communication Protocol implementation
    -
    -
    -
    - - - - diff --git a/hcp/doxygen/html/files.js b/hcp/doxygen/html/files.js deleted file mode 100644 index 0a216ca..0000000 --- a/hcp/doxygen/html/files.js +++ /dev/null @@ -1,5 +0,0 @@ -var files = -[ - [ "inc", "dir_bfccd401955b95cf8c75461437045ac0.html", "dir_bfccd401955b95cf8c75461437045ac0" ], - [ "src", "dir_68267d1309a1af8e8297ef4c3efbcdba.html", "dir_68267d1309a1af8e8297ef4c3efbcdba" ] -]; \ No newline at end of file diff --git a/hcp/doxygen/html/folderclosed.png b/hcp/doxygen/html/folderclosed.png deleted file mode 100644 index bb8ab35edce8e97554e360005ee9fc5bffb36e66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA diff --git a/hcp/doxygen/html/fpc__com__chain_8h.html b/hcp/doxygen/html/fpc__com__chain_8h.html deleted file mode 100644 index c91c9e8..0000000 --- a/hcp/doxygen/html/fpc__com__chain_8h.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - -Host Communication Protocol: inc/fpc_com_chain.h File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    fpc_com_chain.h File Reference
    -
    -
    - -

    Communication chain type definitions. -More...

    -
    #include <stdint.h>
    -#include "fpc_com_result.h"
    -#include "fpc_hcp_common.h"
    -#include "fpc_com_packets.h"
    -
    -Include dependency graph for fpc_com_chain.h:
    -
    -
    -
    -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    -
    -
    -
    -

    Go to the source code of this file.

    - - - - - - -

    -Data Structures

    struct  fpc_com_chain_private
     
    struct  fpc_com_chain
     
    - - - - - - - -

    -Typedefs

    typedef struct fpc_com_chain_private fpc_com_chain_private_t
     Communication chain private variables. More...
     
    typedef struct fpc_com_chain fpc_com_chain_t
     Communication chain. More...
     
    - - - - -

    -Enumerations

    enum  fpc_com_chain_dir_t {
    -  FPC_COM_CHAIN_TX = 0, -
    -  FPC_COM_CHAIN_RX = 1 -
    - }
     Communication chain direction type. More...
     
    -

    Detailed Description

    -

    Communication chain type definitions.

    - -

    Definition in file fpc_com_chain.h.

    -

    Typedef Documentation

    - -
    -
    - -

    Communication chain private variables.

    - -

    Definition at line 34 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    typedef struct fpc_com_chain fpc_com_chain_t
    -
    - -

    Communication chain.

    - -

    Definition at line 48 of file fpc_com_chain.h.

    - -
    -
    -

    Enumeration Type Documentation

    - -
    -
    - - - - -
    enum fpc_com_chain_dir_t
    -
    - -

    Communication chain direction type.

    - - - -
    Enumerator
    FPC_COM_CHAIN_TX  -
    FPC_COM_CHAIN_RX  -
    - -

    Definition at line 149 of file fpc_com_chain.h.

    - -
    -
    -
    -
    - - - - diff --git a/hcp/doxygen/html/fpc__com__chain_8h.js b/hcp/doxygen/html/fpc__com__chain_8h.js deleted file mode 100644 index a70f492..0000000 --- a/hcp/doxygen/html/fpc__com__chain_8h.js +++ /dev/null @@ -1,11 +0,0 @@ -var fpc__com__chain_8h = -[ - [ "fpc_com_chain_private", "structfpc__com__chain__private.html", "structfpc__com__chain__private" ], - [ "fpc_com_chain", "structfpc__com__chain.html", "structfpc__com__chain" ], - [ "fpc_com_chain_private_t", "fpc__com__chain_8h.html#a0983b70df0d560f35537acc24ecc0d0d", null ], - [ "fpc_com_chain_t", "fpc__com__chain_8h.html#a1530dd4e8729e5f546a96abc5ac0a6de", null ], - [ "fpc_com_chain_dir_t", "fpc__com__chain_8h.html#aed3b93f1297ab69d5bd87603d4d00005", [ - [ "FPC_COM_CHAIN_TX", "fpc__com__chain_8h.html#aed3b93f1297ab69d5bd87603d4d00005afe8870bc644ab21ffad73d3045febd4d", null ], - [ "FPC_COM_CHAIN_RX", "fpc__com__chain_8h.html#aed3b93f1297ab69d5bd87603d4d00005aa50bc934637a1ceea907810ccdd36e1c", null ] - ] ] -]; \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__chain_8h__dep__incl.map b/hcp/doxygen/html/fpc__com__chain_8h__dep__incl.map deleted file mode 100644 index 41888bd..0000000 --- a/hcp/doxygen/html/fpc__com__chain_8h__dep__incl.map +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/hcp/doxygen/html/fpc__com__chain_8h__dep__incl.md5 b/hcp/doxygen/html/fpc__com__chain_8h__dep__incl.md5 deleted file mode 100644 index fb067aa..0000000 --- a/hcp/doxygen/html/fpc__com__chain_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -1da3230b9ede79419647e0f9db2fcf4a \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__chain_8h__dep__incl.svg b/hcp/doxygen/html/fpc__com__chain_8h__dep__incl.svg deleted file mode 100644 index 72cca7f..0000000 --- a/hcp/doxygen/html/fpc__com__chain_8h__dep__incl.svg +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - -inc/fpc_com_chain.h - - -Node1 - -inc/fpc_com_chain.h - - -Node2 - - -inc/fpc_com_link.h - - - - -Node1->Node2 - - - - -Node5 - - -inc/fpc_com_transport.h - - - - -Node1->Node5 - - - - -Node6 - - -inc/fpc_hcp.h - - - - -Node1->Node6 - - - - -Node3 - - -src/fpc_com_link.c - - - - -Node2->Node3 - - - - -Node4 - - -src/fpc_com_transport.c - - - - -Node2->Node4 - - - - -Node5->Node4 - - - - -Node7 - - -src/fpc_hcp.c - - - - -Node6->Node7 - - - - - diff --git a/hcp/doxygen/html/fpc__com__chain_8h__incl.map b/hcp/doxygen/html/fpc__com__chain_8h__incl.map deleted file mode 100644 index 65def15..0000000 --- a/hcp/doxygen/html/fpc__com__chain_8h__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/hcp/doxygen/html/fpc__com__chain_8h__incl.md5 b/hcp/doxygen/html/fpc__com__chain_8h__incl.md5 deleted file mode 100644 index 6475780..0000000 --- a/hcp/doxygen/html/fpc__com__chain_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -f3463291a698aa7de197e31a9e7ef155 \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__chain_8h__incl.svg b/hcp/doxygen/html/fpc__com__chain_8h__incl.svg deleted file mode 100644 index 77c3842..0000000 --- a/hcp/doxygen/html/fpc__com__chain_8h__incl.svg +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - -inc/fpc_com_chain.h - - -Node1 - -inc/fpc_com_chain.h - - -Node2 - -stdint.h - - -Node1->Node2 - - - - -Node3 - - -fpc_com_result.h - - - - -Node1->Node3 - - - - -Node4 - - -fpc_hcp_common.h - - - - -Node1->Node4 - - - - -Node6 - - -fpc_com_packets.h - - - - -Node1->Node6 - - - - -Node3->Node2 - - - - -Node4->Node2 - - - - -Node5 - -stdbool.h - - -Node4->Node5 - - - - -Node6->Node2 - - - - - diff --git a/hcp/doxygen/html/fpc__com__chain_8h_source.html b/hcp/doxygen/html/fpc__com__chain_8h_source.html deleted file mode 100644 index 77f33e3..0000000 --- a/hcp/doxygen/html/fpc__com__chain_8h_source.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - -Host Communication Protocol: inc/fpc_com_chain.h Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    fpc_com_chain.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2020 Fingerprint Cards AB
    3  *
    4  * Licensed under the Apache License, Version 2.0 (the "License");
    5  * you may not use this file except in compliance with the License.
    6  * You may obtain a copy of the License at
    7  *
    8  * https://www.apache.org/licenses/LICENSE-2.0
    9  *
    10  * Unless required by applicable law or agreed to in writing, software
    11  * distributed under the License is distributed on an "AS IS" BASIS,
    12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  * See the License for the specific language governing permissions and
    14  * limitations under the License.
    15  */
    16 
    22 #ifndef FPC_COM_CHAIN_H
    23 #define FPC_COM_CHAIN_H
    24 
    25 #include <stdint.h>
    26 
    27 #include "fpc_com_result.h"
    28 #include "fpc_hcp_common.h"
    29 #include "fpc_com_packets.h"
    30 
    40  uint16_t hcp_seq_len;
    42  uint16_t hcp_seq_nr;
    43 };
    44 
    50 struct fpc_com_chain {
    53 
    59  void *(*argument_allocator)(fpc_hcp_cmd_t cmd, fpc_hcp_arg_t arg, uint16_t size,
    60  bool *free_data, void *context);
    62  void (*argument_free)(fpc_hcp_cmd_t cmd, fpc_hcp_arg_data_t *arg_data, void *context);
    66  uint32_t (*crc_calc)(uint32_t start, const void *data, uint32_t size);
    67 
    73  fpc_com_result_t (*app_tx)(fpc_com_chain_t *chain);
    75  fpc_com_result_t (*app_rx)(fpc_com_chain_t *chain);
    77  uint16_t (*app_overhead_get)(uint16_t *offset);
    79  uint16_t app_packet_size[2];
    81  uint16_t app_mtu_size[2];
    83  uint8_t *app_mtu_buffer[2];
    95  uint16_t (*tsp_overhead_get)(uint16_t *offset);
    103  uint16_t (*link_overhead_get)(uint16_t *offset);
    113  fpc_com_result_t (*phy_tx)(uint16_t size, const uint8_t *buffer, uint32_t timeout,
    114  void *session);
    116  fpc_com_result_t (*phy_rx)(uint16_t size, uint8_t *buffer, uint32_t timeout,
    117  void *session);
    119  uint16_t phy_mtu_size[2];
    121  uint8_t *phy_mtu_buffer[2];
    123  uint32_t phy_timeout_tx;
    125  uint32_t phy_timeout_rx;
    130 
    137  void *session;
    143  void *context;
    144 };
    145 
    149 typedef enum {
    153 
    154 #endif /* FPC_COM_CHAIN_H */
    uint16_t fpc_hcp_cmd_t
    - - -
    Communication result type definitions.
    - -
    Application Command Packet.
    -
    uint32_t phy_timeout_tx
    -
    fpc_com_chain_dir_t
    Communication chain direction type.
    -
    void * session
    User session pointer. User private stuff, to be able to pass necessary info from the layer that calls...
    - -
    void * context
    User context pointer. User private stuff, to be able to pass nessecary context to argument_allocator ...
    -
    fpc_com_channel_t channel
    -
    Command Argument.
    - -
    uint32_t phy_timeout_rx
    - -
    uint16_t fpc_hcp_arg_t
    -
    uint8_t fpc_com_result_t
    -
    fpc_hcp_packet_t * hcp_packet
    Definition: fpc_com_chain.h:38
    -
    fpc_com_chain_private_t private_vars
    -
    uint16_t fpc_com_channel_t
    - -
    Host Communication Protocol common type definitions.
    -
    Communication packet type definitions.
    - -
    -
    - - - - diff --git a/hcp/doxygen/html/fpc__com__link_8c.html b/hcp/doxygen/html/fpc__com__link_8c.html deleted file mode 100644 index a39bf0b..0000000 --- a/hcp/doxygen/html/fpc__com__link_8c.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - - -Host Communication Protocol: src/fpc_com_link.c File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    fpc_com_link.c File Reference
    -
    -
    - -

    Communication link layer implementation. -More...

    -
    #include <string.h>
    -#include <stdlib.h>
    -#include "fpc_com_link.h"
    -
    -Include dependency graph for fpc_com_link.c:
    -
    -
    -
    -
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - -

    -Functions

    fpc_com_result_t fpc_com_link_transmit (fpc_com_packet_link_t *packet, fpc_com_chain_t *chain)
     Sends a packet over the physical link in blocking mode. More...
     
    fpc_com_result_t fpc_com_link_receive (fpc_com_packet_link_t *packet, fpc_com_chain_t *chain)
     Receives a packet from the physical link. More...
     
    uint16_t fpc_com_link_get_overhead (uint16_t *offset)
     Returns the overhead of the layer. More...
     
    -

    Detailed Description

    -

    Communication link layer implementation.

    - -

    Definition in file fpc_com_link.c.

    -

    Function Documentation

    - -
    -
    - - - - - - - - -
    uint16_t fpc_com_link_get_overhead (uint16_t * offset)
    -
    - -

    Returns the overhead of the layer.

    -
    Parameters
    - - -
    [out]offsetThe offset to the packet data.
    -
    -
    -
    Returns
    Overhead size in bytes.
    - -

    Definition at line 126 of file fpc_com_link.c.

    - -

    References fpc_com_packet_link::channel, fpc_com_packet_link::crc, and fpc_com_packet_link::size.

    - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    fpc_com_result_t fpc_com_link_receive (fpc_com_packet_link_tpacket,
    fpc_com_chain_tchain 
    )
    -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    fpc_com_result_t fpc_com_link_transmit (fpc_com_packet_link_tpacket,
    fpc_com_chain_tchain 
    )
    -
    - -

    Sends a packet over the physical link in blocking mode.

    -
    Parameters
    - - - -
    [in]packetPacket to transmit.
    [in]chainThe communication chain to use.
    -
    -
    -
    Returns
    fpc_com_result_t
    - -

    Definition at line 27 of file fpc_com_link.c.

    - -

    References fpc_com_packet_link::channel, fpc_com_packet_link::crc, fpc_com_chain::crc_calc, fpc_com_packet_link::data, FPC_COM_ACK, FPC_COM_CHAIN_TX, fpc_com_link_get_overhead(), FPC_COM_RESULT_INVALID_ARGUMENT, FPC_COM_RESULT_IO_ERROR, FPC_COM_RESULT_OK, FPC_COM_RESULT_TIMEOUT, fpc_com_chain::phy_mtu_buffer, fpc_com_chain::phy_rx, fpc_com_chain::phy_timeout_rx, fpc_com_chain::phy_timeout_tx, fpc_com_chain::phy_tx, fpc_com_chain::session, and fpc_com_packet_link::size.

    - -

    -Here is the call graph for this function:
    -
    -
    -
    -
    -

    - -
    -
    -
    -
    - - - - diff --git a/hcp/doxygen/html/fpc__com__link_8c.js b/hcp/doxygen/html/fpc__com__link_8c.js deleted file mode 100644 index 7a7d60f..0000000 --- a/hcp/doxygen/html/fpc__com__link_8c.js +++ /dev/null @@ -1,6 +0,0 @@ -var fpc__com__link_8c = -[ - [ "fpc_com_link_get_overhead", "fpc__com__link_8c.html#a3e60e21a5ac4ad4881e4929de2f3c2f4", null ], - [ "fpc_com_link_receive", "fpc__com__link_8c.html#ae64b80cd91fbfe44abc06dc52eacf739", null ], - [ "fpc_com_link_transmit", "fpc__com__link_8c.html#a43a8a308255ea41e7b7cdefd63a90d14", null ] -]; \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__link_8c__incl.map b/hcp/doxygen/html/fpc__com__link_8c__incl.map deleted file mode 100644 index f80ec9e..0000000 --- a/hcp/doxygen/html/fpc__com__link_8c__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/hcp/doxygen/html/fpc__com__link_8c__incl.md5 b/hcp/doxygen/html/fpc__com__link_8c__incl.md5 deleted file mode 100644 index 372b027..0000000 --- a/hcp/doxygen/html/fpc__com__link_8c__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -5ae4569dea06540c6706ee9e9b27db36 \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__link_8c__incl.svg b/hcp/doxygen/html/fpc__com__link_8c__incl.svg deleted file mode 100644 index 26e6a9f..0000000 --- a/hcp/doxygen/html/fpc__com__link_8c__incl.svg +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - -src/fpc_com_link.c - - -Node1 - -src/fpc_com_link.c - - -Node2 - -string.h - - -Node1->Node2 - - - - -Node3 - -stdlib.h - - -Node1->Node3 - - - - -Node4 - - -fpc_com_link.h - - - - -Node1->Node4 - - - - -Node5 - -stdbool.h - - -Node4->Node5 - - - - -Node6 - -stdint.h - - -Node4->Node6 - - - - -Node7 - - -fpc_com_result.h - - - - -Node4->Node7 - - - - -Node8 - - -fpc_com_chain.h - - - - -Node4->Node8 - - - - -Node7->Node6 - - - - -Node8->Node6 - - - - -Node8->Node7 - - - - -Node9 - - -fpc_hcp_common.h - - - - -Node8->Node9 - - - - -Node10 - - -fpc_com_packets.h - - - - -Node8->Node10 - - - - -Node9->Node5 - - - - -Node9->Node6 - - - - -Node10->Node6 - - - - - diff --git a/hcp/doxygen/html/fpc__com__link_8c_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.map b/hcp/doxygen/html/fpc__com__link_8c_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.map deleted file mode 100644 index 621ae0a..0000000 --- a/hcp/doxygen/html/fpc__com__link_8c_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/hcp/doxygen/html/fpc__com__link_8c_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.md5 b/hcp/doxygen/html/fpc__com__link_8c_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.md5 deleted file mode 100644 index 7012d06..0000000 --- a/hcp/doxygen/html/fpc__com__link_8c_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.md5 +++ /dev/null @@ -1 +0,0 @@ -1079db44f9fcfecbed78b0a2bbb98b54 \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__link_8c_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.svg b/hcp/doxygen/html/fpc__com__link_8c_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.svg deleted file mode 100644 index 1fce018..0000000 --- a/hcp/doxygen/html/fpc__com__link_8c_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - -fpc_com_link_transmit - - -Node1 - -fpc_com_link_transmit - - -Node2 - - -fpc_com_link_get_overhead - - - - -Node1->Node2 - - - - - diff --git a/hcp/doxygen/html/fpc__com__link_8c_source.html b/hcp/doxygen/html/fpc__com__link_8c_source.html deleted file mode 100644 index 49f5ee4..0000000 --- a/hcp/doxygen/html/fpc__com__link_8c_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - -Host Communication Protocol: src/fpc_com_link.c Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    fpc_com_link.c
    -
    -
    -Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2020 Fingerprint Cards AB
    3  *
    4  * Licensed under the Apache License, Version 2.0 (the "License");
    5  * you may not use this file except in compliance with the License.
    6  * You may obtain a copy of the License at
    7  *
    8  * https://www.apache.org/licenses/LICENSE-2.0
    9  *
    10  * Unless required by applicable law or agreed to in writing, software
    11  * distributed under the License is distributed on an "AS IS" BASIS,
    12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  * See the License for the specific language governing permissions and
    14  * limitations under the License.
    15  */
    16 
    22 #include <string.h>
    23 #include <stdlib.h>
    24 
    25 #include "fpc_com_link.h"
    26 
    28 {
    29  uint32_t ack;
    30  uint16_t size;
    31  fpc_com_result_t result;
    32 
    33  if (packet == NULL) {
    35  goto exit;
    36  }
    37 
    38  /* Calculate CRC for payload */
    39  packet->crc = chain->crc_calc(0, packet->data, packet->size);
    40 
    41  /* Get total size to be transfered over PHY layer */
    42  size = packet->size + fpc_com_link_get_overhead(NULL);
    43 
    45  *((uint16_t *)(chain->phy_mtu_buffer[FPC_COM_CHAIN_TX] + sizeof(packet->channel)))
    46  = packet->size;
    47  /* Copy CRC to PHY mtu buffer */
    48  memcpy(packet->data + packet->size, &packet->crc, sizeof(packet->crc));
    49 
    50  /* Send Packet */
    51  result = chain->phy_tx(size, chain->phy_mtu_buffer[FPC_COM_CHAIN_TX], chain->phy_timeout_tx,
    52  chain->session);
    53  if (result != FPC_COM_RESULT_OK) {
    54  goto exit;
    55  }
    56 
    57  /* Receive ACK */
    58  result = chain->phy_rx(sizeof(ack), (uint8_t *)&ack, chain->phy_timeout_rx, chain->session);
    59  /* Handle no ack and timeout as IO error */
    60  if (ack != FPC_COM_ACK || result == FPC_COM_RESULT_TIMEOUT) {
    61  result = FPC_COM_RESULT_IO_ERROR;
    62  goto exit;
    63  }
    64  /* Handle rest as normal error */
    65  if (result != FPC_COM_RESULT_OK) {
    66  goto exit;
    67  }
    68 
    69 exit:
    70  return result;
    71 }
    72 
    74 {
    75  bool status;
    76  uint32_t ack = FPC_COM_ACK;
    77  const uint8_t header_size = sizeof(packet->channel) + sizeof(packet->size);
    78  fpc_com_result_t result;
    79 
    80  if (packet == NULL) {
    82  goto exit;
    83  }
    84 
    85  /* Receive Header */
    86  result = chain->phy_rx(header_size, chain->phy_mtu_buffer[FPC_COM_CHAIN_RX],
    87  chain->phy_timeout_rx, chain->session);
    88  if (result != FPC_COM_RESULT_OK) {
    89  goto exit;
    90  }
    91 
    93  packet->size = *((uint16_t *) (chain->phy_mtu_buffer[FPC_COM_CHAIN_RX]
    94  + sizeof(fpc_com_channel_t)));
    95  packet->data = chain->phy_mtu_buffer[FPC_COM_CHAIN_RX] + header_size;
    96 
    97  /* Check if packet size is valid */
    98  if (chain->phy_mtu_size[FPC_COM_CHAIN_RX]
    99  < (header_size + packet->size + sizeof(packet->crc))) {
    100  result = FPC_COM_RESULT_IO_ERROR;
    101  goto exit;
    102  }
    103 
    104  /* Receive Payload */
    105  result = chain->phy_rx(packet->size + sizeof(packet->crc), packet->data,
    106  chain->phy_timeout_rx, chain->session);
    107  if (result != FPC_COM_RESULT_OK) {
    108  goto exit;
    109  }
    110 
    111  /* Check incoming packet CRC */
    112  memcpy(&packet->crc, packet->data + packet->size, sizeof(packet->crc));
    113  status = (packet->crc == chain->crc_calc(0, packet->data, packet->size));
    114  if (!status) {
    115  result = FPC_COM_RESULT_IO_ERROR;
    116  goto exit;
    117  }
    118 
    119  /* Send ACK */
    120  result = chain->phy_tx(sizeof(ack), (uint8_t *)&ack, chain->phy_timeout_tx, chain->session);
    121 
    122 exit:
    123  return result;
    124 }
    125 
    126 uint16_t fpc_com_link_get_overhead(uint16_t *offset)
    127 {
    128  fpc_com_packet_link_t *packet;
    129  static const uint16_t internal_offset = sizeof(packet->channel) + sizeof(packet->size);
    130 
    131  if (offset) {
    132  *offset = internal_offset;
    133  }
    134  return internal_offset + sizeof(packet->crc);
    135 }
    - -
    uint8_t * phy_mtu_buffer[2]
    -
    uint16_t phy_mtu_size[2]
    - - -
    fpc_com_result_t(* phy_rx)(uint16_t size, uint8_t *buffer, uint32_t timeout, void *session)
    -
    uint32_t phy_timeout_tx
    - -
    void * session
    User session pointer. User private stuff, to be able to pass necessary info from the layer that calls...
    - - - -
    uint32_t(* crc_calc)(uint32_t start, const void *data, uint32_t size)
    Definition: fpc_com_chain.h:66
    -
    #define FPC_COM_ACK
    - -
    fpc_com_result_t(* phy_tx)(uint16_t size, const uint8_t *buffer, uint32_t timeout, void *session)
    -
    uint32_t phy_timeout_rx
    - - -
    uint8_t fpc_com_result_t
    - -
    uint16_t fpc_com_channel_t
    - - - - -
    -
    - - - - diff --git a/hcp/doxygen/html/fpc__com__link_8h.html b/hcp/doxygen/html/fpc__com__link_8h.html deleted file mode 100644 index 5340057..0000000 --- a/hcp/doxygen/html/fpc__com__link_8h.html +++ /dev/null @@ -1,242 +0,0 @@ - - - - - - -Host Communication Protocol: inc/fpc_com_link.h File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    fpc_com_link.h File Reference
    -
    -
    - -

    Communication link interface. -More...

    -
    #include <stdbool.h>
    -#include <stdint.h>
    -#include "fpc_com_result.h"
    -#include "fpc_com_chain.h"
    -
    -Include dependency graph for fpc_com_link.h:
    -
    -
    -
    -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    -
    -
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - -

    -Functions

    fpc_com_result_t fpc_com_link_transmit (fpc_com_packet_link_t *packet, fpc_com_chain_t *chain)
     Sends a packet over the physical link in blocking mode. More...
     
    fpc_com_result_t fpc_com_link_receive (fpc_com_packet_link_t *packet, fpc_com_chain_t *chain)
     Receives a packet from the physical link. More...
     
    uint16_t fpc_com_link_get_overhead (uint16_t *offset)
     Returns the overhead of the layer. More...
     
    -

    Detailed Description

    -

    Communication link interface.

    - -

    Definition in file fpc_com_link.h.

    -

    Function Documentation

    - -
    -
    - - - - - - - - -
    uint16_t fpc_com_link_get_overhead (uint16_t * offset)
    -
    - -

    Returns the overhead of the layer.

    -
    Parameters
    - - -
    [out]offsetThe offset to the packet data.
    -
    -
    -
    Returns
    Overhead size in bytes.
    - -

    Definition at line 126 of file fpc_com_link.c.

    - -

    References fpc_com_packet_link::channel, fpc_com_packet_link::crc, and fpc_com_packet_link::size.

    - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    fpc_com_result_t fpc_com_link_receive (fpc_com_packet_link_tpacket,
    fpc_com_chain_tchain 
    )
    -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    fpc_com_result_t fpc_com_link_transmit (fpc_com_packet_link_tpacket,
    fpc_com_chain_tchain 
    )
    -
    - -

    Sends a packet over the physical link in blocking mode.

    -
    Parameters
    - - - -
    [in]packetPacket to transmit.
    [in]chainThe communication chain to use.
    -
    -
    -
    Returns
    fpc_com_result_t
    - -

    Definition at line 27 of file fpc_com_link.c.

    - -

    References fpc_com_packet_link::channel, fpc_com_packet_link::crc, fpc_com_chain::crc_calc, fpc_com_packet_link::data, FPC_COM_ACK, FPC_COM_CHAIN_TX, fpc_com_link_get_overhead(), FPC_COM_RESULT_INVALID_ARGUMENT, FPC_COM_RESULT_IO_ERROR, FPC_COM_RESULT_OK, FPC_COM_RESULT_TIMEOUT, fpc_com_chain::phy_mtu_buffer, fpc_com_chain::phy_rx, fpc_com_chain::phy_timeout_rx, fpc_com_chain::phy_timeout_tx, fpc_com_chain::phy_tx, fpc_com_chain::session, and fpc_com_packet_link::size.

    - -

    -Here is the call graph for this function:
    -
    -
    -
    -
    -

    - -
    -
    -
    -
    - - - - diff --git a/hcp/doxygen/html/fpc__com__link_8h.js b/hcp/doxygen/html/fpc__com__link_8h.js deleted file mode 100644 index 31e19e9..0000000 --- a/hcp/doxygen/html/fpc__com__link_8h.js +++ /dev/null @@ -1,6 +0,0 @@ -var fpc__com__link_8h = -[ - [ "fpc_com_link_get_overhead", "fpc__com__link_8h.html#a3e60e21a5ac4ad4881e4929de2f3c2f4", null ], - [ "fpc_com_link_receive", "fpc__com__link_8h.html#ae64b80cd91fbfe44abc06dc52eacf739", null ], - [ "fpc_com_link_transmit", "fpc__com__link_8h.html#a43a8a308255ea41e7b7cdefd63a90d14", null ] -]; \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__link_8h__dep__incl.map b/hcp/doxygen/html/fpc__com__link_8h__dep__incl.map deleted file mode 100644 index e1b2862..0000000 --- a/hcp/doxygen/html/fpc__com__link_8h__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hcp/doxygen/html/fpc__com__link_8h__dep__incl.md5 b/hcp/doxygen/html/fpc__com__link_8h__dep__incl.md5 deleted file mode 100644 index dd31e89..0000000 --- a/hcp/doxygen/html/fpc__com__link_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -25bb356645f94e2250849d59b6042d5f \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__link_8h__dep__incl.svg b/hcp/doxygen/html/fpc__com__link_8h__dep__incl.svg deleted file mode 100644 index befe4d2..0000000 --- a/hcp/doxygen/html/fpc__com__link_8h__dep__incl.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - -inc/fpc_com_link.h - - -Node1 - -inc/fpc_com_link.h - - -Node2 - - -src/fpc_com_link.c - - - - -Node1->Node2 - - - - -Node3 - - -src/fpc_com_transport.c - - - - -Node1->Node3 - - - - - diff --git a/hcp/doxygen/html/fpc__com__link_8h__incl.map b/hcp/doxygen/html/fpc__com__link_8h__incl.map deleted file mode 100644 index 905eabf..0000000 --- a/hcp/doxygen/html/fpc__com__link_8h__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/hcp/doxygen/html/fpc__com__link_8h__incl.md5 b/hcp/doxygen/html/fpc__com__link_8h__incl.md5 deleted file mode 100644 index fcda822..0000000 --- a/hcp/doxygen/html/fpc__com__link_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -2693b0444fc65501786e794e5550d85c \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__link_8h__incl.svg b/hcp/doxygen/html/fpc__com__link_8h__incl.svg deleted file mode 100644 index a6f11c1..0000000 --- a/hcp/doxygen/html/fpc__com__link_8h__incl.svg +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - -inc/fpc_com_link.h - - -Node1 - -inc/fpc_com_link.h - - -Node2 - -stdbool.h - - -Node1->Node2 - - - - -Node3 - -stdint.h - - -Node1->Node3 - - - - -Node4 - - -fpc_com_result.h - - - - -Node1->Node4 - - - - -Node5 - - -fpc_com_chain.h - - - - -Node1->Node5 - - - - -Node4->Node3 - - - - -Node5->Node3 - - - - -Node5->Node4 - - - - -Node6 - - -fpc_hcp_common.h - - - - -Node5->Node6 - - - - -Node7 - - -fpc_com_packets.h - - - - -Node5->Node7 - - - - -Node6->Node2 - - - - -Node6->Node3 - - - - -Node7->Node3 - - - - - diff --git a/hcp/doxygen/html/fpc__com__link_8h_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.map b/hcp/doxygen/html/fpc__com__link_8h_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.map deleted file mode 100644 index 621ae0a..0000000 --- a/hcp/doxygen/html/fpc__com__link_8h_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/hcp/doxygen/html/fpc__com__link_8h_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.md5 b/hcp/doxygen/html/fpc__com__link_8h_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.md5 deleted file mode 100644 index 7012d06..0000000 --- a/hcp/doxygen/html/fpc__com__link_8h_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.md5 +++ /dev/null @@ -1 +0,0 @@ -1079db44f9fcfecbed78b0a2bbb98b54 \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__link_8h_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.svg b/hcp/doxygen/html/fpc__com__link_8h_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.svg deleted file mode 100644 index 1fce018..0000000 --- a/hcp/doxygen/html/fpc__com__link_8h_a43a8a308255ea41e7b7cdefd63a90d14_cgraph.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - -fpc_com_link_transmit - - -Node1 - -fpc_com_link_transmit - - -Node2 - - -fpc_com_link_get_overhead - - - - -Node1->Node2 - - - - - diff --git a/hcp/doxygen/html/fpc__com__link_8h_source.html b/hcp/doxygen/html/fpc__com__link_8h_source.html deleted file mode 100644 index 72874d3..0000000 --- a/hcp/doxygen/html/fpc__com__link_8h_source.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - -Host Communication Protocol: inc/fpc_com_link.h Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    fpc_com_link.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2020 Fingerprint Cards AB
    3  *
    4  * Licensed under the Apache License, Version 2.0 (the "License");
    5  * you may not use this file except in compliance with the License.
    6  * You may obtain a copy of the License at
    7  *
    8  * https://www.apache.org/licenses/LICENSE-2.0
    9  *
    10  * Unless required by applicable law or agreed to in writing, software
    11  * distributed under the License is distributed on an "AS IS" BASIS,
    12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  * See the License for the specific language governing permissions and
    14  * limitations under the License.
    15  */
    16 
    22 #ifndef FPC_COM_LINK_H
    23 #define FPC_COM_LINK_H
    24 
    25 #include <stdbool.h>
    26 #include <stdint.h>
    27 
    28 #include "fpc_com_result.h"
    29 #include "fpc_com_chain.h"
    30 
    31 #ifdef __cplusplus
    32 extern "C" {
    33 #endif /* __cplusplus */
    34 
    43 
    52 
    59 uint16_t fpc_com_link_get_overhead(uint16_t *offset);
    60 
    61 #ifdef __cplusplus
    62 }
    63 #endif /* __cplusplus */
    64 
    65 #endif /* FPC_COM_LINK_H */
    -
    Communication result type definitions.
    - - -
    Communication chain type definitions.
    -
    uint8_t fpc_com_result_t
    - - -
    -
    - - - - diff --git a/hcp/doxygen/html/fpc__com__packets_8h.html b/hcp/doxygen/html/fpc__com__packets_8h.html deleted file mode 100644 index cf73c5d..0000000 --- a/hcp/doxygen/html/fpc__com__packets_8h.html +++ /dev/null @@ -1,231 +0,0 @@ - - - - - - -Host Communication Protocol: inc/fpc_com_packets.h File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    fpc_com_packets.h File Reference
    -
    -
    - -

    Communication packet type definitions. -More...

    -
    #include <stdint.h>
    -
    -Include dependency graph for fpc_com_packets.h:
    -
    -
    -
    -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    -
    -
    -
    -

    Go to the source code of this file.

    - - - - - - -

    -Data Structures

    struct  fpc_com_packet_transport
     
    struct  fpc_com_packet_link
     
    - - - -

    -Macros

    #define FPC_COM_ACK   0x7f01ff7f
     
    - - - - - - - -

    -Typedefs

    typedef struct fpc_com_packet_transport fpc_com_packet_tsp_t
     
    typedef uint16_t fpc_com_channel_t
     
    typedef struct fpc_com_packet_link fpc_com_packet_link_t
     
    - - - -

    -Enumerations

    enum  fpc_com_channel {
    -  FPC_COM_CHANNEL_NONE = 0x00, -
    -  FPC_COM_CHANNEL_CLEAR = 0x01, -
    -  FPC_COM_CHANNEL_TLS = 0x02, -
    -  FPC_COM_CHANNEL_END = 0xFF -
    - }
     
    -

    Detailed Description

    -

    Communication packet type definitions.

    - -

    Definition in file fpc_com_packets.h.

    -

    Macro Definition Documentation

    - -
    -
    - - - - -
    #define FPC_COM_ACK   0x7f01ff7f
    -
    -

    Communication acknowledge definition

    - -

    Definition at line 32 of file fpc_com_packets.h.

    - -
    -
    -

    Typedef Documentation

    - -
    -
    - - - - -
    typedef uint16_t fpc_com_channel_t
    -
    -

    Communication channel type

    - -

    Definition at line 58 of file fpc_com_packets.h.

    - -
    -
    - -
    -
    - - - - -
    typedef struct fpc_com_packet_link fpc_com_packet_link_t
    -
    -

    Link layer packet

    - -
    -
    - -
    -
    -

    Transport layer packet.

    - -
    -
    -

    Enumeration Type Documentation

    - -
    -
    - - - - -
    enum fpc_com_channel
    -
    -

    Transport packet channels.

    - - - - - -
    Enumerator
    FPC_COM_CHANNEL_NONE  -
    FPC_COM_CHANNEL_CLEAR  -
    FPC_COM_CHANNEL_TLS  -
    FPC_COM_CHANNEL_END  -
    - -

    Definition at line 51 of file fpc_com_packets.h.

    - -
    -
    -
    -
    - - - - diff --git a/hcp/doxygen/html/fpc__com__packets_8h.js b/hcp/doxygen/html/fpc__com__packets_8h.js deleted file mode 100644 index 719f942..0000000 --- a/hcp/doxygen/html/fpc__com__packets_8h.js +++ /dev/null @@ -1,15 +0,0 @@ -var fpc__com__packets_8h = -[ - [ "fpc_com_packet_transport", "structfpc__com__packet__transport.html", "structfpc__com__packet__transport" ], - [ "fpc_com_packet_link", "structfpc__com__packet__link.html", "structfpc__com__packet__link" ], - [ "FPC_COM_ACK", "fpc__com__packets_8h.html#a4f4c239eb61e8e793498793c1be608f7", null ], - [ "fpc_com_channel_t", "fpc__com__packets_8h.html#a243c6cf0a9ab056a1fce6430bb88c2d8", null ], - [ "fpc_com_packet_link_t", "fpc__com__packets_8h.html#af6fc3a46c87f1ad2a452eb822f2a0942", null ], - [ "fpc_com_packet_tsp_t", "fpc__com__packets_8h.html#a056a2f08f90fe7e467988b2ddbc41f3c", null ], - [ "fpc_com_channel", "fpc__com__packets_8h.html#ad77ec293a161472c5ca6283ae1c944c8", [ - [ "FPC_COM_CHANNEL_NONE", "fpc__com__packets_8h.html#ad77ec293a161472c5ca6283ae1c944c8a82d8a35822a610caddc5c841e3a74a2a", null ], - [ "FPC_COM_CHANNEL_CLEAR", "fpc__com__packets_8h.html#ad77ec293a161472c5ca6283ae1c944c8aff1cc469181cd2df91ed52a2092748ed", null ], - [ "FPC_COM_CHANNEL_TLS", "fpc__com__packets_8h.html#ad77ec293a161472c5ca6283ae1c944c8ae9bbbecb694256ca41a9b57f101fb973", null ], - [ "FPC_COM_CHANNEL_END", "fpc__com__packets_8h.html#ad77ec293a161472c5ca6283ae1c944c8af73ea123cd946a1ef0109660569cd856", null ] - ] ] -]; \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__packets_8h__dep__incl.map b/hcp/doxygen/html/fpc__com__packets_8h__dep__incl.map deleted file mode 100644 index 590a765..0000000 --- a/hcp/doxygen/html/fpc__com__packets_8h__dep__incl.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/hcp/doxygen/html/fpc__com__packets_8h__dep__incl.md5 b/hcp/doxygen/html/fpc__com__packets_8h__dep__incl.md5 deleted file mode 100644 index 88f83de..0000000 --- a/hcp/doxygen/html/fpc__com__packets_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -061c95db64158805437ca80c13b84b7d \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__packets_8h__dep__incl.svg b/hcp/doxygen/html/fpc__com__packets_8h__dep__incl.svg deleted file mode 100644 index 45b3697..0000000 --- a/hcp/doxygen/html/fpc__com__packets_8h__dep__incl.svg +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - -inc/fpc_com_packets.h - - -Node1 - -inc/fpc_com_packets.h - - -Node2 - - -inc/fpc_com_chain.h - - - - -Node1->Node2 - - - - -Node3 - - -inc/fpc_com_link.h - - - - -Node2->Node3 - - - - -Node6 - - -inc/fpc_com_transport.h - - - - -Node2->Node6 - - - - -Node7 - - -inc/fpc_hcp.h - - - - -Node2->Node7 - - - - -Node4 - - -src/fpc_com_link.c - - - - -Node3->Node4 - - - - -Node5 - - -src/fpc_com_transport.c - - - - -Node3->Node5 - - - - -Node6->Node5 - - - - -Node8 - - -src/fpc_hcp.c - - - - -Node7->Node8 - - - - - diff --git a/hcp/doxygen/html/fpc__com__packets_8h__incl.map b/hcp/doxygen/html/fpc__com__packets_8h__incl.map deleted file mode 100644 index 2b9729a..0000000 --- a/hcp/doxygen/html/fpc__com__packets_8h__incl.map +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/hcp/doxygen/html/fpc__com__packets_8h__incl.md5 b/hcp/doxygen/html/fpc__com__packets_8h__incl.md5 deleted file mode 100644 index 8993b28..0000000 --- a/hcp/doxygen/html/fpc__com__packets_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -f1d62a394723cf9f4c0d14de4aab5e68 \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__packets_8h__incl.svg b/hcp/doxygen/html/fpc__com__packets_8h__incl.svg deleted file mode 100644 index c7079f1..0000000 --- a/hcp/doxygen/html/fpc__com__packets_8h__incl.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - -inc/fpc_com_packets.h - - -Node1 - -inc/fpc_com_packets.h - - -Node2 - -stdint.h - - -Node1->Node2 - - - - - diff --git a/hcp/doxygen/html/fpc__com__packets_8h_source.html b/hcp/doxygen/html/fpc__com__packets_8h_source.html deleted file mode 100644 index a9b983c..0000000 --- a/hcp/doxygen/html/fpc__com__packets_8h_source.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - -Host Communication Protocol: inc/fpc_com_packets.h Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    fpc_com_packets.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2020 Fingerprint Cards AB
    3  *
    4  * Licensed under the Apache License, Version 2.0 (the "License");
    5  * you may not use this file except in compliance with the License.
    6  * You may obtain a copy of the License at
    7  *
    8  * https://www.apache.org/licenses/LICENSE-2.0
    9  *
    10  * Unless required by applicable law or agreed to in writing, software
    11  * distributed under the License is distributed on an "AS IS" BASIS,
    12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  * See the License for the specific language governing permissions and
    14  * limitations under the License.
    15  */
    16 
    22 #ifndef FPC_COM_PACKETS_H
    23 #define FPC_COM_PACKETS_H
    24 
    25 #include <stdint.h>
    26 
    27 #ifdef __cplusplus
    28 extern "C" {
    29 #endif /* __cplusplus */
    30 
    32 #define FPC_COM_ACK 0x7f01ff7f
    33 
    37 typedef struct fpc_com_packet_transport {
    39  uint16_t size;
    41  uint16_t seq_len;
    43  uint16_t seq_nr;
    45  uint8_t *data;
    47 
    56 };
    58 typedef uint16_t fpc_com_channel_t;
    59 
    61 typedef struct fpc_com_packet_link {
    63  fpc_com_channel_t channel;
    65  uint16_t size;
    67  uint8_t *data;
    69  uint32_t crc;
    71 
    72 #ifdef __cplusplus
    73 }
    74 #endif /* __cplusplus */
    75 
    76 #endif /* FPC_COM_PACKETS_H */
    -
    struct fpc_com_packet_link fpc_com_packet_link_t
    -
    fpc_com_channel
    - - - - - - -
    struct fpc_com_packet_transport fpc_com_packet_tsp_t
    - - - - -
    uint16_t fpc_com_channel_t
    - - - -
    -
    - - - - diff --git a/hcp/doxygen/html/fpc__com__result_8h.html b/hcp/doxygen/html/fpc__com__result_8h.html deleted file mode 100644 index ba641c1..0000000 --- a/hcp/doxygen/html/fpc__com__result_8h.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - -Host Communication Protocol: inc/fpc_com_result.h File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    fpc_com_result.h File Reference
    -
    -
    - -

    Communication result type definitions. -More...

    -
    #include <stdint.h>
    -
    -Include dependency graph for fpc_com_result.h:
    -
    -
    -
    -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    -
    -
    -
    -

    Go to the source code of this file.

    - - - - -

    -Typedefs

    typedef uint8_t fpc_com_result_t
     
    - - - -

    -Enumerations

    enum  fpc_com_result {
    -  FPC_COM_RESULT_OK, -
    -  FPC_COM_RESULT_NO_MEMORY, -
    -  FPC_COM_RESULT_INVALID_ARGUMENT, -
    -  FPC_COM_RESULT_NOT_IMPLEMENTED, -
    -  FPC_COM_RESULT_IO_ERROR, -
    -  FPC_COM_RESULT_TIMEOUT -
    - }
     
    -

    Detailed Description

    -

    Communication result type definitions.

    - -

    Definition in file fpc_com_result.h.

    -

    Typedef Documentation

    - -
    -
    - - - - -
    typedef uint8_t fpc_com_result_t
    -
    -

    Communication result type

    - -

    Definition at line 41 of file fpc_com_result.h.

    - -
    -
    -

    Enumeration Type Documentation

    - -
    -
    - - - - -
    enum fpc_com_result
    -
    -

    Communication result codes

    - - - - - - - -
    Enumerator
    FPC_COM_RESULT_OK  -
    FPC_COM_RESULT_NO_MEMORY  -
    FPC_COM_RESULT_INVALID_ARGUMENT  -
    FPC_COM_RESULT_NOT_IMPLEMENTED  -
    FPC_COM_RESULT_IO_ERROR  -
    FPC_COM_RESULT_TIMEOUT  -
    - -

    Definition at line 32 of file fpc_com_result.h.

    - -
    -
    -
    -
    - - - - diff --git a/hcp/doxygen/html/fpc__com__result_8h.js b/hcp/doxygen/html/fpc__com__result_8h.js deleted file mode 100644 index b1add6d..0000000 --- a/hcp/doxygen/html/fpc__com__result_8h.js +++ /dev/null @@ -1,12 +0,0 @@ -var fpc__com__result_8h = -[ - [ "fpc_com_result_t", "fpc__com__result_8h.html#a49b1f9a24f677d396227ea645494070a", null ], - [ "fpc_com_result", "fpc__com__result_8h.html#a5435902ad319b641b2758a2f8f48897a", [ - [ "FPC_COM_RESULT_OK", "fpc__com__result_8h.html#a5435902ad319b641b2758a2f8f48897aaa4090b7c45045bce15b6b8d9cd7ef914", null ], - [ "FPC_COM_RESULT_NO_MEMORY", "fpc__com__result_8h.html#a5435902ad319b641b2758a2f8f48897aa5c99bdb5025135bc89f86391ed9cf039", null ], - [ "FPC_COM_RESULT_INVALID_ARGUMENT", "fpc__com__result_8h.html#a5435902ad319b641b2758a2f8f48897aa2e96fad27e661c9eb3bce808d0d7e92e", null ], - [ "FPC_COM_RESULT_NOT_IMPLEMENTED", "fpc__com__result_8h.html#a5435902ad319b641b2758a2f8f48897aa01c8c09db85b54df5cb355631c36fe4e", null ], - [ "FPC_COM_RESULT_IO_ERROR", "fpc__com__result_8h.html#a5435902ad319b641b2758a2f8f48897aa9018f4fe6916e76acf8f1a8391d9b80f", null ], - [ "FPC_COM_RESULT_TIMEOUT", "fpc__com__result_8h.html#a5435902ad319b641b2758a2f8f48897aa37ce8bdd82e871575b23e9f1d6f06dbf", null ] - ] ] -]; \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__result_8h__dep__incl.map b/hcp/doxygen/html/fpc__com__result_8h__dep__incl.map deleted file mode 100644 index ec44453..0000000 --- a/hcp/doxygen/html/fpc__com__result_8h__dep__incl.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/hcp/doxygen/html/fpc__com__result_8h__dep__incl.md5 b/hcp/doxygen/html/fpc__com__result_8h__dep__incl.md5 deleted file mode 100644 index b12a1a6..0000000 --- a/hcp/doxygen/html/fpc__com__result_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -8c259507ddbf28df71e644395974c58b \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__result_8h__dep__incl.svg b/hcp/doxygen/html/fpc__com__result_8h__dep__incl.svg deleted file mode 100644 index 26f1de6..0000000 --- a/hcp/doxygen/html/fpc__com__result_8h__dep__incl.svg +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - -inc/fpc_com_result.h - - -Node1 - -inc/fpc_com_result.h - - -Node2 - - -inc/fpc_com_chain.h - - - - -Node1->Node2 - - - - -Node3 - - -inc/fpc_com_link.h - - - - -Node1->Node3 - - - - -Node2->Node3 - - - - -Node6 - - -inc/fpc_com_transport.h - - - - -Node2->Node6 - - - - -Node7 - - -inc/fpc_hcp.h - - - - -Node2->Node7 - - - - -Node4 - - -src/fpc_com_link.c - - - - -Node3->Node4 - - - - -Node5 - - -src/fpc_com_transport.c - - - - -Node3->Node5 - - - - -Node6->Node5 - - - - -Node8 - - -src/fpc_hcp.c - - - - -Node7->Node8 - - - - - diff --git a/hcp/doxygen/html/fpc__com__result_8h__incl.map b/hcp/doxygen/html/fpc__com__result_8h__incl.map deleted file mode 100644 index 6fcc9b3..0000000 --- a/hcp/doxygen/html/fpc__com__result_8h__incl.map +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/hcp/doxygen/html/fpc__com__result_8h__incl.md5 b/hcp/doxygen/html/fpc__com__result_8h__incl.md5 deleted file mode 100644 index 0f2eca8..0000000 --- a/hcp/doxygen/html/fpc__com__result_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -59ffa2fa2be94ddda3a06d18caab6576 \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__result_8h__incl.svg b/hcp/doxygen/html/fpc__com__result_8h__incl.svg deleted file mode 100644 index d206e53..0000000 --- a/hcp/doxygen/html/fpc__com__result_8h__incl.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - -inc/fpc_com_result.h - - -Node1 - -inc/fpc_com_result.h - - -Node2 - -stdint.h - - -Node1->Node2 - - - - - diff --git a/hcp/doxygen/html/fpc__com__result_8h_source.html b/hcp/doxygen/html/fpc__com__result_8h_source.html deleted file mode 100644 index 2aeb43c..0000000 --- a/hcp/doxygen/html/fpc__com__result_8h_source.html +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - -Host Communication Protocol: inc/fpc_com_result.h Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    fpc_com_result.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2020 Fingerprint Cards AB
    3  *
    4  * Licensed under the Apache License, Version 2.0 (the "License");
    5  * you may not use this file except in compliance with the License.
    6  * You may obtain a copy of the License at
    7  *
    8  * https://www.apache.org/licenses/LICENSE-2.0
    9  *
    10  * Unless required by applicable law or agreed to in writing, software
    11  * distributed under the License is distributed on an "AS IS" BASIS,
    12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  * See the License for the specific language governing permissions and
    14  * limitations under the License.
    15  */
    16 
    22 #ifndef FPC_COM_RESULT_H
    23 #define FPC_COM_RESULT_H
    24 
    25 #include <stdint.h>
    26 
    27 #ifdef __cplusplus
    28 extern "C" {
    29 #endif /* __cplusplus */
    30 
    39 };
    41 typedef uint8_t fpc_com_result_t;
    42 
    43 #ifdef __cplusplus
    44 }
    45 #endif /* __cplusplus */
    46 
    47 #endif /* FPC_COM_RESULT_H */
    - - - -
    fpc_com_result
    -
    uint8_t fpc_com_result_t
    - - -
    -
    - - - - diff --git a/hcp/doxygen/html/fpc__com__transport_8c.html b/hcp/doxygen/html/fpc__com__transport_8c.html deleted file mode 100644 index 6ab9ec5..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8c.html +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - -Host Communication Protocol: src/fpc_com_transport.c File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    fpc_com_transport.c File Reference
    -
    -
    - -

    Communication transport layer implementation. -More...

    -
    #include <stdlib.h>
    -#include <string.h>
    -#include "fpc_com_link.h"
    -#include "fpc_com_transport.h"
    -
    -Include dependency graph for fpc_com_transport.c:
    -
    -
    -
    -
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - -

    -Functions

    fpc_com_result_t fpc_com_transport_transmit (fpc_com_packet_tsp_t *packet, fpc_com_chain_t *chain)
     Transmit a transport layer packet. More...
     
    fpc_com_result_t fpc_com_transport_receive (fpc_com_packet_tsp_t *packet, fpc_com_chain_t *chain)
     Receive a transport layer packet. More...
     
    uint16_t fpc_com_transport_get_overhead (uint16_t *offset)
     Returns the overhead of the layer. More...
     
    -

    Detailed Description

    -

    Communication transport layer implementation.

    - -

    Definition in file fpc_com_transport.c.

    -

    Function Documentation

    - -
    -
    - - - - - - - - -
    uint16_t fpc_com_transport_get_overhead (uint16_t * offset)
    -
    - -

    Returns the overhead of the layer.

    -
    Parameters
    - - -
    [out]offsetThe offset to the packet data.
    -
    -
    -
    Returns
    Overhead size in bytes.
    - -

    Definition at line 88 of file fpc_com_transport.c.

    - -

    References fpc_com_packet_transport::seq_len, fpc_com_packet_transport::seq_nr, and fpc_com_packet_transport::size.

    - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    fpc_com_result_t fpc_com_transport_receive (fpc_com_packet_tsp_tpacket,
    fpc_com_chain_tchain 
    )
    -
    - -

    Receive a transport layer packet.

    -
    Parameters
    - - - -
    [in,out]packetThe packet to populate.
    [in]chainThe chain to use.
    -
    -
    -
    Returns
    fpc_com_result_t
    - -

    Definition at line 60 of file fpc_com_transport.c.

    - -

    References fpc_com_packet_transport::data, fpc_com_packet_link::data, fpc_com_link_receive(), FPC_COM_RESULT_INVALID_ARGUMENT, FPC_COM_RESULT_OK, fpc_com_packet_transport::seq_len, fpc_com_packet_transport::seq_nr, and fpc_com_packet_transport::size.

    - -

    -Here is the call graph for this function:
    -
    -
    -
    -
    -

    - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    fpc_com_result_t fpc_com_transport_transmit (fpc_com_packet_tsp_tpacket,
    fpc_com_chain_tchain 
    )
    -
    - -

    Transmit a transport layer packet.

    -
    Parameters
    - - - -
    [in]packetThe packet to transmit.
    [in]chainThe chain to use.
    -
    -
    -
    Returns
    fpc_com_result_t
    - -

    Definition at line 28 of file fpc_com_transport.c.

    - -

    References fpc_com_packet_link::channel, fpc_com_chain::channel, fpc_com_packet_link::data, FPC_COM_CHAIN_TX, fpc_com_link_transmit(), FPC_COM_RESULT_INVALID_ARGUMENT, fpc_com_chain::link_overhead_get, fpc_com_chain::phy_mtu_buffer, fpc_com_packet_transport::seq_len, fpc_com_packet_transport::seq_nr, fpc_com_packet_transport::size, fpc_com_packet_link::size, and fpc_com_chain::tsp_overhead_get.

    - -

    -Here is the call graph for this function:
    -
    -
    -
    -
    -

    - -
    -
    -
    -
    - - - - diff --git a/hcp/doxygen/html/fpc__com__transport_8c.js b/hcp/doxygen/html/fpc__com__transport_8c.js deleted file mode 100644 index ad4d579..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8c.js +++ /dev/null @@ -1,6 +0,0 @@ -var fpc__com__transport_8c = -[ - [ "fpc_com_transport_get_overhead", "fpc__com__transport_8c.html#ab5c3ffee064012e456917a1b37d30938", null ], - [ "fpc_com_transport_receive", "fpc__com__transport_8c.html#acc641d17a6f587ceb132b5500390f99a", null ], - [ "fpc_com_transport_transmit", "fpc__com__transport_8c.html#af7766ded38ea5a21005d9c99dbd24a72", null ] -]; \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__transport_8c__incl.map b/hcp/doxygen/html/fpc__com__transport_8c__incl.map deleted file mode 100644 index 76e9460..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8c__incl.map +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/hcp/doxygen/html/fpc__com__transport_8c__incl.md5 b/hcp/doxygen/html/fpc__com__transport_8c__incl.md5 deleted file mode 100644 index fa4345d..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8c__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -e2ee468a645c6759453b89bbbb374223 \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__transport_8c__incl.svg b/hcp/doxygen/html/fpc__com__transport_8c__incl.svg deleted file mode 100644 index b5bad52..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8c__incl.svg +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - -src/fpc_com_transport.c - - -Node1 - -src/fpc_com_transport.c - - -Node2 - -stdlib.h - - -Node1->Node2 - - - - -Node3 - -string.h - - -Node1->Node3 - - - - -Node4 - - -fpc_com_link.h - - - - -Node1->Node4 - - - - -Node11 - - -fpc_com_transport.h - - - - -Node1->Node11 - - - - -Node5 - -stdbool.h - - -Node4->Node5 - - - - -Node6 - -stdint.h - - -Node4->Node6 - - - - -Node7 - - -fpc_com_result.h - - - - -Node4->Node7 - - - - -Node8 - - -fpc_com_chain.h - - - - -Node4->Node8 - - - - -Node7->Node6 - - - - -Node8->Node6 - - - - -Node8->Node7 - - - - -Node9 - - -fpc_hcp_common.h - - - - -Node8->Node9 - - - - -Node10 - - -fpc_com_packets.h - - - - -Node8->Node10 - - - - -Node9->Node5 - - - - -Node9->Node6 - - - - -Node10->Node6 - - - - -Node11->Node6 - - - - -Node11->Node8 - - - - - diff --git a/hcp/doxygen/html/fpc__com__transport_8c_acc641d17a6f587ceb132b5500390f99a_cgraph.map b/hcp/doxygen/html/fpc__com__transport_8c_acc641d17a6f587ceb132b5500390f99a_cgraph.map deleted file mode 100644 index 7ab2bf1..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8c_acc641d17a6f587ceb132b5500390f99a_cgraph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/hcp/doxygen/html/fpc__com__transport_8c_acc641d17a6f587ceb132b5500390f99a_cgraph.md5 b/hcp/doxygen/html/fpc__com__transport_8c_acc641d17a6f587ceb132b5500390f99a_cgraph.md5 deleted file mode 100644 index ad3feb8..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8c_acc641d17a6f587ceb132b5500390f99a_cgraph.md5 +++ /dev/null @@ -1 +0,0 @@ -fc06ca2920b5dc571e73125ea600e963 \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__transport_8c_acc641d17a6f587ceb132b5500390f99a_cgraph.svg b/hcp/doxygen/html/fpc__com__transport_8c_acc641d17a6f587ceb132b5500390f99a_cgraph.svg deleted file mode 100644 index ffb034f..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8c_acc641d17a6f587ceb132b5500390f99a_cgraph.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - -fpc_com_transport_receive - - -Node1 - -fpc_com_transport_receive - - -Node2 - - -fpc_com_link_receive - - - - -Node1->Node2 - - - - - diff --git a/hcp/doxygen/html/fpc__com__transport_8c_af7766ded38ea5a21005d9c99dbd24a72_cgraph.map b/hcp/doxygen/html/fpc__com__transport_8c_af7766ded38ea5a21005d9c99dbd24a72_cgraph.map deleted file mode 100644 index e09af63..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8c_af7766ded38ea5a21005d9c99dbd24a72_cgraph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hcp/doxygen/html/fpc__com__transport_8c_af7766ded38ea5a21005d9c99dbd24a72_cgraph.md5 b/hcp/doxygen/html/fpc__com__transport_8c_af7766ded38ea5a21005d9c99dbd24a72_cgraph.md5 deleted file mode 100644 index 22f7f28..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8c_af7766ded38ea5a21005d9c99dbd24a72_cgraph.md5 +++ /dev/null @@ -1 +0,0 @@ -20f39a00e89e8d273c4640a927738f62 \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__transport_8c_af7766ded38ea5a21005d9c99dbd24a72_cgraph.svg b/hcp/doxygen/html/fpc__com__transport_8c_af7766ded38ea5a21005d9c99dbd24a72_cgraph.svg deleted file mode 100644 index 4580bd6..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8c_af7766ded38ea5a21005d9c99dbd24a72_cgraph.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - -fpc_com_transport_transmit - - -Node1 - -fpc_com_transport_transmit - - -Node2 - - -fpc_com_link_transmit - - - - -Node1->Node2 - - - - -Node3 - - -fpc_com_link_get_overhead - - - - -Node2->Node3 - - - - - diff --git a/hcp/doxygen/html/fpc__com__transport_8c_source.html b/hcp/doxygen/html/fpc__com__transport_8c_source.html deleted file mode 100644 index fb9e30d..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8c_source.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - -Host Communication Protocol: src/fpc_com_transport.c Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    fpc_com_transport.c
    -
    -
    -Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2020 Fingerprint Cards AB
    3  *
    4  * Licensed under the Apache License, Version 2.0 (the "License");
    5  * you may not use this file except in compliance with the License.
    6  * You may obtain a copy of the License at
    7  *
    8  * https://www.apache.org/licenses/LICENSE-2.0
    9  *
    10  * Unless required by applicable law or agreed to in writing, software
    11  * distributed under the License is distributed on an "AS IS" BASIS,
    12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  * See the License for the specific language governing permissions and
    14  * limitations under the License.
    15  */
    16 
    22 #include <stdlib.h>
    23 #include <string.h>
    24 
    25 #include "fpc_com_link.h"
    26 #include "fpc_com_transport.h"
    27 
    29 {
    30  fpc_com_packet_link_t link_packet = { 0 };
    31  fpc_com_result_t result;
    32  uint16_t link_offset;
    33  uint16_t offset;
    34 
    35  if (packet == NULL|| chain == NULL) {
    37  goto exit;
    38  }
    39 
    40  /* Construct header */
    41  chain->link_overhead_get(&link_offset);
    42  link_packet.data = chain->phy_mtu_buffer[FPC_COM_CHAIN_TX] + link_offset;
    43 
    44  *((uint16_t *)(link_packet.data)) = packet->size;
    45  offset = sizeof(packet->size);
    46  *((uint16_t *)(link_packet.data + offset)) = packet->seq_nr;
    47  offset += sizeof(packet->seq_nr);
    48  *((uint16_t *)(link_packet.data + offset)) = packet->seq_len;
    49 
    50  link_packet.channel = chain->channel;
    51  link_packet.size = packet->size + chain->tsp_overhead_get(NULL);
    52 
    53  /* Send packet */
    54  result = fpc_com_link_transmit(&link_packet, chain);
    55 
    56 exit:
    57  return result;
    58 }
    59 
    61 {
    62  fpc_com_packet_link_t link_packet = { 0 };
    63  fpc_com_result_t result;
    64  uint16_t offset;
    65 
    66  if (packet == NULL|| chain == NULL) {
    68  goto exit;
    69  }
    70 
    71  result = fpc_com_link_receive(&link_packet, chain);
    72  if (result != FPC_COM_RESULT_OK) {
    73  goto exit;
    74  }
    75 
    76  packet->size = *((uint16_t *)link_packet.data);
    77  offset = sizeof(packet->size);
    78  packet->seq_nr = *((uint16_t *)(link_packet.data + offset));
    79  offset += sizeof(packet->seq_nr);
    80  packet->seq_len = *((uint16_t *)(link_packet.data + offset));
    81  offset += sizeof(packet->seq_len);
    82  packet->data = link_packet.data + offset;
    83 
    84 exit:
    85  return result;
    86 }
    87 
    88 uint16_t fpc_com_transport_get_overhead(uint16_t *offset)
    89 {
    90  fpc_com_packet_tsp_t *packet;
    91  static const uint16_t internal_offset = sizeof(packet->size) + sizeof(packet->seq_len)
    92  + sizeof(packet->seq_nr);
    93 
    94  if (offset) {
    95  *offset = internal_offset;
    96  }
    97 
    98  return internal_offset;
    99 }
    fpc_com_result_t fpc_com_transport_transmit(fpc_com_packet_tsp_t *packet, fpc_com_chain_t *chain)
    Transmit a transport layer packet.
    -
    uint16_t(* tsp_overhead_get)(uint16_t *offset)
    Definition: fpc_com_chain.h:95
    -
    uint8_t * phy_mtu_buffer[2]
    - - - - - - - -
    fpc_com_channel_t channel
    - -
    fpc_com_result_t fpc_com_transport_receive(fpc_com_packet_tsp_t *packet, fpc_com_chain_t *chain)
    Receive a transport layer packet.
    - - - -
    uint16_t(* link_overhead_get)(uint16_t *offset)
    -
    Communication transport interface.
    -
    uint8_t fpc_com_result_t
    - - - - -
    uint16_t fpc_com_transport_get_overhead(uint16_t *offset)
    Returns the overhead of the layer.
    - -
    -
    - - - - diff --git a/hcp/doxygen/html/fpc__com__transport_8h.html b/hcp/doxygen/html/fpc__com__transport_8h.html deleted file mode 100644 index caf8e31..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8h.html +++ /dev/null @@ -1,248 +0,0 @@ - - - - - - -Host Communication Protocol: inc/fpc_com_transport.h File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    fpc_com_transport.h File Reference
    -
    -
    - -

    Communication transport interface. -More...

    -
    #include <stdint.h>
    -#include "fpc_com_chain.h"
    -
    -Include dependency graph for fpc_com_transport.h:
    -
    -
    -
    -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    -
    -
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - -

    -Functions

    fpc_com_result_t fpc_com_transport_transmit (fpc_com_packet_tsp_t *packet, fpc_com_chain_t *chain)
     Transmit a transport layer packet. More...
     
    fpc_com_result_t fpc_com_transport_receive (fpc_com_packet_tsp_t *packet, fpc_com_chain_t *chain)
     Receive a transport layer packet. More...
     
    uint16_t fpc_com_transport_get_overhead (uint16_t *offset)
     Returns the overhead of the layer. More...
     
    -

    Detailed Description

    -

    Communication transport interface.

    - -

    Definition in file fpc_com_transport.h.

    -

    Function Documentation

    - -
    -
    - - - - - - - - -
    uint16_t fpc_com_transport_get_overhead (uint16_t * offset)
    -
    - -

    Returns the overhead of the layer.

    -
    Parameters
    - - -
    [out]offsetThe offset to the packet data.
    -
    -
    -
    Returns
    Overhead size in bytes.
    - -

    Definition at line 88 of file fpc_com_transport.c.

    - -

    References fpc_com_packet_transport::seq_len, fpc_com_packet_transport::seq_nr, and fpc_com_packet_transport::size.

    - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    fpc_com_result_t fpc_com_transport_receive (fpc_com_packet_tsp_tpacket,
    fpc_com_chain_tchain 
    )
    -
    - -

    Receive a transport layer packet.

    -
    Parameters
    - - - -
    [in,out]packetThe packet to populate.
    [in]chainThe chain to use.
    -
    -
    -
    Returns
    fpc_com_result_t
    - -

    Definition at line 60 of file fpc_com_transport.c.

    - -

    References fpc_com_packet_transport::data, fpc_com_packet_link::data, fpc_com_link_receive(), FPC_COM_RESULT_INVALID_ARGUMENT, FPC_COM_RESULT_OK, fpc_com_packet_transport::seq_len, fpc_com_packet_transport::seq_nr, and fpc_com_packet_transport::size.

    - -

    -Here is the call graph for this function:
    -
    -
    -
    -
    -

    - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    fpc_com_result_t fpc_com_transport_transmit (fpc_com_packet_tsp_tpacket,
    fpc_com_chain_tchain 
    )
    -
    - -

    Transmit a transport layer packet.

    -
    Parameters
    - - - -
    [in]packetThe packet to transmit.
    [in]chainThe chain to use.
    -
    -
    -
    Returns
    fpc_com_result_t
    - -

    Definition at line 28 of file fpc_com_transport.c.

    - -

    References fpc_com_packet_link::channel, fpc_com_chain::channel, fpc_com_packet_link::data, FPC_COM_CHAIN_TX, fpc_com_link_transmit(), FPC_COM_RESULT_INVALID_ARGUMENT, fpc_com_chain::link_overhead_get, fpc_com_chain::phy_mtu_buffer, fpc_com_packet_transport::seq_len, fpc_com_packet_transport::seq_nr, fpc_com_packet_transport::size, fpc_com_packet_link::size, and fpc_com_chain::tsp_overhead_get.

    - -

    -Here is the call graph for this function:
    -
    -
    -
    -
    -

    - -
    -
    -
    -
    - - - - diff --git a/hcp/doxygen/html/fpc__com__transport_8h.js b/hcp/doxygen/html/fpc__com__transport_8h.js deleted file mode 100644 index 0c4c394..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8h.js +++ /dev/null @@ -1,6 +0,0 @@ -var fpc__com__transport_8h = -[ - [ "fpc_com_transport_get_overhead", "fpc__com__transport_8h.html#ab5c3ffee064012e456917a1b37d30938", null ], - [ "fpc_com_transport_receive", "fpc__com__transport_8h.html#acc641d17a6f587ceb132b5500390f99a", null ], - [ "fpc_com_transport_transmit", "fpc__com__transport_8h.html#af7766ded38ea5a21005d9c99dbd24a72", null ] -]; \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__transport_8h__dep__incl.map b/hcp/doxygen/html/fpc__com__transport_8h__dep__incl.map deleted file mode 100644 index 6d8a497..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8h__dep__incl.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/hcp/doxygen/html/fpc__com__transport_8h__dep__incl.md5 b/hcp/doxygen/html/fpc__com__transport_8h__dep__incl.md5 deleted file mode 100644 index 79a1d9d..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -8fb97776be33e5dbe96688f89b04167a \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__transport_8h__dep__incl.svg b/hcp/doxygen/html/fpc__com__transport_8h__dep__incl.svg deleted file mode 100644 index 1b45bd8..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8h__dep__incl.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - -inc/fpc_com_transport.h - - -Node1 - -inc/fpc_com_transport.h - - -Node2 - - -src/fpc_com_transport.c - - - - -Node1->Node2 - - - - - diff --git a/hcp/doxygen/html/fpc__com__transport_8h__incl.map b/hcp/doxygen/html/fpc__com__transport_8h__incl.map deleted file mode 100644 index c66f458..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8h__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/hcp/doxygen/html/fpc__com__transport_8h__incl.md5 b/hcp/doxygen/html/fpc__com__transport_8h__incl.md5 deleted file mode 100644 index d627d6b..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -963a62242b7de62ac8d59612453aad3c \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__transport_8h__incl.svg b/hcp/doxygen/html/fpc__com__transport_8h__incl.svg deleted file mode 100644 index f7adee7..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8h__incl.svg +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - -inc/fpc_com_transport.h - - -Node1 - -inc/fpc_com_transport.h - - -Node2 - -stdint.h - - -Node1->Node2 - - - - -Node3 - - -fpc_com_chain.h - - - - -Node1->Node3 - - - - -Node3->Node2 - - - - -Node4 - - -fpc_com_result.h - - - - -Node3->Node4 - - - - -Node5 - - -fpc_hcp_common.h - - - - -Node3->Node5 - - - - -Node7 - - -fpc_com_packets.h - - - - -Node3->Node7 - - - - -Node4->Node2 - - - - -Node5->Node2 - - - - -Node6 - -stdbool.h - - -Node5->Node6 - - - - -Node7->Node2 - - - - - diff --git a/hcp/doxygen/html/fpc__com__transport_8h_acc641d17a6f587ceb132b5500390f99a_cgraph.map b/hcp/doxygen/html/fpc__com__transport_8h_acc641d17a6f587ceb132b5500390f99a_cgraph.map deleted file mode 100644 index 7ab2bf1..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8h_acc641d17a6f587ceb132b5500390f99a_cgraph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/hcp/doxygen/html/fpc__com__transport_8h_acc641d17a6f587ceb132b5500390f99a_cgraph.md5 b/hcp/doxygen/html/fpc__com__transport_8h_acc641d17a6f587ceb132b5500390f99a_cgraph.md5 deleted file mode 100644 index ad3feb8..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8h_acc641d17a6f587ceb132b5500390f99a_cgraph.md5 +++ /dev/null @@ -1 +0,0 @@ -fc06ca2920b5dc571e73125ea600e963 \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__transport_8h_acc641d17a6f587ceb132b5500390f99a_cgraph.svg b/hcp/doxygen/html/fpc__com__transport_8h_acc641d17a6f587ceb132b5500390f99a_cgraph.svg deleted file mode 100644 index ffb034f..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8h_acc641d17a6f587ceb132b5500390f99a_cgraph.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - -fpc_com_transport_receive - - -Node1 - -fpc_com_transport_receive - - -Node2 - - -fpc_com_link_receive - - - - -Node1->Node2 - - - - - diff --git a/hcp/doxygen/html/fpc__com__transport_8h_af7766ded38ea5a21005d9c99dbd24a72_cgraph.map b/hcp/doxygen/html/fpc__com__transport_8h_af7766ded38ea5a21005d9c99dbd24a72_cgraph.map deleted file mode 100644 index e09af63..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8h_af7766ded38ea5a21005d9c99dbd24a72_cgraph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hcp/doxygen/html/fpc__com__transport_8h_af7766ded38ea5a21005d9c99dbd24a72_cgraph.md5 b/hcp/doxygen/html/fpc__com__transport_8h_af7766ded38ea5a21005d9c99dbd24a72_cgraph.md5 deleted file mode 100644 index 22f7f28..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8h_af7766ded38ea5a21005d9c99dbd24a72_cgraph.md5 +++ /dev/null @@ -1 +0,0 @@ -20f39a00e89e8d273c4640a927738f62 \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__com__transport_8h_af7766ded38ea5a21005d9c99dbd24a72_cgraph.svg b/hcp/doxygen/html/fpc__com__transport_8h_af7766ded38ea5a21005d9c99dbd24a72_cgraph.svg deleted file mode 100644 index 4580bd6..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8h_af7766ded38ea5a21005d9c99dbd24a72_cgraph.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - -fpc_com_transport_transmit - - -Node1 - -fpc_com_transport_transmit - - -Node2 - - -fpc_com_link_transmit - - - - -Node1->Node2 - - - - -Node3 - - -fpc_com_link_get_overhead - - - - -Node2->Node3 - - - - - diff --git a/hcp/doxygen/html/fpc__com__transport_8h_source.html b/hcp/doxygen/html/fpc__com__transport_8h_source.html deleted file mode 100644 index 1deb259..0000000 --- a/hcp/doxygen/html/fpc__com__transport_8h_source.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - -Host Communication Protocol: inc/fpc_com_transport.h Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    fpc_com_transport.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2020 Fingerprint Cards AB
    3  *
    4  * Licensed under the Apache License, Version 2.0 (the "License");
    5  * you may not use this file except in compliance with the License.
    6  * You may obtain a copy of the License at
    7  *
    8  * https://www.apache.org/licenses/LICENSE-2.0
    9  *
    10  * Unless required by applicable law or agreed to in writing, software
    11  * distributed under the License is distributed on an "AS IS" BASIS,
    12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  * See the License for the specific language governing permissions and
    14  * limitations under the License.
    15  */
    16 
    22 #ifndef FPC_COM_TRANSPORT_H
    23 #define FPC_COM_TRANSPORT_H
    24 
    25 #include <stdint.h>
    26 
    27 #include "fpc_com_chain.h"
    28 
    29 #ifdef __cplusplus
    30 extern "C" {
    31 #endif /* __cplusplus */
    32 
    41 
    50 
    57 uint16_t fpc_com_transport_get_overhead(uint16_t *offset);
    58 
    59 #ifdef __cplusplus
    60 }
    61 #endif /* __cplusplus */
    62 
    63 #endif /* FPC_COM_TRANSPORT_H */
    -
    fpc_com_result_t fpc_com_transport_transmit(fpc_com_packet_tsp_t *packet, fpc_com_chain_t *chain)
    Transmit a transport layer packet.
    -
    uint16_t fpc_com_transport_get_overhead(uint16_t *offset)
    Returns the overhead of the layer.
    - -
    Communication chain type definitions.
    -
    uint8_t fpc_com_result_t
    -
    fpc_com_result_t fpc_com_transport_receive(fpc_com_packet_tsp_t *packet, fpc_com_chain_t *chain)
    Receive a transport layer packet.
    -
    -
    - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8c.html b/hcp/doxygen/html/fpc__hcp_8c.html deleted file mode 100644 index 7bbe551..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c.html +++ /dev/null @@ -1,721 +0,0 @@ - - - - - - -Host Communication Protocol: src/fpc_hcp.c File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    fpc_hcp.c File Reference
    -
    -
    - -

    Host Communication Protocol implementation. -More...

    -
    #include <stdlib.h>
    -#include <string.h>
    -#include "fpc_hcp.h"
    -
    -Include dependency graph for fpc_hcp.c:
    -
    -
    -
    -
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - -

    -Macros

    HCP Packet Member Sizes

    Macros for packet member sizes.

    -
    #define PACKET_ID_SIZE   sizeof(((fpc_hcp_packet_t*)0)->id)
     
    #define PACKET_NUM_ARGS_SIZE   sizeof(((fpc_hcp_packet_t*)0)->num_args)
     
    #define PACKET_HEADER_SIZE   (PACKET_ID_SIZE + PACKET_NUM_ARGS_SIZE)
     
    HCP Argument Member Sizes

    Macros for argument member sizes.

    -
    #define ARGUMENT_ARG_SIZE   sizeof(((fpc_hcp_arg_data_t*)0)->arg)
     
    #define ARGUMENT_SIZE_SIZE   sizeof(((fpc_hcp_arg_data_t*)0)->size)
     
    #define ARGUMENT_HEADER_SIZE   (ARGUMENT_ARG_SIZE + ARGUMENT_SIZE_SIZE)
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    static fpc_com_result_t recieve_chunks (fpc_com_chain_t *chain)
     Handle receive chunks. More...
     
    static fpc_com_result_t transmit_chunks (fpc_com_chain_t *chain)
     Handle transmit chunks. More...
     
    uint16_t fpc_hcp_get_size (fpc_hcp_packet_t *packet, uint16_t *num_args)
     Calculate serialized packet size. More...
     
    fpc_com_result_t fpc_hcp_transmit (fpc_hcp_packet_t *packet, fpc_com_chain_t *chain)
     Transmits an application packet through the supplied transmit chain. More...
     
    fpc_com_result_t fpc_hcp_receive (fpc_hcp_packet_t *packet, fpc_com_chain_t *chain)
     Receives an application packet through the supplied transmit chain. More...
     
    bool fpc_hcp_arg_add (fpc_hcp_packet_t *packet, fpc_hcp_arg_t arg, uint16_t size, bool free_data, void *data)
     Add argument to packet. More...
     
    bool fpc_hcp_arg_check (fpc_hcp_packet_t *packet, fpc_hcp_arg_t arg)
     Check if command contains selected argument key. More...
     
    fpc_hcp_arg_data_tfpc_hcp_arg_get (fpc_hcp_packet_t *packet, fpc_hcp_arg_t arg)
     Get Argument with specified key. More...
     
    bool fpc_hcp_arg_copy_data (fpc_hcp_packet_t *packet, fpc_hcp_arg_t arg, uint16_t data_size, uint8_t *data)
     Copy data from an argument with specified key. More...
     
    void fpc_hcp_free (fpc_com_chain_t *chain, fpc_hcp_packet_t *packet)
     Frees the resources held by the packet i.e. the dynamic data held in the arguments. More...
     
    -

    Detailed Description

    -

    Host Communication Protocol implementation.

    - -

    Definition in file fpc_hcp.c.

    -

    Macro Definition Documentation

    - -
    -
    - - - - -
    #define ARGUMENT_ARG_SIZE   sizeof(((fpc_hcp_arg_data_t*)0)->arg)
    -
    - -

    Definition at line 44 of file fpc_hcp.c.

    - -
    -
    - -
    -
    - - - - -
    #define ARGUMENT_HEADER_SIZE   (ARGUMENT_ARG_SIZE + ARGUMENT_SIZE_SIZE)
    -
    - -

    Definition at line 46 of file fpc_hcp.c.

    - -
    -
    - -
    -
    - - - - -
    #define ARGUMENT_SIZE_SIZE   sizeof(((fpc_hcp_arg_data_t*)0)->size)
    -
    - -

    Definition at line 45 of file fpc_hcp.c.

    - -
    -
    - -
    -
    - - - - -
    #define PACKET_HEADER_SIZE   (PACKET_ID_SIZE + PACKET_NUM_ARGS_SIZE)
    -
    - -

    Definition at line 35 of file fpc_hcp.c.

    - -
    -
    - -
    -
    - - - - -
    #define PACKET_ID_SIZE   sizeof(((fpc_hcp_packet_t*)0)->id)
    -
    - -

    Definition at line 33 of file fpc_hcp.c.

    - -
    -
    - -
    -
    - - - - -
    #define PACKET_NUM_ARGS_SIZE   sizeof(((fpc_hcp_packet_t*)0)->num_args)
    -
    - -

    Definition at line 34 of file fpc_hcp.c.

    - -
    -
    -

    Function Documentation

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool fpc_hcp_arg_add (fpc_hcp_packet_tpacket,
    fpc_hcp_arg_t arg,
    uint16_t size,
    bool free_data,
    void * data 
    )
    -
    - -

    Add argument to packet.

    -
    Note
    This function does not allocate any memory, it will only set the argument variables.
    -
    Parameters
    - - - - - - -
    [in]packetPacket to add to.
    [in]argArgument id.
    [in]sizeSize of argument data.
    [in]free_dataSet to true if data should be owned by the argument, false if user still owns data.
    [in]dataPointer to argument data.
    -
    -
    -
    Returns
    true = success, false = failure.
    - -

    Definition at line 145 of file fpc_hcp.c.

    - -

    References fpc_hcp_arg_data::arg, ARG_NONE, fpc_hcp_packet::arguments, fpc_hcp_arg_data::data, fpc_hcp_arg_data::free_data, fpc_hcp_packet::num_args, and fpc_hcp_arg_data::size.

    - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    bool fpc_hcp_arg_check (fpc_hcp_packet_tpacket,
    fpc_hcp_arg_t arg 
    )
    -
    - -

    Check if command contains selected argument key.

    -
    Parameters
    - - - -
    [in]packetThe packet to scan.
    [in]argArgument to look for.
    -
    -
    -
    Returns
    true if found, false if not found.
    - -

    Definition at line 169 of file fpc_hcp.c.

    - -

    References fpc_hcp_arg_get().

    - -

    -Here is the call graph for this function:
    -
    -
    -
    -
    -

    - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool fpc_hcp_arg_copy_data (fpc_hcp_packet_tpacket,
    fpc_hcp_arg_t arg,
    uint16_t data_size,
    uint8_t * data 
    )
    -
    - -

    Copy data from an argument with specified key.

    -

    Argument data will be copied to specified data buffer. Remaining bytes in data will be cleared if the argument data size is less than data size when the argument contains data.

    -
    Parameters
    - - - - - -
    [in]packetThe packet to operate on.
    [in]argThe arg to retrieve data from.
    [in]data_sizeNumber of bytes to copy.
    [in,out]dataPointer to data buffer.
    -
    -
    -
    Returns
    True if argument found, false if not found.
    - -

    Definition at line 183 of file fpc_hcp.c.

    - -

    References fpc_hcp_arg_data::data, fpc_hcp_arg_get(), and fpc_hcp_arg_data::size.

    - -

    -Here is the call graph for this function:
    -
    -
    -
    -
    -

    - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    fpc_hcp_arg_data_t* fpc_hcp_arg_get (fpc_hcp_packet_tpacket,
    fpc_hcp_arg_t arg 
    )
    -
    - -

    Get Argument with specified key.

    -
    Parameters
    - - - -
    [in]packetThe packet to operate on.
    [in]argThe arg to retrieve.
    -
    -
    -
    Returns
    Pointer to fpc_hcp_arg_data_t is successful, otherwise NULL.
    - -

    Definition at line 173 of file fpc_hcp.c.

    - -

    References fpc_hcp_arg_data::arg, fpc_hcp_packet::arguments, and fpc_hcp_packet::num_args.

    - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void fpc_hcp_free (fpc_com_chain_tchain,
    fpc_hcp_packet_tpacket 
    )
    -
    - -

    Frees the resources held by the packet i.e. the dynamic data held in the arguments.

    -
    Parameters
    - - - -
    [in]chainPointer to the communication chain used to retrieve the packet.
    [in]packetPointer to packet.
    -
    -
    - -

    Definition at line 198 of file fpc_hcp.c.

    - -

    References fpc_hcp_arg_data::arg, ARG_NONE, fpc_com_chain::argument_free, fpc_hcp_packet::arguments, CMD_NONE, fpc_com_chain::context, fpc_hcp_packet::id, and fpc_hcp_packet::num_args.

    - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    uint16_t fpc_hcp_get_size (fpc_hcp_packet_tpacket,
    uint16_t * num_args 
    )
    -
    - -

    Calculate serialized packet size.

    -
    Parameters
    - - - -
    [in]packetPacket to calculate.
    [in,out]num_argsWill return number of arguments held by the command can be set to NULL.
    -
    -
    -
    Returns
    Serialized size.
    - -

    Definition at line 64 of file fpc_hcp.c.

    - -

    References fpc_hcp_arg_data::arg, ARG_NONE, ARGUMENT_HEADER_SIZE, fpc_hcp_packet::arguments, fpc_hcp_packet::num_args, PACKET_HEADER_SIZE, and fpc_hcp_arg_data::size.

    - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    fpc_com_result_t fpc_hcp_receive (fpc_hcp_packet_tpacket,
    fpc_com_chain_tchain 
    )
    -
    - -

    Receives an application packet through the supplied transmit chain.

    -
    Parameters
    - - - -
    [in,out]packetPointer to pre-allocated packet struct.
    [in]chainThe chain to use.
    -
    -
    -
    Returns
    fpc_com_result_t
    - -

    Definition at line 117 of file fpc_hcp.c.

    - -

    References fpc_com_chain::app_mtu_buffer, fpc_com_chain::app_mtu_size, FPC_COM_CHAIN_RX, FPC_COM_RESULT_INVALID_ARGUMENT, fpc_com_chain_private::hcp_packet, fpc_com_chain::initialized, fpc_com_chain::link_overhead_get, fpc_com_chain::phy_mtu_buffer, fpc_com_chain::phy_mtu_size, fpc_com_chain::private_vars, recieve_chunks(), and fpc_com_chain::tsp_overhead_get.

    - -

    -Here is the call graph for this function:
    -
    -
    -
    -
    -

    - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    fpc_com_result_t fpc_hcp_transmit (fpc_hcp_packet_tpacket,
    fpc_com_chain_tchain 
    )
    -
    - -

    Transmits an application packet through the supplied transmit chain.

    -
    Parameters
    - - - -
    [in]packetApplication packet to send.
    [in]chainThe chain to use.
    -
    -
    -
    Returns
    fpc_com_result_t
    - -

    Definition at line 89 of file fpc_hcp.c.

    - -

    References fpc_com_chain::app_mtu_buffer, fpc_com_chain::app_mtu_size, FPC_COM_CHAIN_TX, FPC_COM_RESULT_INVALID_ARGUMENT, fpc_com_chain_private::hcp_packet, fpc_com_chain::initialized, fpc_com_chain::link_overhead_get, fpc_com_chain::phy_mtu_buffer, fpc_com_chain::phy_mtu_size, fpc_com_chain::private_vars, transmit_chunks(), and fpc_com_chain::tsp_overhead_get.

    - -

    -Here is the call graph for this function:
    -
    -
    -
    -
    -

    - -
    -
    - - - - -
    -
    - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8c.js b/hcp/doxygen/html/fpc__hcp_8c.js deleted file mode 100644 index 2b0ac49..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c.js +++ /dev/null @@ -1,19 +0,0 @@ -var fpc__hcp_8c = -[ - [ "ARGUMENT_ARG_SIZE", "fpc__hcp_8c.html#a119829b571e80de1f9f2b2841e32fa42", null ], - [ "ARGUMENT_HEADER_SIZE", "fpc__hcp_8c.html#a3496d79780b19b71442831ff927f540b", null ], - [ "ARGUMENT_SIZE_SIZE", "fpc__hcp_8c.html#aa5d90c20e4e2341e40b371741f9f12c9", null ], - [ "PACKET_HEADER_SIZE", "fpc__hcp_8c.html#a69bfb6e73bae0625ac56f441ccf542d1", null ], - [ "PACKET_ID_SIZE", "fpc__hcp_8c.html#a6eac0136b31c600d0077de19003a0fb2", null ], - [ "PACKET_NUM_ARGS_SIZE", "fpc__hcp_8c.html#aeff07e75eb0e6cc94982a68ddb4adbd4", null ], - [ "fpc_hcp_arg_add", "fpc__hcp_8c.html#a9b6886d13174fd6e88bd673ba09cca7d", null ], - [ "fpc_hcp_arg_check", "fpc__hcp_8c.html#ae1b7ce8b198acf7c8f6802300e2591ea", null ], - [ "fpc_hcp_arg_copy_data", "fpc__hcp_8c.html#addefbe1e416979abcf59f7bf652e2a77", null ], - [ "fpc_hcp_arg_get", "fpc__hcp_8c.html#a3860f01dade55ac5f55e85342b8f6d0d", null ], - [ "fpc_hcp_free", "fpc__hcp_8c.html#a78f14eb8269c8f17ea46f01beab88608", null ], - [ "fpc_hcp_get_size", "fpc__hcp_8c.html#a144fab9621ae9cd7abb8e3660b20265f", null ], - [ "fpc_hcp_receive", "fpc__hcp_8c.html#aa964fefb0fc68032f44850ee060b8e9b", null ], - [ "fpc_hcp_transmit", "fpc__hcp_8c.html#ac8ec0a9f397508976922d1833a9a7626", null ], - [ "recieve_chunks", "fpc__hcp_8c.html#ac28e8941753ebcac47c1fc0a06813e61", null ], - [ "transmit_chunks", "fpc__hcp_8c.html#a0c5716b3b2adf3204cf135d9ddaa3688", null ] -]; \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__hcp_8c__incl.map b/hcp/doxygen/html/fpc__hcp_8c__incl.map deleted file mode 100644 index ce5a48a..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8c__incl.md5 b/hcp/doxygen/html/fpc__hcp_8c__incl.md5 deleted file mode 100644 index e49e778..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -281f2828284728946baac6d13f783561 \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__hcp_8c__incl.svg b/hcp/doxygen/html/fpc__hcp_8c__incl.svg deleted file mode 100644 index cc4b894..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c__incl.svg +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - -src/fpc_hcp.c - - -Node1 - -src/fpc_hcp.c - - -Node2 - -stdlib.h - - -Node1->Node2 - - - - -Node3 - -string.h - - -Node1->Node3 - - - - -Node4 - - -fpc_hcp.h - - - - -Node1->Node4 - - - - -Node5 - -stdbool.h - - -Node4->Node5 - - - - -Node6 - -stdint.h - - -Node4->Node6 - - - - -Node7 - - -fpc_hcp_common.h - - - - -Node4->Node7 - - - - -Node8 - - -fpc_com_chain.h - - - - -Node4->Node8 - - - - -Node7->Node5 - - - - -Node7->Node6 - - - - -Node8->Node6 - - - - -Node8->Node7 - - - - -Node9 - - -fpc_com_result.h - - - - -Node8->Node9 - - - - -Node10 - - -fpc_com_packets.h - - - - -Node8->Node10 - - - - -Node9->Node6 - - - - -Node10->Node6 - - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8c_a0c5716b3b2adf3204cf135d9ddaa3688_cgraph.map b/hcp/doxygen/html/fpc__hcp_8c_a0c5716b3b2adf3204cf135d9ddaa3688_cgraph.map deleted file mode 100644 index 0369038..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c_a0c5716b3b2adf3204cf135d9ddaa3688_cgraph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/hcp/doxygen/html/fpc__hcp_8c_a0c5716b3b2adf3204cf135d9ddaa3688_cgraph.md5 b/hcp/doxygen/html/fpc__hcp_8c_a0c5716b3b2adf3204cf135d9ddaa3688_cgraph.md5 deleted file mode 100644 index 43743a5..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c_a0c5716b3b2adf3204cf135d9ddaa3688_cgraph.md5 +++ /dev/null @@ -1 +0,0 @@ -b250e4c4eba13b466baea94b9aedc064 \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__hcp_8c_a0c5716b3b2adf3204cf135d9ddaa3688_cgraph.svg b/hcp/doxygen/html/fpc__hcp_8c_a0c5716b3b2adf3204cf135d9ddaa3688_cgraph.svg deleted file mode 100644 index da9ebf6..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c_a0c5716b3b2adf3204cf135d9ddaa3688_cgraph.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - -transmit_chunks - - -Node1 - -transmit_chunks - - -Node2 - - -fpc_hcp_get_size - - - - -Node1->Node2 - - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8c_aa964fefb0fc68032f44850ee060b8e9b_cgraph.map b/hcp/doxygen/html/fpc__hcp_8c_aa964fefb0fc68032f44850ee060b8e9b_cgraph.map deleted file mode 100644 index 40790a0..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c_aa964fefb0fc68032f44850ee060b8e9b_cgraph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8c_aa964fefb0fc68032f44850ee060b8e9b_cgraph.md5 b/hcp/doxygen/html/fpc__hcp_8c_aa964fefb0fc68032f44850ee060b8e9b_cgraph.md5 deleted file mode 100644 index e4c2356..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c_aa964fefb0fc68032f44850ee060b8e9b_cgraph.md5 +++ /dev/null @@ -1 +0,0 @@ -c8a1373f76cbcb80bc7197d6f8738d54 \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__hcp_8c_aa964fefb0fc68032f44850ee060b8e9b_cgraph.svg b/hcp/doxygen/html/fpc__hcp_8c_aa964fefb0fc68032f44850ee060b8e9b_cgraph.svg deleted file mode 100644 index dd37a6b..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c_aa964fefb0fc68032f44850ee060b8e9b_cgraph.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - -fpc_hcp_receive - - -Node1 - -fpc_hcp_receive - - -Node2 - - -recieve_chunks - - - - -Node1->Node2 - - - - -Node3 - - -fpc_hcp_arg_add - - - - -Node2->Node3 - - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8c_ac28e8941753ebcac47c1fc0a06813e61_cgraph.map b/hcp/doxygen/html/fpc__hcp_8c_ac28e8941753ebcac47c1fc0a06813e61_cgraph.map deleted file mode 100644 index a1c8b5c..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c_ac28e8941753ebcac47c1fc0a06813e61_cgraph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/hcp/doxygen/html/fpc__hcp_8c_ac28e8941753ebcac47c1fc0a06813e61_cgraph.md5 b/hcp/doxygen/html/fpc__hcp_8c_ac28e8941753ebcac47c1fc0a06813e61_cgraph.md5 deleted file mode 100644 index ddf48a3..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c_ac28e8941753ebcac47c1fc0a06813e61_cgraph.md5 +++ /dev/null @@ -1 +0,0 @@ -a4f580059c24a99b70a3e1fabdb7f5e5 \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__hcp_8c_ac28e8941753ebcac47c1fc0a06813e61_cgraph.svg b/hcp/doxygen/html/fpc__hcp_8c_ac28e8941753ebcac47c1fc0a06813e61_cgraph.svg deleted file mode 100644 index 98fbe84..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c_ac28e8941753ebcac47c1fc0a06813e61_cgraph.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - -recieve_chunks - - -Node1 - -recieve_chunks - - -Node2 - - -fpc_hcp_arg_add - - - - -Node1->Node2 - - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8c_ac8ec0a9f397508976922d1833a9a7626_cgraph.map b/hcp/doxygen/html/fpc__hcp_8c_ac8ec0a9f397508976922d1833a9a7626_cgraph.map deleted file mode 100644 index 0bedd7e..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c_ac8ec0a9f397508976922d1833a9a7626_cgraph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8c_ac8ec0a9f397508976922d1833a9a7626_cgraph.md5 b/hcp/doxygen/html/fpc__hcp_8c_ac8ec0a9f397508976922d1833a9a7626_cgraph.md5 deleted file mode 100644 index a496d1c..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c_ac8ec0a9f397508976922d1833a9a7626_cgraph.md5 +++ /dev/null @@ -1 +0,0 @@ -9596474d49066c85e453de78f4af85de \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__hcp_8c_ac8ec0a9f397508976922d1833a9a7626_cgraph.svg b/hcp/doxygen/html/fpc__hcp_8c_ac8ec0a9f397508976922d1833a9a7626_cgraph.svg deleted file mode 100644 index 74fb564..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c_ac8ec0a9f397508976922d1833a9a7626_cgraph.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - -fpc_hcp_transmit - - -Node1 - -fpc_hcp_transmit - - -Node2 - - -transmit_chunks - - - - -Node1->Node2 - - - - -Node3 - - -fpc_hcp_get_size - - - - -Node2->Node3 - - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8c_addefbe1e416979abcf59f7bf652e2a77_cgraph.map b/hcp/doxygen/html/fpc__hcp_8c_addefbe1e416979abcf59f7bf652e2a77_cgraph.map deleted file mode 100644 index e659c9d..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c_addefbe1e416979abcf59f7bf652e2a77_cgraph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/hcp/doxygen/html/fpc__hcp_8c_addefbe1e416979abcf59f7bf652e2a77_cgraph.md5 b/hcp/doxygen/html/fpc__hcp_8c_addefbe1e416979abcf59f7bf652e2a77_cgraph.md5 deleted file mode 100644 index db0e3fc..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c_addefbe1e416979abcf59f7bf652e2a77_cgraph.md5 +++ /dev/null @@ -1 +0,0 @@ -91c93424f2e67d8a35bdc3f37f89d5dc \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__hcp_8c_addefbe1e416979abcf59f7bf652e2a77_cgraph.svg b/hcp/doxygen/html/fpc__hcp_8c_addefbe1e416979abcf59f7bf652e2a77_cgraph.svg deleted file mode 100644 index d620794..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c_addefbe1e416979abcf59f7bf652e2a77_cgraph.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - -fpc_hcp_arg_copy_data - - -Node1 - -fpc_hcp_arg_copy_data - - -Node2 - - -fpc_hcp_arg_get - - - - -Node1->Node2 - - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8c_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.map b/hcp/doxygen/html/fpc__hcp_8c_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.map deleted file mode 100644 index 875eb9b..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/hcp/doxygen/html/fpc__hcp_8c_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.md5 b/hcp/doxygen/html/fpc__hcp_8c_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.md5 deleted file mode 100644 index 1836b85..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.md5 +++ /dev/null @@ -1 +0,0 @@ -529d025920f22b6a43cc9f025014d76b \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__hcp_8c_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.svg b/hcp/doxygen/html/fpc__hcp_8c_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.svg deleted file mode 100644 index e519ac1..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - -fpc_hcp_arg_check - - -Node1 - -fpc_hcp_arg_check - - -Node2 - - -fpc_hcp_arg_get - - - - -Node1->Node2 - - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8c_source.html b/hcp/doxygen/html/fpc__hcp_8c_source.html deleted file mode 100644 index 2e48205..0000000 --- a/hcp/doxygen/html/fpc__hcp_8c_source.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - -Host Communication Protocol: src/fpc_hcp.c Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    fpc_hcp.c
    -
    -
    -Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2020 Fingerprint Cards AB
    3  *
    4  * Licensed under the Apache License, Version 2.0 (the "License");
    5  * you may not use this file except in compliance with the License.
    6  * You may obtain a copy of the License at
    7  *
    8  * https://www.apache.org/licenses/LICENSE-2.0
    9  *
    10  * Unless required by applicable law or agreed to in writing, software
    11  * distributed under the License is distributed on an "AS IS" BASIS,
    12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  * See the License for the specific language governing permissions and
    14  * limitations under the License.
    15  */
    16 
    22 #include <stdlib.h>
    23 #include <string.h>
    24 
    25 #include "fpc_hcp.h"
    26 
    33 #define PACKET_ID_SIZE sizeof(((fpc_hcp_packet_t*)0)->id)
    34 #define PACKET_NUM_ARGS_SIZE sizeof(((fpc_hcp_packet_t*)0)->num_args)
    35 #define PACKET_HEADER_SIZE (PACKET_ID_SIZE + PACKET_NUM_ARGS_SIZE)
    36 
    44 #define ARGUMENT_ARG_SIZE sizeof(((fpc_hcp_arg_data_t*)0)->arg)
    45 #define ARGUMENT_SIZE_SIZE sizeof(((fpc_hcp_arg_data_t*)0)->size)
    46 #define ARGUMENT_HEADER_SIZE (ARGUMENT_ARG_SIZE + ARGUMENT_SIZE_SIZE)
    47 
    63 
    64 uint16_t fpc_hcp_get_size(fpc_hcp_packet_t *packet, uint16_t *num_args)
    65 {
    66  uint16_t size = 0;
    67  uint16_t args = 0;
    68 
    69  if (packet == NULL) {
    70  goto exit;
    71  }
    72  size = PACKET_HEADER_SIZE;
    73 
    74  for (uint8_t i = 0; i < packet->num_args; i++) {
    75  if (packet->arguments[i].arg != ARG_NONE) {
    76  size += ARGUMENT_HEADER_SIZE;
    77  size += packet->arguments[i].size;
    78  args++;
    79  }
    80  }
    81  if (num_args) {
    82  *num_args = args;
    83  }
    84 
    85 exit:
    86  return size;
    87 }
    88 
    90 {
    91  fpc_com_result_t result;
    92 
    93  if (chain == NULL || packet == NULL || chain->initialized == false ||
    94  chain->phy_mtu_buffer[FPC_COM_CHAIN_TX] == NULL) {
    96  goto exit;
    97  }
    98  chain->private_vars.hcp_packet = packet;
    99 
    100  if (chain->app_mtu_size[FPC_COM_CHAIN_TX] == 0 ||
    101  chain->app_mtu_buffer[FPC_COM_CHAIN_TX] == NULL) {
    102  uint16_t tsp_offset;
    103  uint16_t link_offset;
    104  uint16_t overhead;
    105 
    106  overhead = chain->tsp_overhead_get(&tsp_offset) + chain->link_overhead_get(&link_offset);
    108  + tsp_offset + link_offset;
    109  chain->app_mtu_size[FPC_COM_CHAIN_TX] = chain->phy_mtu_size[FPC_COM_CHAIN_TX] - overhead;
    110  }
    111  result = transmit_chunks(chain);
    112 
    113 exit:
    114  return result;
    115 }
    116 
    118 {
    119  fpc_com_result_t result;
    120 
    121  if (chain == NULL || packet == NULL || chain->initialized == false ||
    122  chain->phy_mtu_buffer[FPC_COM_CHAIN_RX] == NULL) {
    124  goto exit;
    125  }
    126  chain->private_vars.hcp_packet = packet;
    127 
    128  if (chain->app_mtu_size[FPC_COM_CHAIN_RX] == 0 ||
    129  chain->app_mtu_buffer[FPC_COM_CHAIN_RX] == NULL) {
    130  uint16_t tsp_offset;
    131  uint16_t link_offset;
    132  uint16_t overhead;
    133 
    134  overhead = chain->tsp_overhead_get(&tsp_offset) + chain->link_overhead_get(&link_offset);
    136  + tsp_offset + link_offset;
    137  chain->app_mtu_size[FPC_COM_CHAIN_RX] = chain->phy_mtu_size[FPC_COM_CHAIN_RX] - overhead;
    138  }
    139  result = recieve_chunks(chain);
    140 
    141 exit:
    142  return result;
    143 }
    144 
    145 bool fpc_hcp_arg_add(fpc_hcp_packet_t *packet, fpc_hcp_arg_t arg, uint16_t size, bool free_data,
    146  void *data)
    147 {
    148  bool result = false;
    149 
    150  if (packet == NULL || (size > 0 && data == NULL)) {
    151  goto exit;
    152  }
    153 
    154  for (uint8_t i = 0; i < packet->num_args; i++) {
    155  if (packet->arguments[i].arg == ARG_NONE) {
    156  packet->arguments[i].arg = arg;
    157  packet->arguments[i].size = size;
    158  packet->arguments[i].free_data = free_data;
    159  packet->arguments[i].data = data;
    160  result = true;
    161  break;
    162  }
    163  }
    164 
    165 exit:
    166  return result;
    167 }
    168 
    170  return fpc_hcp_arg_get(packet, arg) != NULL;
    171 }
    172 
    174 {
    175  for (uint8_t i = 0; i < packet->num_args; i++) {
    176  if (packet->arguments[i].arg == arg) {
    177  return &(packet->arguments[i]);
    178  }
    179  }
    180  return NULL;
    181 }
    182 
    183 bool fpc_hcp_arg_copy_data(fpc_hcp_packet_t *packet, fpc_hcp_arg_t arg, uint16_t data_size,
    184  uint8_t *data)
    185 {
    186  fpc_hcp_arg_data_t *arg_data = fpc_hcp_arg_get(packet, arg);
    187 
    188  if (arg_data == NULL || data == NULL || data_size == 0 || arg_data->size == 0
    189  || data_size > arg_data->size) {
    190  return false;
    191  }
    192 
    193  memcpy(data, arg_data->data, data_size);
    194 
    195  return true;
    196 }
    197 
    199 {
    200  if (chain && packet) {
    201  for (uint8_t i = 0; i < packet->num_args; i++) {
    202  if (packet->arguments[i].arg != ARG_NONE) {
    203  chain->argument_free(packet->id, &packet->arguments[i], chain->context);
    204  }
    205  }
    206  memset(packet->arguments, 0x0, sizeof(*packet->arguments) * packet->num_args);
    207  packet->id = CMD_NONE;
    208  }
    209 }
    210 
    212 {
    213  uint8_t *data;
    214  uint16_t rem_size;
    215  uint16_t id_rem_size;
    216  uint16_t size_rem_size;
    217  uint16_t arg_rem_size = 0;
    218  uint16_t arg_size;
    219  uint8_t *arg_data = NULL;
    220  uint16_t overhead;
    221  uint16_t arg_nr = 0;
    222  uint16_t num_args = 0;
    223  fpc_com_result_t result;
    224  bool first_packet = true;
    225  fpc_hcp_arg_t arg;
    226  uint16_t app_offset;
    227 
    228  /* Calculate application packet data MTU size */
    229  overhead = chain->app_overhead_get(&app_offset);
    230  if (overhead > chain->app_mtu_size[FPC_COM_CHAIN_RX]) {
    232  goto exit;
    233  }
    234 
    235  /* Retrieve application packets */
    236  do {
    237  /* Get packet from application layer */
    238  result = chain->app_rx(chain);
    239  if (result != FPC_COM_RESULT_OK) {
    240  break;
    241  }
    242 
    243  /* Get packet size */
    244  rem_size = chain->app_packet_size[FPC_COM_CHAIN_RX];
    245  data = chain->app_mtu_buffer[FPC_COM_CHAIN_RX] + app_offset;
    246 
    247  if (first_packet) {
    248  /* ID */
    249  chain->private_vars.hcp_packet->id = *((uint16_t *) data);
    250  data += PACKET_ID_SIZE;
    251 
    252  /* Number of arguments */
    253  num_args = *((uint16_t *) data);
    254  data += PACKET_NUM_ARGS_SIZE;
    255 
    256  first_packet = false;
    257  rem_size -= PACKET_HEADER_SIZE;
    258  id_rem_size = ARGUMENT_ARG_SIZE;
    259  size_rem_size = ARGUMENT_SIZE_SIZE;
    260  }
    261 
    262  while (rem_size && (arg_nr < num_args)) {
    263  uint16_t copy_size;
    264 
    265  if (rem_size && id_rem_size) {
    266  /* Set copy size */
    267  copy_size = HCP_MIN(id_rem_size, rem_size);
    268 
    269  /* Copy arg id */
    270  memcpy(((uint8_t *) &arg) + (ARGUMENT_ARG_SIZE - id_rem_size), data, copy_size);
    271  data += copy_size;
    272 
    273  /* Update parameters */
    274  id_rem_size -= copy_size;
    275  rem_size -= copy_size;
    276  }
    277 
    278  if (rem_size && size_rem_size) {
    279  bool status;
    280 
    281  /* Set copy size */
    282  copy_size = HCP_MIN(size_rem_size, rem_size);
    283 
    284  /* Copy arg size */
    285  memcpy(((uint8_t *) &arg_size) + (ARGUMENT_SIZE_SIZE - size_rem_size),
    286  data, copy_size);
    287  data += copy_size;
    288 
    289  /* Update parameters */
    290  size_rem_size -= copy_size;
    291  rem_size -= copy_size;
    292 
    293  if (size_rem_size == 0) {
    294  bool free_data = true;
    295 
    296  if (arg_size) {
    297  arg_data = chain->argument_allocator(chain->private_vars.hcp_packet->id,
    298  arg, arg_size, &free_data, chain->context);
    299  if (arg_data == NULL) {
    300  result = FPC_COM_RESULT_NO_MEMORY;
    301  break;
    302  }
    303  }
    304 
    305  status = fpc_hcp_arg_add(chain->private_vars.hcp_packet, arg, arg_size,
    306  free_data, arg_data);
    307  if (status == false) {
    308  fpc_hcp_arg_data_t arg_struct = { 0 };
    309 
    310  arg_struct.arg = arg;
    311  arg_struct.free_data = free_data;
    312  arg_struct.size = arg_size;
    313  arg_struct.data = arg_data;
    314  chain->argument_free(chain->private_vars.hcp_packet->id, &arg_struct,
    315  chain->context);
    316 
    317  if (arg_nr < num_args) {
    319  break;
    320  } else {
    321  result = FPC_COM_RESULT_NO_MEMORY;
    322  break;
    323  }
    324  }
    325  arg_rem_size = arg_size;
    326  }
    327  }
    328 
    329  if (rem_size && arg_rem_size) {
    330  /* Set copy size */
    331  copy_size = HCP_MIN(arg_rem_size, rem_size);
    332 
    333  /* Copy argument data */
    334  memcpy(arg_data + (arg_size - arg_rem_size), data, copy_size);
    335  data += copy_size;
    336 
    337  /* Update parameters */
    338  rem_size -= copy_size;
    339  arg_rem_size -= copy_size;
    340  }
    341 
    342  /* If data has been copied set new arg to true */
    343  if (id_rem_size == 0 && size_rem_size == 0 && arg_rem_size == 0) {
    344  id_rem_size = ARGUMENT_ARG_SIZE;
    345  size_rem_size = ARGUMENT_SIZE_SIZE;
    346  arg_nr++;
    347  }
    348  }
    349  } while (result == FPC_COM_RESULT_OK && arg_nr < num_args);
    350 
    351 exit:
    352  return result;
    353 }
    354 
    356 {
    357  uint16_t serialized_size;
    358  uint16_t packet_data_left;
    359  uint16_t data_rem_size = 0;
    360  uint16_t app_mtu;
    361  uint16_t overhead;
    362  fpc_com_result_t result;
    363  uint16_t num_args = 0;
    364  uint16_t arg_nr = 0;
    365  uint16_t app_offset;
    366  uint8_t *data;
    367  fpc_hcp_arg_data_t *arg_data = NULL;
    368 
    369 
    370  /* Calculate transport packet data MTU size */
    371  overhead = chain->app_overhead_get(&app_offset);
    372  if (overhead > chain->phy_mtu_size[FPC_COM_CHAIN_TX]) {
    374  goto exit;
    375  }
    376  app_mtu = chain->app_mtu_size[FPC_COM_CHAIN_TX] - overhead;
    377 
    378  /* Get application packet total serialized size */
    379  serialized_size = fpc_hcp_get_size(chain->private_vars.hcp_packet, &num_args);
    380 
    381  /* Set initial sequence length and size */
    382  /* Calculate sequence length (number of application packages) */
    383  chain->private_vars.hcp_seq_len = (serialized_size + app_mtu + 1) / app_mtu;
    384  chain->private_vars.hcp_seq_nr = 1;
    385 
    386  /* Set first packet size */
    387  chain->app_packet_size[FPC_COM_CHAIN_TX] = HCP_MIN(serialized_size, app_mtu);
    388  packet_data_left = chain->app_packet_size[FPC_COM_CHAIN_TX];
    389 
    390  /* Point packet data to application buffer */
    391  data = chain->app_mtu_buffer[FPC_COM_CHAIN_TX] + app_offset;
    392 
    393  /* Copy command ID to buffer */
    394  *((fpc_hcp_cmd_t *) data) = chain->private_vars.hcp_packet->id;
    395  data += PACKET_ID_SIZE;
    396 
    397  /* Copy number of arguments to buffer */
    398  *((uint16_t *) data) = num_args;
    399  data += PACKET_NUM_ARGS_SIZE;
    400 
    401  packet_data_left -= PACKET_HEADER_SIZE;
    402 
    403  do {
    404  /* Copy arguments to data blob */
    405  while (packet_data_left && arg_nr < num_args) {
    406  /* Copy arg header to buffer */
    407  if (!data_rem_size && packet_data_left >= ARGUMENT_HEADER_SIZE) {
    408  /* Get current argument */
    409  arg_data = &chain->private_vars.hcp_packet->arguments[arg_nr];
    410 
    411  /* Copy argument id */
    412  memcpy(data, &arg_data->arg, ARGUMENT_ARG_SIZE);
    413  data += ARGUMENT_ARG_SIZE;
    414 
    415  /* Copy argument size */
    416  memcpy(data, &arg_data->size, ARGUMENT_SIZE_SIZE);
    417  data += ARGUMENT_SIZE_SIZE;
    418 
    419  /* Update parameters */
    420  packet_data_left -= ARGUMENT_HEADER_SIZE;
    421  data_rem_size = arg_data->size;
    422  } else if (!data_rem_size && packet_data_left < ARGUMENT_HEADER_SIZE) {
    423  /*
    424  * Special case to ensure that the argument header
    425  * is not split over several packets as that will break the
    426  * argument allocator.
    427  */
    428  chain->app_packet_size[FPC_COM_CHAIN_TX] -= packet_data_left;
    429  break;
    430  }
    431 
    432  /* Copy argument data to transport package data blob */
    433  if (packet_data_left && data_rem_size) {
    434  uint16_t copy_size;
    435 
    436  /* Set copy size */
    437  copy_size = HCP_MIN(data_rem_size, packet_data_left);
    438 
    439  /* Copy argument data */
    440  memcpy(data, arg_data->data + (arg_data->size - data_rem_size), copy_size);
    441  data += copy_size;
    442 
    443  /* Update parameters */
    444  data_rem_size -= copy_size;
    445  packet_data_left -= copy_size;
    446  }
    447  if (!data_rem_size) {
    448  arg_nr++;
    449  }
    450  }
    451 
    452  /* Transmit transport package */
    453  result = chain->app_tx(chain);
    454 
    455  chain->private_vars.hcp_seq_nr++;
    456 
    457  /* Reduce data left counter */
    458  serialized_size -= chain->app_packet_size[FPC_COM_CHAIN_TX];
    459 
    460  /* Set next packet size */
    461  packet_data_left = HCP_MIN(serialized_size, app_mtu);
    462  chain->app_packet_size[FPC_COM_CHAIN_TX] = packet_data_left;
    463 
    464  /* Set destination offset to zero for next packet */
    465  data = chain->app_mtu_buffer[FPC_COM_CHAIN_TX] + app_offset;
    466  } while (result == FPC_COM_RESULT_OK && serialized_size);
    467 
    468 exit:
    469  return result;
    470 }
    -
    uint16_t fpc_hcp_cmd_t
    - -
    uint16_t(* tsp_overhead_get)(uint16_t *offset)
    Definition: fpc_com_chain.h:95
    -
    fpc_com_result_t(* app_tx)(fpc_com_chain_t *chain)
    Definition: fpc_com_chain.h:73
    -
    uint8_t * phy_mtu_buffer[2]
    -
    static fpc_com_result_t recieve_chunks(fpc_com_chain_t *chain)
    Handle receive chunks.
    Definition: fpc_hcp.c:211
    -
    uint16_t(* app_overhead_get)(uint16_t *offset)
    Definition: fpc_com_chain.h:77
    -
    uint16_t phy_mtu_size[2]
    - - -
    #define ARGUMENT_HEADER_SIZE
    Definition: fpc_hcp.c:46
    -
    bool fpc_hcp_arg_check(fpc_hcp_packet_t *packet, fpc_hcp_arg_t arg)
    Check if command contains selected argument key.
    Definition: fpc_hcp.c:169
    - - - - -
    Application Command Packet.
    -
    #define HCP_MIN(x, y)
    -
    uint16_t app_mtu_size[2]
    Definition: fpc_com_chain.h:81
    -
    bool fpc_hcp_arg_copy_data(fpc_hcp_packet_t *packet, fpc_hcp_arg_t arg, uint16_t data_size, uint8_t *data)
    Copy data from an argument with specified key.
    Definition: fpc_hcp.c:183
    -
    fpc_hcp_cmd_t id
    -
    void *(* argument_allocator)(fpc_hcp_cmd_t cmd, fpc_hcp_arg_t arg, uint16_t size, bool *free_data, void *context)
    Definition: fpc_com_chain.h:59
    -
    static fpc_com_result_t transmit_chunks(fpc_com_chain_t *chain)
    Handle transmit chunks.
    Definition: fpc_hcp.c:355
    -
    #define PACKET_HEADER_SIZE
    Definition: fpc_hcp.c:35
    -
    fpc_hcp_arg_data_t * fpc_hcp_arg_get(fpc_hcp_packet_t *packet, fpc_hcp_arg_t arg)
    Get Argument with specified key.
    Definition: fpc_hcp.c:173
    -
    void * context
    User context pointer. User private stuff, to be able to pass nessecary context to argument_allocator ...
    - -
    void(* argument_free)(fpc_hcp_cmd_t cmd, fpc_hcp_arg_data_t *arg_data, void *context)
    Definition: fpc_com_chain.h:62
    -
    #define PACKET_NUM_ARGS_SIZE
    Definition: fpc_hcp.c:34
    -
    Command Argument.
    - -
    #define ARGUMENT_ARG_SIZE
    Definition: fpc_hcp.c:44
    -
    bool fpc_hcp_arg_add(fpc_hcp_packet_t *packet, fpc_hcp_arg_t arg, uint16_t size, bool free_data, void *data)
    Add argument to packet.
    Definition: fpc_hcp.c:145
    -
    fpc_com_result_t fpc_hcp_transmit(fpc_hcp_packet_t *packet, fpc_com_chain_t *chain)
    Transmits an application packet through the supplied transmit chain.
    Definition: fpc_hcp.c:89
    - -
    uint16_t app_packet_size[2]
    Definition: fpc_com_chain.h:79
    -
    uint8_t * app_mtu_buffer[2]
    Definition: fpc_com_chain.h:83
    - -
    uint16_t fpc_hcp_arg_t
    -
    uint16_t(* link_overhead_get)(uint16_t *offset)
    -
    #define PACKET_ID_SIZE
    Definition: fpc_hcp.c:33
    -
    fpc_hcp_arg_data_t * arguments
    -
    uint8_t fpc_com_result_t
    -
    fpc_hcp_packet_t * hcp_packet
    Definition: fpc_com_chain.h:38
    -
    fpc_com_chain_private_t private_vars
    -
    uint16_t fpc_hcp_get_size(fpc_hcp_packet_t *packet, uint16_t *num_args)
    Calculate serialized packet size.
    Definition: fpc_hcp.c:64
    - -
    fpc_com_result_t fpc_hcp_receive(fpc_hcp_packet_t *packet, fpc_com_chain_t *chain)
    Receives an application packet through the supplied transmit chain.
    Definition: fpc_hcp.c:117
    -
    fpc_hcp_arg_t arg
    -
    Host Communication Protocol interface.
    - -
    #define ARGUMENT_SIZE_SIZE
    Definition: fpc_hcp.c:45
    -
    void fpc_hcp_free(fpc_com_chain_t *chain, fpc_hcp_packet_t *packet)
    Frees the resources held by the packet i.e. the dynamic data held in the arguments.
    Definition: fpc_hcp.c:198
    -
    fpc_com_result_t(* app_rx)(fpc_com_chain_t *chain)
    Definition: fpc_com_chain.h:75
    - -
    -
    - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8h.html b/hcp/doxygen/html/fpc__hcp_8h.html deleted file mode 100644 index 8b503ba..0000000 --- a/hcp/doxygen/html/fpc__hcp_8h.html +++ /dev/null @@ -1,528 +0,0 @@ - - - - - - -Host Communication Protocol: inc/fpc_hcp.h File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    fpc_hcp.h File Reference
    -
    -
    - -

    Host Communication Protocol interface. -More...

    -
    #include <stdbool.h>
    -#include <stdint.h>
    -#include "fpc_hcp_common.h"
    -#include "fpc_com_chain.h"
    -
    -Include dependency graph for fpc_hcp.h:
    -
    -
    -
    -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    -
    -
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    fpc_com_result_t fpc_hcp_transmit (fpc_hcp_packet_t *packet, fpc_com_chain_t *chain)
     Transmits an application packet through the supplied transmit chain. More...
     
    fpc_com_result_t fpc_hcp_receive (fpc_hcp_packet_t *packet, fpc_com_chain_t *chain)
     Receives an application packet through the supplied transmit chain. More...
     
    bool fpc_hcp_arg_add (fpc_hcp_packet_t *packet, fpc_hcp_arg_t arg, uint16_t size, bool free_data, void *data)
     Add argument to packet. More...
     
    bool fpc_hcp_arg_check (fpc_hcp_packet_t *packet, fpc_hcp_arg_t arg)
     Check if command contains selected argument key. More...
     
    fpc_hcp_arg_data_tfpc_hcp_arg_get (fpc_hcp_packet_t *packet, fpc_hcp_arg_t arg)
     Get Argument with specified key. More...
     
    bool fpc_hcp_arg_copy_data (fpc_hcp_packet_t *packet, fpc_hcp_arg_t arg, uint16_t data_size, uint8_t *data)
     Copy data from an argument with specified key. More...
     
    void fpc_hcp_free (fpc_com_chain_t *chain, fpc_hcp_packet_t *packet)
     Frees the resources held by the packet i.e. the dynamic data held in the arguments. More...
     
    uint16_t fpc_hcp_get_size (fpc_hcp_packet_t *packet, uint16_t *num_args)
     Calculate serialized packet size. More...
     
    -

    Detailed Description

    -

    Host Communication Protocol interface.

    - -

    Definition in file fpc_hcp.h.

    -

    Function Documentation

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool fpc_hcp_arg_add (fpc_hcp_packet_tpacket,
    fpc_hcp_arg_t arg,
    uint16_t size,
    bool free_data,
    void * data 
    )
    -
    - -

    Add argument to packet.

    -
    Note
    This function does not allocate any memory, it will only set the argument variables.
    -
    Parameters
    - - - - - - -
    [in]packetPacket to add to.
    [in]argArgument id.
    [in]sizeSize of argument data.
    [in]free_dataSet to true if data should be owned by the argument, false if user still owns data.
    [in]dataPointer to argument data.
    -
    -
    -
    Returns
    true = success, false = failure.
    - -

    Definition at line 145 of file fpc_hcp.c.

    - -

    References fpc_hcp_arg_data::arg, ARG_NONE, fpc_hcp_packet::arguments, fpc_hcp_arg_data::data, fpc_hcp_arg_data::free_data, fpc_hcp_packet::num_args, and fpc_hcp_arg_data::size.

    - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    bool fpc_hcp_arg_check (fpc_hcp_packet_tpacket,
    fpc_hcp_arg_t arg 
    )
    -
    - -

    Check if command contains selected argument key.

    -
    Parameters
    - - - -
    [in]packetThe packet to scan.
    [in]argArgument to look for.
    -
    -
    -
    Returns
    true if found, false if not found.
    - -

    Definition at line 169 of file fpc_hcp.c.

    - -

    References fpc_hcp_arg_get().

    - -

    -Here is the call graph for this function:
    -
    -
    -
    -
    -

    - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool fpc_hcp_arg_copy_data (fpc_hcp_packet_tpacket,
    fpc_hcp_arg_t arg,
    uint16_t data_size,
    uint8_t * data 
    )
    -
    - -

    Copy data from an argument with specified key.

    -

    Argument data will be copied to specified data buffer. Remaining bytes in data will be cleared if the argument data size is less than data size when the argument contains data.

    -
    Parameters
    - - - - - -
    [in]packetThe packet to operate on.
    [in]argThe arg to retrieve data from.
    [in]data_sizeNumber of bytes to copy.
    [in,out]dataPointer to data buffer.
    -
    -
    -
    Returns
    True if argument found, false if not found.
    - -

    Definition at line 183 of file fpc_hcp.c.

    - -

    References fpc_hcp_arg_data::data, fpc_hcp_arg_get(), and fpc_hcp_arg_data::size.

    - -

    -Here is the call graph for this function:
    -
    -
    -
    -
    -

    - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    fpc_hcp_arg_data_t* fpc_hcp_arg_get (fpc_hcp_packet_tpacket,
    fpc_hcp_arg_t arg 
    )
    -
    - -

    Get Argument with specified key.

    -
    Parameters
    - - - -
    [in]packetThe packet to operate on.
    [in]argThe arg to retrieve.
    -
    -
    -
    Returns
    Pointer to fpc_hcp_arg_data_t is successful, otherwise NULL.
    - -

    Definition at line 173 of file fpc_hcp.c.

    - -

    References fpc_hcp_arg_data::arg, fpc_hcp_packet::arguments, and fpc_hcp_packet::num_args.

    - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void fpc_hcp_free (fpc_com_chain_tchain,
    fpc_hcp_packet_tpacket 
    )
    -
    - -

    Frees the resources held by the packet i.e. the dynamic data held in the arguments.

    -
    Parameters
    - - - -
    [in]chainPointer to the communication chain used to retrieve the packet.
    [in]packetPointer to packet.
    -
    -
    - -

    Definition at line 198 of file fpc_hcp.c.

    - -

    References fpc_hcp_arg_data::arg, ARG_NONE, fpc_com_chain::argument_free, fpc_hcp_packet::arguments, CMD_NONE, fpc_com_chain::context, fpc_hcp_packet::id, and fpc_hcp_packet::num_args.

    - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    uint16_t fpc_hcp_get_size (fpc_hcp_packet_tpacket,
    uint16_t * num_args 
    )
    -
    - -

    Calculate serialized packet size.

    -
    Parameters
    - - - -
    [in]packetPacket to calculate.
    [in,out]num_argsWill return number of arguments held by the command can be set to NULL.
    -
    -
    -
    Returns
    Serialized size.
    - -

    Definition at line 64 of file fpc_hcp.c.

    - -

    References fpc_hcp_arg_data::arg, ARG_NONE, ARGUMENT_HEADER_SIZE, fpc_hcp_packet::arguments, fpc_hcp_packet::num_args, PACKET_HEADER_SIZE, and fpc_hcp_arg_data::size.

    - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    fpc_com_result_t fpc_hcp_receive (fpc_hcp_packet_tpacket,
    fpc_com_chain_tchain 
    )
    -
    - -

    Receives an application packet through the supplied transmit chain.

    -
    Parameters
    - - - -
    [in,out]packetPointer to pre-allocated packet struct.
    [in]chainThe chain to use.
    -
    -
    -
    Returns
    fpc_com_result_t
    - -

    Definition at line 117 of file fpc_hcp.c.

    - -

    References fpc_com_chain::app_mtu_buffer, fpc_com_chain::app_mtu_size, FPC_COM_CHAIN_RX, FPC_COM_RESULT_INVALID_ARGUMENT, fpc_com_chain_private::hcp_packet, fpc_com_chain::initialized, fpc_com_chain::link_overhead_get, fpc_com_chain::phy_mtu_buffer, fpc_com_chain::phy_mtu_size, fpc_com_chain::private_vars, recieve_chunks(), and fpc_com_chain::tsp_overhead_get.

    - -

    -Here is the call graph for this function:
    -
    -
    -
    -
    -

    - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    fpc_com_result_t fpc_hcp_transmit (fpc_hcp_packet_tpacket,
    fpc_com_chain_tchain 
    )
    -
    - -

    Transmits an application packet through the supplied transmit chain.

    -
    Parameters
    - - - -
    [in]packetApplication packet to send.
    [in]chainThe chain to use.
    -
    -
    -
    Returns
    fpc_com_result_t
    - -

    Definition at line 89 of file fpc_hcp.c.

    - -

    References fpc_com_chain::app_mtu_buffer, fpc_com_chain::app_mtu_size, FPC_COM_CHAIN_TX, FPC_COM_RESULT_INVALID_ARGUMENT, fpc_com_chain_private::hcp_packet, fpc_com_chain::initialized, fpc_com_chain::link_overhead_get, fpc_com_chain::phy_mtu_buffer, fpc_com_chain::phy_mtu_size, fpc_com_chain::private_vars, transmit_chunks(), and fpc_com_chain::tsp_overhead_get.

    - -

    -Here is the call graph for this function:
    -
    -
    -
    -
    -

    - -
    -
    -
    -
    - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8h.js b/hcp/doxygen/html/fpc__hcp_8h.js deleted file mode 100644 index e6cd45e..0000000 --- a/hcp/doxygen/html/fpc__hcp_8h.js +++ /dev/null @@ -1,11 +0,0 @@ -var fpc__hcp_8h = -[ - [ "fpc_hcp_arg_add", "fpc__hcp_8h.html#a9b6886d13174fd6e88bd673ba09cca7d", null ], - [ "fpc_hcp_arg_check", "fpc__hcp_8h.html#ae1b7ce8b198acf7c8f6802300e2591ea", null ], - [ "fpc_hcp_arg_copy_data", "fpc__hcp_8h.html#addefbe1e416979abcf59f7bf652e2a77", null ], - [ "fpc_hcp_arg_get", "fpc__hcp_8h.html#a3860f01dade55ac5f55e85342b8f6d0d", null ], - [ "fpc_hcp_free", "fpc__hcp_8h.html#a78f14eb8269c8f17ea46f01beab88608", null ], - [ "fpc_hcp_get_size", "fpc__hcp_8h.html#a144fab9621ae9cd7abb8e3660b20265f", null ], - [ "fpc_hcp_receive", "fpc__hcp_8h.html#aa964fefb0fc68032f44850ee060b8e9b", null ], - [ "fpc_hcp_transmit", "fpc__hcp_8h.html#ac8ec0a9f397508976922d1833a9a7626", null ] -]; \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__hcp_8h__dep__incl.map b/hcp/doxygen/html/fpc__hcp_8h__dep__incl.map deleted file mode 100644 index e49a625..0000000 --- a/hcp/doxygen/html/fpc__hcp_8h__dep__incl.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/hcp/doxygen/html/fpc__hcp_8h__dep__incl.md5 b/hcp/doxygen/html/fpc__hcp_8h__dep__incl.md5 deleted file mode 100644 index 0a0ff1c..0000000 --- a/hcp/doxygen/html/fpc__hcp_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -8e99a82fe41fc214aaf6dbfd0f5240cc \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__hcp_8h__dep__incl.svg b/hcp/doxygen/html/fpc__hcp_8h__dep__incl.svg deleted file mode 100644 index 2f3569a..0000000 --- a/hcp/doxygen/html/fpc__hcp_8h__dep__incl.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - -inc/fpc_hcp.h - - -Node1 - -inc/fpc_hcp.h - - -Node2 - - -src/fpc_hcp.c - - - - -Node1->Node2 - - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8h__incl.map b/hcp/doxygen/html/fpc__hcp_8h__incl.map deleted file mode 100644 index ef9503b..0000000 --- a/hcp/doxygen/html/fpc__hcp_8h__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8h__incl.md5 b/hcp/doxygen/html/fpc__hcp_8h__incl.md5 deleted file mode 100644 index 9950163..0000000 --- a/hcp/doxygen/html/fpc__hcp_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -08bf749f5323a0049976eab702f0245f \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__hcp_8h__incl.svg b/hcp/doxygen/html/fpc__hcp_8h__incl.svg deleted file mode 100644 index 0b102d6..0000000 --- a/hcp/doxygen/html/fpc__hcp_8h__incl.svg +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - -inc/fpc_hcp.h - - -Node1 - -inc/fpc_hcp.h - - -Node2 - -stdbool.h - - -Node1->Node2 - - - - -Node3 - -stdint.h - - -Node1->Node3 - - - - -Node4 - - -fpc_hcp_common.h - - - - -Node1->Node4 - - - - -Node5 - - -fpc_com_chain.h - - - - -Node1->Node5 - - - - -Node4->Node2 - - - - -Node4->Node3 - - - - -Node5->Node3 - - - - -Node5->Node4 - - - - -Node6 - - -fpc_com_result.h - - - - -Node5->Node6 - - - - -Node7 - - -fpc_com_packets.h - - - - -Node5->Node7 - - - - -Node6->Node3 - - - - -Node7->Node3 - - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8h_aa964fefb0fc68032f44850ee060b8e9b_cgraph.map b/hcp/doxygen/html/fpc__hcp_8h_aa964fefb0fc68032f44850ee060b8e9b_cgraph.map deleted file mode 100644 index 40790a0..0000000 --- a/hcp/doxygen/html/fpc__hcp_8h_aa964fefb0fc68032f44850ee060b8e9b_cgraph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8h_aa964fefb0fc68032f44850ee060b8e9b_cgraph.md5 b/hcp/doxygen/html/fpc__hcp_8h_aa964fefb0fc68032f44850ee060b8e9b_cgraph.md5 deleted file mode 100644 index e4c2356..0000000 --- a/hcp/doxygen/html/fpc__hcp_8h_aa964fefb0fc68032f44850ee060b8e9b_cgraph.md5 +++ /dev/null @@ -1 +0,0 @@ -c8a1373f76cbcb80bc7197d6f8738d54 \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__hcp_8h_aa964fefb0fc68032f44850ee060b8e9b_cgraph.svg b/hcp/doxygen/html/fpc__hcp_8h_aa964fefb0fc68032f44850ee060b8e9b_cgraph.svg deleted file mode 100644 index dd37a6b..0000000 --- a/hcp/doxygen/html/fpc__hcp_8h_aa964fefb0fc68032f44850ee060b8e9b_cgraph.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - -fpc_hcp_receive - - -Node1 - -fpc_hcp_receive - - -Node2 - - -recieve_chunks - - - - -Node1->Node2 - - - - -Node3 - - -fpc_hcp_arg_add - - - - -Node2->Node3 - - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8h_ac8ec0a9f397508976922d1833a9a7626_cgraph.map b/hcp/doxygen/html/fpc__hcp_8h_ac8ec0a9f397508976922d1833a9a7626_cgraph.map deleted file mode 100644 index 0bedd7e..0000000 --- a/hcp/doxygen/html/fpc__hcp_8h_ac8ec0a9f397508976922d1833a9a7626_cgraph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8h_ac8ec0a9f397508976922d1833a9a7626_cgraph.md5 b/hcp/doxygen/html/fpc__hcp_8h_ac8ec0a9f397508976922d1833a9a7626_cgraph.md5 deleted file mode 100644 index a496d1c..0000000 --- a/hcp/doxygen/html/fpc__hcp_8h_ac8ec0a9f397508976922d1833a9a7626_cgraph.md5 +++ /dev/null @@ -1 +0,0 @@ -9596474d49066c85e453de78f4af85de \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__hcp_8h_ac8ec0a9f397508976922d1833a9a7626_cgraph.svg b/hcp/doxygen/html/fpc__hcp_8h_ac8ec0a9f397508976922d1833a9a7626_cgraph.svg deleted file mode 100644 index 74fb564..0000000 --- a/hcp/doxygen/html/fpc__hcp_8h_ac8ec0a9f397508976922d1833a9a7626_cgraph.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - -fpc_hcp_transmit - - -Node1 - -fpc_hcp_transmit - - -Node2 - - -transmit_chunks - - - - -Node1->Node2 - - - - -Node3 - - -fpc_hcp_get_size - - - - -Node2->Node3 - - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8h_addefbe1e416979abcf59f7bf652e2a77_cgraph.map b/hcp/doxygen/html/fpc__hcp_8h_addefbe1e416979abcf59f7bf652e2a77_cgraph.map deleted file mode 100644 index e659c9d..0000000 --- a/hcp/doxygen/html/fpc__hcp_8h_addefbe1e416979abcf59f7bf652e2a77_cgraph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/hcp/doxygen/html/fpc__hcp_8h_addefbe1e416979abcf59f7bf652e2a77_cgraph.md5 b/hcp/doxygen/html/fpc__hcp_8h_addefbe1e416979abcf59f7bf652e2a77_cgraph.md5 deleted file mode 100644 index db0e3fc..0000000 --- a/hcp/doxygen/html/fpc__hcp_8h_addefbe1e416979abcf59f7bf652e2a77_cgraph.md5 +++ /dev/null @@ -1 +0,0 @@ -91c93424f2e67d8a35bdc3f37f89d5dc \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__hcp_8h_addefbe1e416979abcf59f7bf652e2a77_cgraph.svg b/hcp/doxygen/html/fpc__hcp_8h_addefbe1e416979abcf59f7bf652e2a77_cgraph.svg deleted file mode 100644 index d620794..0000000 --- a/hcp/doxygen/html/fpc__hcp_8h_addefbe1e416979abcf59f7bf652e2a77_cgraph.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - -fpc_hcp_arg_copy_data - - -Node1 - -fpc_hcp_arg_copy_data - - -Node2 - - -fpc_hcp_arg_get - - - - -Node1->Node2 - - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8h_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.map b/hcp/doxygen/html/fpc__hcp_8h_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.map deleted file mode 100644 index 875eb9b..0000000 --- a/hcp/doxygen/html/fpc__hcp_8h_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/hcp/doxygen/html/fpc__hcp_8h_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.md5 b/hcp/doxygen/html/fpc__hcp_8h_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.md5 deleted file mode 100644 index 1836b85..0000000 --- a/hcp/doxygen/html/fpc__hcp_8h_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.md5 +++ /dev/null @@ -1 +0,0 @@ -529d025920f22b6a43cc9f025014d76b \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__hcp_8h_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.svg b/hcp/doxygen/html/fpc__hcp_8h_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.svg deleted file mode 100644 index e519ac1..0000000 --- a/hcp/doxygen/html/fpc__hcp_8h_ae1b7ce8b198acf7c8f6802300e2591ea_cgraph.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - -fpc_hcp_arg_check - - -Node1 - -fpc_hcp_arg_check - - -Node2 - - -fpc_hcp_arg_get - - - - -Node1->Node2 - - - - - diff --git a/hcp/doxygen/html/fpc__hcp_8h_source.html b/hcp/doxygen/html/fpc__hcp_8h_source.html deleted file mode 100644 index ed3ceae..0000000 --- a/hcp/doxygen/html/fpc__hcp_8h_source.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - -Host Communication Protocol: inc/fpc_hcp.h Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    fpc_hcp.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2020 Fingerprint Cards AB
    3  *
    4  * Licensed under the Apache License, Version 2.0 (the "License");
    5  * you may not use this file except in compliance with the License.
    6  * You may obtain a copy of the License at
    7  *
    8  * https://www.apache.org/licenses/LICENSE-2.0
    9  *
    10  * Unless required by applicable law or agreed to in writing, software
    11  * distributed under the License is distributed on an "AS IS" BASIS,
    12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  * See the License for the specific language governing permissions and
    14  * limitations under the License.
    15  */
    16 
    22 #ifndef FPC_HCP_H
    23 #define FPC_HCP_H
    24 
    25 #include <stdbool.h>
    26 #include <stdint.h>
    27 
    28 #include "fpc_hcp_common.h"
    29 #include "fpc_com_chain.h"
    30 
    31 #ifdef __cplusplus
    32 extern "C" {
    33 #endif /* __cplusplus */
    34 
    43 
    52 
    66 bool fpc_hcp_arg_add(fpc_hcp_packet_t *packet, fpc_hcp_arg_t arg, uint16_t size, bool free_data,
    67  void *data);
    68 
    77 
    86 
    101 bool fpc_hcp_arg_copy_data(fpc_hcp_packet_t *packet, fpc_hcp_arg_t arg, uint16_t data_size,
    102  uint8_t *data);
    103 
    110 void fpc_hcp_free(fpc_com_chain_t *chain, fpc_hcp_packet_t *packet);
    111 
    119 uint16_t fpc_hcp_get_size(fpc_hcp_packet_t *packet, uint16_t *num_args);
    120 
    121 #ifdef __cplusplus
    122 }
    123 #endif /* __cplusplus */
    124 
    125 #endif /* FPC_HCP_H */
    bool fpc_hcp_arg_check(fpc_hcp_packet_t *packet, fpc_hcp_arg_t arg)
    Check if command contains selected argument key.
    Definition: fpc_hcp.c:169
    - -
    Application Command Packet.
    -
    fpc_hcp_arg_data_t * fpc_hcp_arg_get(fpc_hcp_packet_t *packet, fpc_hcp_arg_t arg)
    Get Argument with specified key.
    Definition: fpc_hcp.c:173
    -
    Communication chain type definitions.
    -
    Command Argument.
    -
    bool fpc_hcp_arg_add(fpc_hcp_packet_t *packet, fpc_hcp_arg_t arg, uint16_t size, bool free_data, void *data)
    Add argument to packet.
    Definition: fpc_hcp.c:145
    -
    fpc_com_result_t fpc_hcp_receive(fpc_hcp_packet_t *packet, fpc_com_chain_t *chain)
    Receives an application packet through the supplied transmit chain.
    Definition: fpc_hcp.c:117
    -
    uint16_t fpc_hcp_arg_t
    -
    uint16_t fpc_hcp_get_size(fpc_hcp_packet_t *packet, uint16_t *num_args)
    Calculate serialized packet size.
    Definition: fpc_hcp.c:64
    -
    bool fpc_hcp_arg_copy_data(fpc_hcp_packet_t *packet, fpc_hcp_arg_t arg, uint16_t data_size, uint8_t *data)
    Copy data from an argument with specified key.
    Definition: fpc_hcp.c:183
    -
    fpc_com_result_t fpc_hcp_transmit(fpc_hcp_packet_t *packet, fpc_com_chain_t *chain)
    Transmits an application packet through the supplied transmit chain.
    Definition: fpc_hcp.c:89
    -
    uint8_t fpc_com_result_t
    -
    Host Communication Protocol common type definitions.
    -
    void fpc_hcp_free(fpc_com_chain_t *chain, fpc_hcp_packet_t *packet)
    Frees the resources held by the packet i.e. the dynamic data held in the arguments.
    Definition: fpc_hcp.c:198
    -
    -
    - - - - diff --git a/hcp/doxygen/html/fpc__hcp__common_8h.html b/hcp/doxygen/html/fpc__hcp__common_8h.html deleted file mode 100644 index 2d8c85e..0000000 --- a/hcp/doxygen/html/fpc__hcp__common_8h.html +++ /dev/null @@ -1,691 +0,0 @@ - - - - - - -Host Communication Protocol: inc/fpc_hcp_common.h File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    fpc_hcp_common.h File Reference
    -
    -
    - -

    Host Communication Protocol common type definitions. -More...

    -
    #include <stdint.h>
    -#include <stdbool.h>
    -
    -Include dependency graph for fpc_hcp_common.h:
    -
    -
    -
    -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    -
    -
    -
    -

    Go to the source code of this file.

    - - - - - - - - -

    -Data Structures

    struct  fpc_hcp_arg_data
     Command Argument. More...
     
    struct  fpc_hcp_packet
     Application Command Packet. More...
     
    - - - - - - - -

    -Macros

    #define HCP_MIN(x, y)   (((x) < (y)) ? (x) : (y))
     
    #define CMD_APP_BASE_VAL   0xE000
     
    #define ARG_APP_BASE_VAL   0x7000
     
    - - - - - - - - - - - -

    -Typedefs

    typedef uint16_t fpc_hcp_cmd_t
     
    typedef uint16_t fpc_hcp_arg_t
     
    typedef struct fpc_hcp_arg_data fpc_hcp_arg_data_t
     Command Argument. More...
     
    typedef struct fpc_hcp_packet fpc_hcp_packet_t
     Application Command Packet. More...
     
    - - - - - -

    -Enumerations

    enum  fpc_hcp_cmd {
    -  CMD_NONE = 0x0000, -
    -  CMD_CAPTURE = 0x0001, -
    -  CMD_ENROLL = 0x0002, -
    -  CMD_IDENTIFY = 0x0003, -
    -  CMD_MATCH = 0x0004, -
    -  CMD_IMAGE = 0x0005, -
    -  CMD_TEMPLATE = 0x0006, -
    -  CMD_WAIT = 0x0007, -
    -  CMD_SETTINGS = 0x0008, -
    -  CMD_NAVIGATE = 0x1001, -
    -  CMD_SENSOR = 0x1002, -
    -  CMD_DEADPIXELS = 0x1003, -
    -  CMD_CONNECT = 0x2001, -
    -  CMD_RECONNECT = 0x2002, -
    -  CMD_RESET = 0x3002, -
    -  CMD_CANCEL = 0x3003, -
    -  CMD_INFO = 0x3004, -
    -  CMD_STORAGE_TEMPLATE = 0x4002, -
    -  CMD_STORAGE_CALIBRATION = 0x4003, -
    -  CMD_STORAGE_LOG = 0x4004, -
    -  CMD_STORAGE_SETTINGS = 0x4005, -
    -  CMD_TEST = 0x5001, -
    -  CMD_MCU = 0x5002, -
    -  CMD_GPIO = 0x5003, -
    -  CMD_COMMUNICATION = 0x6001, -
    -  CMD_APP_BASE = CMD_APP_BASE_VAL, -
    -  CMD_DIAG = 0xF003, -
    -  CMD_FFFF = 0xFFFF -
    - }
     
    enum  fpc_hcp_arg {
    -  ARG_NONE = 0x0000, -
    -  ARG_FINGER_DOWN = 0x0001, -
    -  ARG_FINGER_UP = 0x0002, -
    -  ARG_START = 0x0003, -
    -  ARG_ADD = 0x0004, -
    -  ARG_FINISH = 0x0005, -
    -  ARG_ID = 0x0006, -
    -  ARG_ALL = 0x0007, -
    -  ARG_EXTRACT = 0x0008, -
    -  ARG_MATCH_IMAGE = 0x0009, -
    -  ARG_MATCH = 0x000A, -
    -  ARG_ACQUIRE = 0x1001, -
    -  ARG_RELEASE = 0x1002, -
    -  ARG_SET = 0x1003, -
    -  ARG_GET = 0x1004, -
    -  ARG_UPLOAD = 0x1005, -
    -  ARG_DOWNLOAD = 0x1006, -
    -  ARG_CREATE = 0x1007, -
    -  ARG_SAVE = 0x1008, -
    -  ARG_DELETE = 0x1009, -
    -  ARG_DATA = 0x100A, -
    -  ARG_UPDATE = 0x100B, -
    -  ARG_SEQ_NR = 0x100C, -
    -  ARG_SEQ_LEN = 0x100D, -
    -  ARG_RESULT = 0x2001, -
    -  ARG_COUNT = 0x2002, -
    -  ARG_SIZE = 0x2003, -
    -  ARG_LEVEL = 0x2004, -
    -  ARG_FORMAT = 0x2005, -
    -  ARG_FLAG = 0x2006, -
    -  ARG_PROPERTIES = 0x2007, -
    -  ARG_SPEED = 0x2008, -
    -  ARG_PROD_TEST = 0x2009, -
    -  ARG_SENSOR_TYPE = 0x3001, -
    -  ARG_WIDTH = 0x3002, -
    -  ARG_HEIGHT = 0x3003, -
    -  ARG_RESET = 0x3004, -
    -  ARG_DPI = 0x3005, -
    -  ARG_MAX_SPI_CLOCK = 0x3006, -
    -  ARG_NUM_SUB_AREAS_WIDTH = 0x3007, -
    -  ARG_NUM_SUB_AREAS_HEIGHT = 0x3008, -
    -  ARG_IRQ_STATUS = 0x3009, -
    -  ARG_RESET_HARD = 0x300A, -
    -  ARG_IDLE = 0x4001, -
    -  ARG_SLEEP = 0x4002, -
    -  ARG_DEEP_SLEEP = 0x4003, -
    -  ARG_POWER_MODE = 0x4004, -
    -  ARG_BUSY_WAIT = 0x4005, -
    -  ARG_TIMEOUT = 0x5001, -
    -  ARG_DONE = 0x5002, -
    -  ARG_BOOT = 0x6001, -
    -  ARG_STATUS = 0x6002, -
    -  ARG_VERSION = 0x6003, -
    -  ARG_UNIQUE_ID = 0x6004, -
    -  ARG_APP_BASE = ARG_APP_BASE_VAL, -
    -  ARG_NONCE = 0x8001, -
    -  ARG_MAC = 0x8002, -
    -  ARG_RANDOM = 0x8003, -
    -  ARG_CLAIM = 0x8004, -
    -  ARG_PUBLIC_KEY = 0x8005, -
    -  ARG_CIPHERTEXT = 0x8006, -
    -  ARG_MTU = 0x9001, -
    -  ARG_STACK = 0xE001, -
    -  ARG_FILL = 0xE002, -
    -  ARG_HEAP = 0xE003, -
    -  ARG_MODE = 0xF001, -
    -  ARG_DEBUG = 0xF002, -
    -  ARG_FFFF = 0xFFFF -
    - }
     
    -

    Detailed Description

    -

    Host Communication Protocol common type definitions.

    - -

    Definition in file fpc_hcp_common.h.

    -

    Macro Definition Documentation

    - -
    -
    - - - - -
    #define ARG_APP_BASE_VAL   0x7000
    -
    -

    Program specific arguments base number

    - -

    Definition at line 39 of file fpc_hcp_common.h.

    - -
    -
    - -
    -
    - - - - -
    #define CMD_APP_BASE_VAL   0xE000
    -
    -

    Program specific commands base number

    - -

    Definition at line 36 of file fpc_hcp_common.h.

    - -
    -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define HCP_MIN( x,
     
    )   (((x) < (y)) ? (x) : (y))
    -
    -

    Returns the smallest of two values.

    - -

    Definition at line 33 of file fpc_hcp_common.h.

    - -
    -
    -

    Typedef Documentation

    - -
    -
    - - - - -
    typedef struct fpc_hcp_arg_data fpc_hcp_arg_data_t
    -
    - -

    Command Argument.

    - -
    -
    - -
    -
    - - - - -
    typedef uint16_t fpc_hcp_arg_t
    -
    -

    HCP Argument type

    - -

    Definition at line 191 of file fpc_hcp_common.h.

    - -
    -
    - -
    -
    - - - - -
    typedef uint16_t fpc_hcp_cmd_t
    -
    -

    HCP Command type

    - -

    Definition at line 92 of file fpc_hcp_common.h.

    - -
    -
    - -
    -
    - - - - -
    typedef struct fpc_hcp_packet fpc_hcp_packet_t
    -
    - -

    Application Command Packet.

    - -
    -
    -

    Enumeration Type Documentation

    - -
    -
    - - - - -
    enum fpc_hcp_arg
    -
    -

    HCP Argument definitions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Enumerator
    ARG_NONE  -
    ARG_FINGER_DOWN  -
    ARG_FINGER_UP  -
    ARG_START  -
    ARG_ADD  -
    ARG_FINISH  -
    ARG_ID  -
    ARG_ALL  -
    ARG_EXTRACT  -
    ARG_MATCH_IMAGE  -
    ARG_MATCH  -
    ARG_ACQUIRE  -
    ARG_RELEASE  -
    ARG_SET  -
    ARG_GET  -
    ARG_UPLOAD  -
    ARG_DOWNLOAD  -
    ARG_CREATE  -
    ARG_SAVE  -
    ARG_DELETE  -
    ARG_DATA  -
    ARG_UPDATE  -
    ARG_SEQ_NR  -
    ARG_SEQ_LEN  -
    ARG_RESULT  -
    ARG_COUNT  -
    ARG_SIZE  -
    ARG_LEVEL  -
    ARG_FORMAT  -
    ARG_FLAG  -
    ARG_PROPERTIES  -
    ARG_SPEED  -
    ARG_PROD_TEST  -
    ARG_SENSOR_TYPE  -
    ARG_WIDTH  -
    ARG_HEIGHT  -
    ARG_RESET  -
    ARG_DPI  -
    ARG_MAX_SPI_CLOCK  -
    ARG_NUM_SUB_AREAS_WIDTH  -
    ARG_NUM_SUB_AREAS_HEIGHT  -
    ARG_IRQ_STATUS  -
    ARG_RESET_HARD  -
    ARG_IDLE  -
    ARG_SLEEP  -
    ARG_DEEP_SLEEP  -
    ARG_POWER_MODE  -
    ARG_BUSY_WAIT  -
    ARG_TIMEOUT  -
    ARG_DONE  -
    ARG_BOOT  -
    ARG_STATUS  -
    ARG_VERSION  -
    ARG_UNIQUE_ID  -
    ARG_APP_BASE  -
    ARG_NONCE  -
    ARG_MAC  -
    ARG_RANDOM  -
    ARG_CLAIM  -
    ARG_PUBLIC_KEY  -
    ARG_CIPHERTEXT  -
    ARG_MTU  -
    ARG_STACK  -
    ARG_FILL  -
    ARG_HEAP  -
    ARG_MODE  -
    ARG_DEBUG  -
    ARG_FFFF  -
    - -

    Definition at line 95 of file fpc_hcp_common.h.

    - -
    -
    - -
    -
    - - - - -
    enum fpc_hcp_cmd
    -
    -

    HCP Command definitions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Enumerator
    CMD_NONE  -
    CMD_CAPTURE  -
    CMD_ENROLL  -
    CMD_IDENTIFY  -
    CMD_MATCH  -
    CMD_IMAGE  -
    CMD_TEMPLATE  -
    CMD_WAIT  -
    CMD_SETTINGS  -
    CMD_NAVIGATE  -
    CMD_SENSOR  -
    CMD_DEADPIXELS  -
    CMD_CONNECT  -
    CMD_RECONNECT  -
    CMD_RESET  -
    CMD_CANCEL  -
    CMD_INFO  -
    CMD_STORAGE_TEMPLATE  -
    CMD_STORAGE_CALIBRATION  -
    CMD_STORAGE_LOG  -
    CMD_STORAGE_SETTINGS  -
    CMD_TEST  -
    CMD_MCU  -
    CMD_GPIO  -
    CMD_COMMUNICATION  -
    CMD_APP_BASE  -
    CMD_DIAG  -
    CMD_FFFF  -
    - -

    Definition at line 42 of file fpc_hcp_common.h.

    - -
    -
    -
    -
    - - - - diff --git a/hcp/doxygen/html/fpc__hcp__common_8h.js b/hcp/doxygen/html/fpc__hcp__common_8h.js deleted file mode 100644 index 3fc7ecd..0000000 --- a/hcp/doxygen/html/fpc__hcp__common_8h.js +++ /dev/null @@ -1,112 +0,0 @@ -var fpc__hcp__common_8h = -[ - [ "fpc_hcp_arg_data", "structfpc__hcp__arg__data.html", "structfpc__hcp__arg__data" ], - [ "fpc_hcp_packet", "structfpc__hcp__packet.html", "structfpc__hcp__packet" ], - [ "ARG_APP_BASE_VAL", "fpc__hcp__common_8h.html#a09b96c2b90da3d5908a01e5fe67759a8", null ], - [ "CMD_APP_BASE_VAL", "fpc__hcp__common_8h.html#adfce1fcf9573fd4c0176d083e134826c", null ], - [ "HCP_MIN", "fpc__hcp__common_8h.html#a30795492e653a5a0de20222cf9ff927e", null ], - [ "fpc_hcp_arg_data_t", "fpc__hcp__common_8h.html#a4243dac41cd32d44aac72af8e1583b86", null ], - [ "fpc_hcp_arg_t", "fpc__hcp__common_8h.html#a7470deee2c0eae8f5ac7feb71649df0b", null ], - [ "fpc_hcp_cmd_t", "fpc__hcp__common_8h.html#ac3276a2f739c2a97e665a95212e75108", null ], - [ "fpc_hcp_packet_t", "fpc__hcp__common_8h.html#ac2c1c83c186c5de07d8a6da8ed84a895", null ], - [ "fpc_hcp_arg", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58", [ - [ "ARG_NONE", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a987f8fc7b774aef0a635c58ae03258c9", null ], - [ "ARG_FINGER_DOWN", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a282c3331c717e21252ccf640a4cba42c", null ], - [ "ARG_FINGER_UP", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58af48460c9570e2416acd42cc65c4ee907", null ], - [ "ARG_START", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58ad418e077c4bc91838b87a02e3b8b84d0", null ], - [ "ARG_ADD", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a57c87d820bbe44f6f951f579e3508960", null ], - [ "ARG_FINISH", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a2d7a3821705650a0f636e34cf9489483", null ], - [ "ARG_ID", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a48d1fd0360ac3953b957ab6c9aa62c89", null ], - [ "ARG_ALL", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a1703d631e5bd90fea40f7e82e065a873", null ], - [ "ARG_EXTRACT", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58ab0a35f8c351ed7c50728d59ecb509434", null ], - [ "ARG_MATCH_IMAGE", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a155eb6605e2804ecc5ae06db45ee904a", null ], - [ "ARG_MATCH", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a47f98fb40b6f16b7f4604dbef56ee28c", null ], - [ "ARG_ACQUIRE", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a46b975e4a2a31cce91e0cc48eb8b373f", null ], - [ "ARG_RELEASE", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a6f1a444d4907de32c6c930d10928581b", null ], - [ "ARG_SET", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58aea669c57b85839cff76f2e6582d5c8dd", null ], - [ "ARG_GET", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a6b7d8a512edd4ef35af996bdb380ebd8", null ], - [ "ARG_UPLOAD", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a1bc2f89df547e23e6db793cf29e15fdf", null ], - [ "ARG_DOWNLOAD", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58afc542445ec748543f1d05e05c81d03d1", null ], - [ "ARG_CREATE", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58ae9f8c9eaebf35fd26d679dfeef48bf01", null ], - [ "ARG_SAVE", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a3fa6a9cdd6a159dbafd5bd2a4b3e575f", null ], - [ "ARG_DELETE", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a7db081ad1c3f134525b6f08a83b70384", null ], - [ "ARG_DATA", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a46506036ceef2a484b5f42f52732d6e8", null ], - [ "ARG_UPDATE", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a7eb54a6407b8f036a99fc4883ab097f4", null ], - [ "ARG_SEQ_NR", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a092a5df860a6a79009fef7138fb207ce", null ], - [ "ARG_SEQ_LEN", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a6443ffda57973ae9edce5d2b132d7d76", null ], - [ "ARG_RESULT", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a1954b1b5a42e2f4eff359436be29cef1", null ], - [ "ARG_COUNT", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a00ee914d3647af57d9db7938060eb682", null ], - [ "ARG_SIZE", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58afa0fead9b5887e6b618e080d0b30514e", null ], - [ "ARG_LEVEL", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a0386ac5eced03cb9d2be780b0c4b0fd2", null ], - [ "ARG_FORMAT", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a43a63501dc02c77c850cafec34b00fd5", null ], - [ "ARG_FLAG", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58afd135f03243c33991ef507f4410718f7", null ], - [ "ARG_PROPERTIES", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a968d1d7920ff2ac65ca260186e1aa028", null ], - [ "ARG_SPEED", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58aae814c366575ca79777bc0e5ec122aa6", null ], - [ "ARG_PROD_TEST", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58ae3bf6570b0c4e1e980fb0405cef2912c", null ], - [ "ARG_SENSOR_TYPE", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a922451aeec022bcbab31c71a8734fd93", null ], - [ "ARG_WIDTH", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58acb4c97b112251c21e6782d989ae8a484", null ], - [ "ARG_HEIGHT", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58ab9e5a927ad842f9b2db5b52ab5b5316d", null ], - [ "ARG_RESET", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a619f2902b8c376b4b2fe699638211c67", null ], - [ "ARG_DPI", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a07974bddb5cae40a2bc09385b209b209", null ], - [ "ARG_MAX_SPI_CLOCK", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58ae0f96db5102db07a51edd87025dd2f86", null ], - [ "ARG_NUM_SUB_AREAS_WIDTH", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a5adfdcc50da0d70c671ae8d5edc57831", null ], - [ "ARG_NUM_SUB_AREAS_HEIGHT", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a719d48bade9494c60b193939a7501262", null ], - [ "ARG_IRQ_STATUS", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58abf16a47a0895ad93a98ccaf9376c4fa9", null ], - [ "ARG_RESET_HARD", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a5abe1e5c03f21a575376db0f66514804", null ], - [ "ARG_IDLE", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58ab8ffba94ea26f83c305b64c44d3ca09c", null ], - [ "ARG_SLEEP", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58aedad699fc0f742f58c742c1e620a329f", null ], - [ "ARG_DEEP_SLEEP", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58aff16068d335ea5e90339da952f4a6060", null ], - [ "ARG_POWER_MODE", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58adeee3496e1368324614b6afae894f7d2", null ], - [ "ARG_BUSY_WAIT", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58ae206f73bdf0ce85890a5b7a594231224", null ], - [ "ARG_TIMEOUT", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58aa80c0e222790742c377c03b6b8b3e9ab", null ], - [ "ARG_DONE", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58acb38f9522ee19f17516fb004f7a31ec3", null ], - [ "ARG_BOOT", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58aa570dd07229441bd829f1d4e686606d1", null ], - [ "ARG_STATUS", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58aad9742f47efcf0013940226b2e497c7c", null ], - [ "ARG_VERSION", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58af01f11067617ec591cc6ee62809f827b", null ], - [ "ARG_UNIQUE_ID", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a5f76b317c72e414827ec818ece9223aa", null ], - [ "ARG_APP_BASE", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58ac928346884dee40945b535e4fbdf119f", null ], - [ "ARG_NONCE", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58ada18bddfb708b09575a7548135407eca", null ], - [ "ARG_MAC", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a959acef0db146c5d71d1b05472589166", null ], - [ "ARG_RANDOM", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58abb8a4e32e04302f5cb94978158cfbd90", null ], - [ "ARG_CLAIM", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a55981094b5dc4952ca13dd0411bfcd1c", null ], - [ "ARG_PUBLIC_KEY", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a3630f2e98b4a6e054f534034a3d30290", null ], - [ "ARG_CIPHERTEXT", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58aab481518edfbde054853f68ad63a0902", null ], - [ "ARG_MTU", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a0f2f0f3bc6002b8daccf87cf8f8e4be0", null ], - [ "ARG_STACK", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a93a55fca7e43f8df9680655425322b0d", null ], - [ "ARG_FILL", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58af37a85125ebbad80778ad3983b9bc2c6", null ], - [ "ARG_HEAP", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58afb482c5323d8a0c661e2c458d8430871", null ], - [ "ARG_MODE", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58ae5d10daf180fe71b5fabfb24f2cb0dba", null ], - [ "ARG_DEBUG", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58a0cd002a3e72fb077172846250990fb37", null ], - [ "ARG_FFFF", "fpc__hcp__common_8h.html#a0147c05f7b301caea7aa2636fbbd9d58aabc429eaa99cde7c994f7bc7d879cb3f", null ] - ] ], - [ "fpc_hcp_cmd", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182", [ - [ "CMD_NONE", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182a93c1ce1fac89139d9f4df4b6db21b1cc", null ], - [ "CMD_CAPTURE", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182ad34fc485a2b1e9c623eed78d54efac89", null ], - [ "CMD_ENROLL", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182af90acddc72e82283496db2863853190e", null ], - [ "CMD_IDENTIFY", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182ae9a038931a585cc73f21b035f4f02347", null ], - [ "CMD_MATCH", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182aa2735ed6979a4de609d1b13379bcd78e", null ], - [ "CMD_IMAGE", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182a489f5bfe07b9122b07ae95603b620637", null ], - [ "CMD_TEMPLATE", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182a1d4e7718d9eae380267c13779b21d920", null ], - [ "CMD_WAIT", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182af1d86b498be7d0a42ad6fcf34296a362", null ], - [ "CMD_SETTINGS", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182a7a01e7d4340b392631db49a9c7ede188", null ], - [ "CMD_NAVIGATE", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182a37fc3c1817e3791aa81cfa86b7bf26e3", null ], - [ "CMD_SENSOR", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182acc3dcbcf471a99ff3d6de183c3f9733d", null ], - [ "CMD_DEADPIXELS", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182a81d698458a12460b7795847a94445fad", null ], - [ "CMD_CONNECT", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182a0c7199178f41b307f34eecfde9abafd6", null ], - [ "CMD_RECONNECT", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182a5d4c8fb0b21f73bc8e35c43db443cb4e", null ], - [ "CMD_RESET", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182ae71f12b62f9fca54c98ef9630f8fcad1", null ], - [ "CMD_CANCEL", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182aa91fa7175e319a64b5e72703c615feb8", null ], - [ "CMD_INFO", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182a6b1ac29fd084fc49f7c5c5e80130614b", null ], - [ "CMD_STORAGE_TEMPLATE", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182a8f333f0cd3deafb6e1c6f93990fc8abe", null ], - [ "CMD_STORAGE_CALIBRATION", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182a8cfea8ce93dc9f7991fe1daa7ad6e9c2", null ], - [ "CMD_STORAGE_LOG", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182a7e36d8f68511c4ab2c8b721ec04f9bf6", null ], - [ "CMD_STORAGE_SETTINGS", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182ae7c96552ac5a62a847ca1a9181db96c0", null ], - [ "CMD_TEST", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182a12e11ac7c830ec6038306c9803cdd949", null ], - [ "CMD_MCU", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182a5cd077c360e0f4e828268ac6809c195b", null ], - [ "CMD_GPIO", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182a08d7df74aae09d5b69935dd5611cb08c", null ], - [ "CMD_COMMUNICATION", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182aa6d4775c93c8d5dcbc916b16f8c63a71", null ], - [ "CMD_APP_BASE", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182a2ec8efd2fb642829c4e04db49a884e32", null ], - [ "CMD_DIAG", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182a863d8a2960e3769b5e02a51cdd29dacd", null ], - [ "CMD_FFFF", "fpc__hcp__common_8h.html#a3f3d4d418351daf32d5b5af6a7f32182abe3fc8ddbf9a2fc3e6d13d23096146ff", null ] - ] ] -]; \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__hcp__common_8h__dep__incl.map b/hcp/doxygen/html/fpc__hcp__common_8h__dep__incl.map deleted file mode 100644 index 426523f..0000000 --- a/hcp/doxygen/html/fpc__hcp__common_8h__dep__incl.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/hcp/doxygen/html/fpc__hcp__common_8h__dep__incl.md5 b/hcp/doxygen/html/fpc__hcp__common_8h__dep__incl.md5 deleted file mode 100644 index 1500d8c..0000000 --- a/hcp/doxygen/html/fpc__hcp__common_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -aa7be3c9a9eed00f83579400ec8a634d \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__hcp__common_8h__dep__incl.svg b/hcp/doxygen/html/fpc__hcp__common_8h__dep__incl.svg deleted file mode 100644 index 221086f..0000000 --- a/hcp/doxygen/html/fpc__hcp__common_8h__dep__incl.svg +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - -inc/fpc_hcp_common.h - - -Node1 - -inc/fpc_hcp_common.h - - -Node2 - - -inc/fpc_com_chain.h - - - - -Node1->Node2 - - - - -Node7 - - -inc/fpc_hcp.h - - - - -Node1->Node7 - - - - -Node3 - - -inc/fpc_com_link.h - - - - -Node2->Node3 - - - - -Node6 - - -inc/fpc_com_transport.h - - - - -Node2->Node6 - - - - -Node2->Node7 - - - - -Node4 - - -src/fpc_com_link.c - - - - -Node3->Node4 - - - - -Node5 - - -src/fpc_com_transport.c - - - - -Node3->Node5 - - - - -Node6->Node5 - - - - -Node8 - - -src/fpc_hcp.c - - - - -Node7->Node8 - - - - - diff --git a/hcp/doxygen/html/fpc__hcp__common_8h__incl.map b/hcp/doxygen/html/fpc__hcp__common_8h__incl.map deleted file mode 100644 index ffb42f3..0000000 --- a/hcp/doxygen/html/fpc__hcp__common_8h__incl.map +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/hcp/doxygen/html/fpc__hcp__common_8h__incl.md5 b/hcp/doxygen/html/fpc__hcp__common_8h__incl.md5 deleted file mode 100644 index c01528b..0000000 --- a/hcp/doxygen/html/fpc__hcp__common_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -bd263c011edd4c4b84e46030d319bb62 \ No newline at end of file diff --git a/hcp/doxygen/html/fpc__hcp__common_8h__incl.svg b/hcp/doxygen/html/fpc__hcp__common_8h__incl.svg deleted file mode 100644 index 9cab59b..0000000 --- a/hcp/doxygen/html/fpc__hcp__common_8h__incl.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - -inc/fpc_hcp_common.h - - -Node1 - -inc/fpc_hcp_common.h - - -Node2 - -stdint.h - - -Node1->Node2 - - - - -Node3 - -stdbool.h - - -Node1->Node3 - - - - - diff --git a/hcp/doxygen/html/fpc__hcp__common_8h_source.html b/hcp/doxygen/html/fpc__hcp__common_8h_source.html deleted file mode 100644 index ff6eb69..0000000 --- a/hcp/doxygen/html/fpc__hcp__common_8h_source.html +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - -Host Communication Protocol: inc/fpc_hcp_common.h Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    fpc_hcp_common.h
    -
    -
    -Go to the documentation of this file.
    1 /*
    2  * Copyright (c) 2020 Fingerprint Cards AB
    3  *
    4  * Licensed under the Apache License, Version 2.0 (the "License");
    5  * you may not use this file except in compliance with the License.
    6  * You may obtain a copy of the License at
    7  *
    8  * https://www.apache.org/licenses/LICENSE-2.0
    9  *
    10  * Unless required by applicable law or agreed to in writing, software
    11  * distributed under the License is distributed on an "AS IS" BASIS,
    12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  * See the License for the specific language governing permissions and
    14  * limitations under the License.
    15  */
    16 
    22 #ifndef FPC_HCP_COMMON_H
    23 #define FPC_HCP_COMMON_H
    24 
    25 #include <stdint.h>
    26 #include <stdbool.h>
    27 
    28 #ifdef __cplusplus
    29 extern "C" {
    30 #endif /* __cplusplus */
    31 
    33 #define HCP_MIN(x, y) (((x) < (y)) ? (x) : (y))
    34 
    36 #define CMD_APP_BASE_VAL 0xE000
    37 
    39 #define ARG_APP_BASE_VAL 0x7000
    40 
    43  CMD_NONE = 0x0000,
    44 
    45  /* Biometry */
    46  CMD_CAPTURE = 0x0001,
    47  CMD_ENROLL = 0x0002,
    48  CMD_IDENTIFY = 0x0003,
    49  CMD_MATCH = 0x0004,
    50  CMD_IMAGE = 0x0005,
    51  CMD_TEMPLATE = 0x0006,
    52  CMD_WAIT = 0x0007,
    53  CMD_SETTINGS = 0x0008,
    54 
    55  /* Sensor */
    56  CMD_NAVIGATE = 0x1001,
    57  CMD_SENSOR = 0x1002,
    58  CMD_DEADPIXELS = 0x1003,
    59 
    60  /* Security */
    61  CMD_CONNECT = 0x2001,
    62  CMD_RECONNECT = 0x2002,
    63 
    64  /* Firmware */
    65  CMD_RESET = 0x3002,
    66  CMD_CANCEL = 0x3003,
    67  CMD_INFO = 0x3004,
    68 
    69  /* Storage */
    72  CMD_STORAGE_LOG = 0x4004,
    74 
    75  /* Hardware */
    76  CMD_TEST = 0x5001,
    77  CMD_MCU = 0x5002,
    78  CMD_GPIO = 0x5003,
    79 
    80  /* Communication */
    82 
    83  /* Application specific commands */
    85 
    86  /* Debug */
    87  CMD_DIAG = 0xF003,
    88 
    89  CMD_FFFF = 0xFFFF,
    90 };
    92 typedef uint16_t fpc_hcp_cmd_t;
    93 
    96  ARG_NONE = 0x0000,
    97 
    98  /* Biometry */
    99  ARG_FINGER_DOWN = 0x0001,
    100  ARG_FINGER_UP = 0x0002,
    101  ARG_START = 0x0003,
    102  ARG_ADD = 0x0004,
    103  ARG_FINISH = 0x0005,
    104  ARG_ID = 0x0006,
    105  ARG_ALL = 0x0007,
    106  ARG_EXTRACT = 0x0008,
    107  ARG_MATCH_IMAGE = 0x0009,
    108  ARG_MATCH = 0x000A,
    109 
    110  /* Data */
    111  ARG_ACQUIRE = 0x1001,
    112  ARG_RELEASE = 0x1002,
    113  ARG_SET = 0x1003,
    114  ARG_GET = 0x1004,
    115  ARG_UPLOAD = 0x1005,
    116  ARG_DOWNLOAD = 0x1006,
    117  ARG_CREATE = 0x1007,
    118  ARG_SAVE = 0x1008,
    119  ARG_DELETE = 0x1009,
    120  ARG_DATA = 0x100A,
    121  ARG_UPDATE = 0x100B,
    122  ARG_SEQ_NR = 0x100C,
    123  ARG_SEQ_LEN = 0x100D,
    124 
    125  /* Results */
    126  ARG_RESULT = 0x2001,
    127  ARG_COUNT = 0x2002,
    128  ARG_SIZE = 0x2003,
    129  ARG_LEVEL = 0x2004,
    130  ARG_FORMAT = 0x2005,
    131  ARG_FLAG = 0x2006,
    132  ARG_PROPERTIES = 0x2007,
    133  ARG_SPEED = 0x2008,
    134  ARG_PROD_TEST = 0x2009,
    135 
    136  /* Sensor */
    137  ARG_SENSOR_TYPE = 0x3001,
    138  ARG_WIDTH = 0x3002,
    139  ARG_HEIGHT = 0x3003,
    140  ARG_RESET = 0x3004,
    141  ARG_DPI = 0x3005,
    145  ARG_IRQ_STATUS = 0x3009,
    146  ARG_RESET_HARD = 0x300A,
    147 
    148  /* MCU */
    149  ARG_IDLE = 0x4001,
    150  ARG_SLEEP = 0x4002,
    151  ARG_DEEP_SLEEP = 0x4003,
    152  ARG_POWER_MODE = 0x4004,
    153  ARG_BUSY_WAIT = 0x4005,
    154 
    155  /* Misc */
    156  ARG_TIMEOUT = 0x5001,
    157  ARG_DONE = 0x5002,
    158 
    159  /* Info */
    160  ARG_BOOT = 0x6001,
    161  ARG_STATUS = 0x6002,
    162  ARG_VERSION = 0x6003,
    163  ARG_UNIQUE_ID = 0x6004,
    164 
    165  /* Application specific arguments */
    167 
    168  /* VSM */
    169  ARG_NONCE = 0x8001,
    170  ARG_MAC = 0x8002,
    171  ARG_RANDOM = 0x8003,
    172  ARG_CLAIM = 0x8004,
    173  ARG_PUBLIC_KEY = 0x8005,
    174  ARG_CIPHERTEXT = 0x8006,
    175 
    176  /* Communication */
    177  ARG_MTU = 0x9001,
    178 
    179  /* Debug */
    180  ARG_STACK = 0xE001,
    181  ARG_FILL = 0xE002,
    182  ARG_HEAP = 0xE003,
    183 
    184  /* Log */
    185  ARG_MODE = 0xF001,
    186  ARG_DEBUG = 0xF002,
    187 
    188  ARG_FFFF = 0xFFFF,
    189 };
    191 typedef uint16_t fpc_hcp_arg_t;
    192 
    196 typedef struct fpc_hcp_arg_data {
    198  fpc_hcp_arg_t arg;
    200  uint16_t size;
    202  bool free_data;
    204  uint8_t *data;
    206 
    210 typedef struct fpc_hcp_packet {
    212  fpc_hcp_cmd_t id;
    214  uint16_t num_args;
    218 
    219 #ifdef __cplusplus
    220 }
    221 #endif /* __cplusplus */
    222 
    223 #endif /* FPC_HCP_COMMON_H */
    - - - -
    uint16_t fpc_hcp_cmd_t
    - - - -
    fpc_hcp_arg
    - - -
    #define CMD_APP_BASE_VAL
    - - - - - - -
    struct fpc_hcp_packet fpc_hcp_packet_t
    Application Command Packet.
    - - - - - - - - -
    Application Command Packet.
    - - -
    fpc_hcp_cmd_t id
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Command Argument.
    - - - - - - - - - - - - - - - -
    uint16_t fpc_hcp_arg_t
    - - - - -
    fpc_hcp_arg_data_t * arguments
    - - - - -
    fpc_hcp_cmd
    -
    #define ARG_APP_BASE_VAL
    - - - - - - - - -
    struct fpc_hcp_arg_data fpc_hcp_arg_data_t
    Command Argument.
    - -
    fpc_hcp_arg_t arg
    - - - - - - - - - - - -
    -
    - - - - diff --git a/hcp/doxygen/html/functions.html b/hcp/doxygen/html/functions.html deleted file mode 100644 index f092547..0000000 --- a/hcp/doxygen/html/functions.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - -Host Communication Protocol: Data Fields - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    Here is a list of all struct and union fields with links to the structures/unions they belong to:
    - -

    - a -

    - - -

    - c -

    - - -

    - d -

    - - -

    - f -

    - - -

    - h -

    - - -

    - i -

    - - -

    - l -

    - - -

    - n -

    - - -

    - p -

    - - -

    - s -

    - - -

    - t -

    -
    -
    - - - - diff --git a/hcp/doxygen/html/functions_vars.html b/hcp/doxygen/html/functions_vars.html deleted file mode 100644 index 07edad9..0000000 --- a/hcp/doxygen/html/functions_vars.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - -Host Communication Protocol: Data Fields - Variables - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - - - -
    -
    - -
    -
    -
    - -
    -
    -  - -

    - a -

    - - -

    - c -

    - - -

    - d -

    - - -

    - f -

    - - -

    - h -

    - - -

    - i -

    - - -

    - l -

    - - -

    - n -

    - - -

    - p -

    - - -

    - s -

    - - -

    - t -

    -
    -
    - - - - diff --git a/hcp/doxygen/html/globals.html b/hcp/doxygen/html/globals.html deleted file mode 100644 index 02a5e98..0000000 --- a/hcp/doxygen/html/globals.html +++ /dev/null @@ -1,589 +0,0 @@ - - - - - - -Host Communication Protocol: Globals - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
    - -

    - a -

    - - -

    - c -

    - - -

    - f -

    - - -

    - h -

    - - -

    - p -

    - - -

    - r -

    - - -

    - t -

    -
    -
    - - - - diff --git a/hcp/doxygen/html/globals_defs.html b/hcp/doxygen/html/globals_defs.html deleted file mode 100644 index 319db70..0000000 --- a/hcp/doxygen/html/globals_defs.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - -Host Communication Protocol: Globals - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    - - - - diff --git a/hcp/doxygen/html/globals_enum.html b/hcp/doxygen/html/globals_enum.html deleted file mode 100644 index 92c00b3..0000000 --- a/hcp/doxygen/html/globals_enum.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - -Host Communication Protocol: Globals - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    - - - - diff --git a/hcp/doxygen/html/globals_eval.html b/hcp/doxygen/html/globals_eval.html deleted file mode 100644 index 725bf4c..0000000 --- a/hcp/doxygen/html/globals_eval.html +++ /dev/null @@ -1,432 +0,0 @@ - - - - - - -Host Communication Protocol: Globals - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - - - -
    -
    - -
    -
    -
    - -
    -
    -  - -

    - a -

    - - -

    - c -

    - - -

    - f -

    -
    -
    - - - - diff --git a/hcp/doxygen/html/globals_func.html b/hcp/doxygen/html/globals_func.html deleted file mode 100644 index 13913bb..0000000 --- a/hcp/doxygen/html/globals_func.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - -Host Communication Protocol: Globals - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    - - - - diff --git a/hcp/doxygen/html/globals_type.html b/hcp/doxygen/html/globals_type.html deleted file mode 100644 index ef9199b..0000000 --- a/hcp/doxygen/html/globals_type.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - -Host Communication Protocol: Globals - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    - - - - diff --git a/hcp/doxygen/html/graph_legend.html b/hcp/doxygen/html/graph_legend.html deleted file mode 100644 index 9d1d9fe..0000000 --- a/hcp/doxygen/html/graph_legend.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - -Host Communication Protocol: Graph Legend - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    Graph Legend
    -
    -
    -

    This page explains how to interpret the graphs that are generated by doxygen.

    -

    Consider the following example:

    1 /*! Invisible class because of truncation */
    2 class Invisible { };
    3 
    4 /*! Truncated class, inheritance relation is hidden */
    5 class Truncated : public Invisible { };
    6 
    7 /* Class not documented with doxygen comments */
    8 class Undocumented { };
    9 
    10 /*! Class that is inherited using public inheritance */
    11 class PublicBase : public Truncated { };
    12 
    13 /*! A template class */
    14 template<class T> class Templ { };
    15 
    16 /*! Class that is inherited using protected inheritance */
    17 class ProtectedBase { };
    18 
    19 /*! Class that is inherited using private inheritance */
    20 class PrivateBase { };
    21 
    22 /*! Class that is used by the Inherited class */
    23 class Used { };
    24 
    25 /*! Super class that inherits a number of other classes */
    26 class Inherited : public PublicBase,
    27  protected ProtectedBase,
    28  private PrivateBase,
    29  public Undocumented,
    30  public Templ<int>
    31 {
    32  private:
    33  Used *m_usedClass;
    34 };

    This will result in the following graph:

    -

    The boxes in the above graph have the following meaning:

    -
      -
    • -A filled gray box represents the struct or class for which the graph is generated.
    • -
    • -A box with a black border denotes a documented struct or class.
    • -
    • -A box with a gray border denotes an undocumented struct or class.
    • -
    • -A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
    • -
    -

    The arrows have the following meaning:

    -
      -
    • -A dark blue arrow is used to visualize a public inheritance relation between two classes.
    • -
    • -A dark green arrow is used for protected inheritance.
    • -
    • -A dark red arrow is used for private inheritance.
    • -
    • -A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible.
    • -
    • -A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance.
    • -
    -
    -
    - - - - diff --git a/hcp/doxygen/html/graph_legend.md5 b/hcp/doxygen/html/graph_legend.md5 deleted file mode 100644 index a06ed05..0000000 --- a/hcp/doxygen/html/graph_legend.md5 +++ /dev/null @@ -1 +0,0 @@ -387ff8eb65306fa251338d3c9bd7bfff \ No newline at end of file diff --git a/hcp/doxygen/html/graph_legend.svg b/hcp/doxygen/html/graph_legend.svg deleted file mode 100644 index 61dad70..0000000 --- a/hcp/doxygen/html/graph_legend.svg +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - -Graph Legend - - -Node9 - -Inherited - - -Node10 - - -PublicBase - - - - -Node10->Node9 - - - - -Node11 - - -Truncated - - - - -Node11->Node10 - - - - -Node13 - - -ProtectedBase - - - - -Node13->Node9 - - - - -Node14 - - -PrivateBase - - - - -Node14->Node9 - - - - -Node15 - -Undocumented - - -Node15->Node9 - - - - -Node16 - - -Templ< int > - - - - -Node16->Node9 - - - - -Node17 - - -Templ< T > - - - - -Node17->Node16 - - -< int > - - -Node18 - - -Used - - - - -Node18->Node9 - - -m_usedClass - - - diff --git a/hcp/doxygen/html/hcp.svg b/hcp/doxygen/html/hcp.svg deleted file mode 100644 index 69877fb..0000000 --- a/hcp/doxygen/html/hcp.svg +++ /dev/null @@ -1,247 +0,0 @@ - - - - - - - - - - - - - - HCP 2.0 - - - - Side brace - - - - - - - - - - - - - - - - - - Ark.1056 - - Ark.1020 - Argument 1 - - - - Argument 1 - - Ark.1028 - 2 Bytes - - - - 2 Bytes - - Ark.1030 - Size Bytes - - - - Size Bytes - - Ark.1031 - 2 Bytes - - - - 2 Bytes - - Ark.1032 - Data Size - - - - Data Size - - Ark.1033 - Data - - - - Data - - Ark.1034 - Key - - - - Key - - Ark.1035 - Argument 2 - - - - Argument 2 - - Ark.1036 - 2 Bytes - - - - 2 Bytes - - Ark.1037 - Size Bytes - - - - Size Bytes - - Ark.1038 - 2 Bytes - - - - 2 Bytes - - Ark.1039 - Data Size - - - - Data Size - - Ark.1040 - Data - - - - Data - - Ark.1041 - Key - - - - Key - - Ark.1042 - Argument N - - - - Argument N - - Ark.1043 - 2 Bytes - - - - 2 Bytes - - Ark.1044 - Size Bytes - - - - Size Bytes - - Ark.1045 - 2 Bytes - - - - 2 Bytes - - Ark.1046 - Data Size - - - - Data Size - - Ark.1047 - Data - - - - Data - - Ark.1048 - Key - - - - Key - - - Ark.1057 - - Ark.1000 - 2 Bytes - - - - 2 Bytes - - Ark.1001 - 2 Byte - - - - 2 Byte - - Ark.1003 - Command - - - - Command - - Ark.1004 - Number of Arguments - - - - Number of Arguments - - Ark.1007 - Payload - - - - Payload - - Ark.1055 - 0-65526 (16363 for TLS) Bytes - - - - 0-65526 (16363 for TLS) Bytes - - - diff --git a/hcp/doxygen/html/hcp_8md.html b/hcp/doxygen/html/hcp_8md.html deleted file mode 100644 index a609af7..0000000 --- a/hcp/doxygen/html/hcp_8md.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - -Host Communication Protocol: hcp.md File Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    hcp.md File Reference
    -
    - -
    - - - - diff --git a/hcp/doxygen/html/hcp_8md_source.html b/hcp/doxygen/html/hcp_8md_source.html deleted file mode 100644 index e3942ae..0000000 --- a/hcp/doxygen/html/hcp_8md_source.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - -Host Communication Protocol: hcp.md Source File - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    hcp.md
    -
    -
    -Go to the documentation of this file.
    1 # Main {#mainpage}
    2 
    3 Welcome to the documentation for the Host Communication Protocol (HCP).
    4 
    5 The first part covers the physical method of sending messages and the second part covers the
    6 specification of the different command flows.
    7 
    8 \section fes FPC embedded stack and HCP
    9 - \subpage stack
    10 - \subpage hcpf
    11 
    12 \section cfs Command flow specification
    13 - \subpage bio
    14  - \ref capture_b
    15  - \ref extract_b
    16  - \ref enroll_b
    17  - \ref identify_b
    18 - \subpage image
    19 - \subpage template
    20 - \subpage storage
    21 - \subpage sensor
    22 - \subpage device
    -
    - - - - diff --git a/hcp/doxygen/html/hcpf.html b/hcp/doxygen/html/hcpf.html deleted file mode 100644 index 2c4bc96..0000000 --- a/hcp/doxygen/html/hcpf.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - -Host Communication Protocol: HCP frame format - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    HCP frame format
    -
    -
    -

    The Host Communication Protocol (HCP) describes a general way of sending commands and information between devices.

    -
    -hcp.svg -
    -HCP frame format
    -

    -Command

    -

    The Commands define the general action that is going to be executed. However, each command can have several Arguments each with data attached.

    - - - - - -
    CMD Num Args Payload
    2 bytes 2 bytes xx bytes
    -

    All fields are using unsigned data types.

    -

    -Argument

    -

    The Argument is used as a complement to the command if it is needed and can contain arbitrary data.

    - - - - - -
    ARG Size Data
    2 bytes 2 bytes size bytes
    -

    All fields are using unsigned data types.

    -
    -
    - - - - diff --git a/hcp/doxygen/html/image.html b/hcp/doxygen/html/image.html deleted file mode 100644 index faf8031..0000000 --- a/hcp/doxygen/html/image.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - -Host Communication Protocol: Image handling - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    Image handling
    -
    -
    -

    -Create

    -
    -

    -Upload

    -
    -

    -Download

    -
    -
    -
    - - - - diff --git a/hcp/doxygen/html/index.html b/hcp/doxygen/html/index.html deleted file mode 100644 index bd8f33c..0000000 --- a/hcp/doxygen/html/index.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - -Host Communication Protocol: Main - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    Main
    -
    -
    -

    Welcome to the documentation for the Host Communication Protocol (HCP).

    -

    The first part covers the physical method of sending messages and the second part covers the specification of the different command flows.

    -

    -FPC embedded stack and HCP

    - -

    -Command flow specification

    - -
    -
    - - - - diff --git a/hcp/doxygen/html/index.js b/hcp/doxygen/html/index.js deleted file mode 100644 index 1b4cb5f..0000000 --- a/hcp/doxygen/html/index.js +++ /dev/null @@ -1,47 +0,0 @@ -var index = -[ - [ "FPC embedded stack and HCP", "index.html#fes", null ], - [ "Command flow specification", "index.html#cfs", null ], - [ "FPC embedded stack", "stack.html", [ - [ "Physical", "stack.html#phy", null ], - [ "Link", "stack.html#link", null ], - [ "Transport", "stack.html#tsp", null ], - [ "Application", "stack.html#app", null ], - [ "HCP", "stack.html#hcp", null ] - ] ], - [ "HCP frame format", "hcpf.html", [ - [ "Command", "hcpf.html#cmd", null ], - [ "Argument", "hcpf.html#arg", null ] - ] ], - [ "Biometrics", "bio.html", [ - [ "Capture", "bio.html#capture_b", null ], - [ "Extract", "bio.html#extract_b", null ], - [ "Enroll", "bio.html#enroll_b", null ], - [ "Identify", "bio.html#identify_b", null ] - ] ], - [ "Image handling", "image.html", [ - [ "Create", "image.html#create_i", null ], - [ "Upload", "image.html#upload_i", null ], - [ "Download", "image.html#download_i", null ] - ] ], - [ "Template handling", "template.html", [ - [ "Upload", "template.html#upload_t", null ], - [ "Download", "template.html#download_t", null ], - [ "Save", "template.html#save_t", null ] - ] ], - [ "Storage handling", "storage.html", [ - [ "Delete ID", "storage.html#delete_id", null ], - [ "Delete All", "storage.html#delete_all", null ], - [ "Upload", "storage.html#upload_s", null ], - [ "Count", "storage.html#count_s", null ], - [ "Get IDs", "storage.html#get_id", null ] - ] ], - [ "Sensor operations", "sensor.html", [ - [ "Wait for finger up", "sensor.html#wait_up_s", null ], - [ "Wait for finger down", "sensor.html#wait_down_s", null ], - [ "Reset sensor", "sensor.html#sensor_reset_s", null ] - ] ], - [ "Device operations", "device.html", [ - [ "Reset device", "device.html#reset_d", null ] - ] ] -]; \ No newline at end of file diff --git a/hcp/doxygen/html/jquery.js b/hcp/doxygen/html/jquery.js deleted file mode 100644 index d52a1c7..0000000 --- a/hcp/doxygen/html/jquery.js +++ /dev/null @@ -1,68 +0,0 @@ -/* - * jQuery JavaScript Library v1.7.1 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Mon Nov 21 21:11:03 2011 -0500 - */ -(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
    a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
    ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
    t
    ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
    ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); -/* - * Sizzle CSS Selector Engine - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

    ";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
    ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
    ","
    "]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
    ").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/* - * jQuery UI 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI - */ -(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/* - * jQuery UI Widget 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Widget - */ -(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/* - * jQuery UI Mouse 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Mouse - * - * Depends: - * jquery.ui.widget.js - */ -(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
    ');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/* - * jQuery hashchange event - v1.3 - 7/21/2010 - * http://benalman.com/projects/jquery-hashchange-plugin/ - * - * Copyright (c) 2010 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - */ -(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' - -
    [legend]
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    bool initialized
     
    uint32_t(* crc_calc )(uint32_t start, const void *data, uint32_t size)
     
    fpc_com_chain_private_t private_vars
     
    void * session
     User session pointer. User private stuff, to be able to pass necessary info from the layer that calls hcp down to the user's TX and RX functions (phy_tx/rx), to enable multi threaded applications at the host side. More...
     
    void * context
     User context pointer. User private stuff, to be able to pass nessecary context to argument_allocator and argument_free. More...
     
    HCP Layer
    void *(* argument_allocator )(fpc_hcp_cmd_t cmd, fpc_hcp_arg_t arg, uint16_t size, bool *free_data, void *context)
     
    void(* argument_free )(fpc_hcp_cmd_t cmd, fpc_hcp_arg_data_t *arg_data, void *context)
     
    Application Layer
    fpc_com_result_t(* app_tx )(fpc_com_chain_t *chain)
     
    fpc_com_result_t(* app_rx )(fpc_com_chain_t *chain)
     
    uint16_t(* app_overhead_get )(uint16_t *offset)
     
    uint16_t app_packet_size [2]
     
    uint16_t app_mtu_size [2]
     
    uint8_t * app_mtu_buffer [2]
     
    Transport Layer
    fpc_com_result_t(* tsp_tx )(fpc_com_packet_tsp_t *packet, fpc_com_chain_t *chain)
     
    fpc_com_result_t(* tsp_rx )(fpc_com_packet_tsp_t *packet, fpc_com_chain_t *chain)
     
    uint16_t(* tsp_overhead_get )(uint16_t *offset)
     
    Link Layer
    uint16_t(* link_overhead_get )(uint16_t *offset)
     
    fpc_com_channel_t channel
     
    Physical Layer
    fpc_com_result_t(* phy_tx )(uint16_t size, const uint8_t *buffer, uint32_t timeout, void *session)
     
    fpc_com_result_t(* phy_rx )(uint16_t size, uint8_t *buffer, uint32_t timeout, void *session)
     
    uint16_t phy_mtu_size [2]
     
    uint8_t * phy_mtu_buffer [2]
     
    uint32_t phy_timeout_tx
     
    uint32_t phy_timeout_rx
     
    -

    Detailed Description

    -

    Communication chain struct

    - -

    Definition at line 50 of file fpc_com_chain.h.

    -

    Field Documentation

    - -
    -
    - - - - -
    uint8_t* fpc_com_chain::app_mtu_buffer[2]
    -
    -

    Application MTU buffers

    - -

    Definition at line 83 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    uint16_t fpc_com_chain::app_mtu_size[2]
    -
    -

    Application MTU sizes

    - -

    Definition at line 81 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    uint16_t(* fpc_com_chain::app_overhead_get) (uint16_t *offset)
    -
    -

    Application layer overhead get interface function

    - -

    Definition at line 77 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    uint16_t fpc_com_chain::app_packet_size[2]
    -
    -

    Application packet sizes

    - -

    Definition at line 79 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    fpc_com_result_t(* fpc_com_chain::app_rx) (fpc_com_chain_t *chain)
    -
    -

    Application layer receive interface function

    - -

    Definition at line 75 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    fpc_com_result_t(* fpc_com_chain::app_tx) (fpc_com_chain_t *chain)
    -
    -

    Application layer transmit interface function

    - -

    Definition at line 73 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    void*(* fpc_com_chain::argument_allocator) (fpc_hcp_cmd_t cmd, fpc_hcp_arg_t arg, uint16_t size, bool *free_data, void *context)
    -
    -

    Argument allocator interface function

    - -

    Definition at line 59 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    void(* fpc_com_chain::argument_free) (fpc_hcp_cmd_t cmd, fpc_hcp_arg_data_t *arg_data, void *context)
    -
    -

    Argument free interface function

    - -

    Definition at line 62 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    fpc_com_channel_t fpc_com_chain::channel
    -
    -

    Communication channel

    - -

    Definition at line 105 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    void* fpc_com_chain::context
    -
    - -

    User context pointer. User private stuff, to be able to pass nessecary context to argument_allocator and argument_free.

    - -

    Definition at line 143 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    uint32_t(* fpc_com_chain::crc_calc) (uint32_t start, const void *data, uint32_t size)
    -
    -

    CRC calculation interface function

    - -

    Definition at line 66 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    bool fpc_com_chain::initialized
    -
    -

    Initialization status

    - -

    Definition at line 52 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    uint16_t(* fpc_com_chain::link_overhead_get) (uint16_t *offset)
    -
    -

    Link layer overhead get interface function

    - -

    Definition at line 103 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    uint8_t* fpc_com_chain::phy_mtu_buffer[2]
    -
    -

    Physical MTU buffers

    - -

    Definition at line 121 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    uint16_t fpc_com_chain::phy_mtu_size[2]
    -
    -

    Physical MTU sizes

    - -

    Definition at line 119 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    fpc_com_result_t(* fpc_com_chain::phy_rx) (uint16_t size, uint8_t *buffer, uint32_t timeout, void *session)
    -
    -

    Physical layer receive interface function

    - -

    Definition at line 116 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    uint32_t fpc_com_chain::phy_timeout_rx
    -
    -

    Physical receive timeout

    - -

    Definition at line 125 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    uint32_t fpc_com_chain::phy_timeout_tx
    -
    -

    Physical transmit timeout

    - -

    Definition at line 123 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    fpc_com_result_t(* fpc_com_chain::phy_tx) (uint16_t size, const uint8_t *buffer, uint32_t timeout, void *session)
    -
    -

    Physical layer transmit interface function

    - -

    Definition at line 113 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    fpc_com_chain_private_t fpc_com_chain::private_vars
    -
    -

    Communication change private variables

    - -

    Definition at line 129 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    void* fpc_com_chain::session
    -
    - -

    User session pointer. User private stuff, to be able to pass necessary info from the layer that calls hcp down to the user's TX and RX functions (phy_tx/rx), to enable multi threaded applications at the host side.

    - -

    Definition at line 137 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    uint16_t(* fpc_com_chain::tsp_overhead_get) (uint16_t *offset)
    -
    -

    Transport layer overhead get interface function

    - -

    Definition at line 95 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    fpc_com_result_t(* fpc_com_chain::tsp_rx) (fpc_com_packet_tsp_t *packet, fpc_com_chain_t *chain)
    -
    -

    Transport layer receive interface function

    - -

    Definition at line 93 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    fpc_com_result_t(* fpc_com_chain::tsp_tx) (fpc_com_packet_tsp_t *packet, fpc_com_chain_t *chain)
    -
    -

    Transport layer transmit interface function

    - -

    Definition at line 91 of file fpc_com_chain.h.

    - -
    -
    -
    The documentation for this struct was generated from the following file: - - - - - - diff --git a/hcp/doxygen/html/structfpc__com__chain.js b/hcp/doxygen/html/structfpc__com__chain.js deleted file mode 100644 index 0f4123f..0000000 --- a/hcp/doxygen/html/structfpc__com__chain.js +++ /dev/null @@ -1,27 +0,0 @@ -var structfpc__com__chain = -[ - [ "app_mtu_buffer", "structfpc__com__chain.html#a7e8d84ccc4f808b0b95a4968f8445793", null ], - [ "app_mtu_size", "structfpc__com__chain.html#aacb377d52218056953552b9528654e75", null ], - [ "app_overhead_get", "structfpc__com__chain.html#a0059f42e6687eb0f82e5ee1de6b7236b", null ], - [ "app_packet_size", "structfpc__com__chain.html#aa60e372908d633b665e2ee4e3f220eac", null ], - [ "app_rx", "structfpc__com__chain.html#adc6a3bbad06589291a9441417cbb48c5", null ], - [ "app_tx", "structfpc__com__chain.html#a3498d443baffb40cb1201380423a753d", null ], - [ "argument_allocator", "structfpc__com__chain.html#a6e99f2fce0216d384bfba272cfba56b9", null ], - [ "argument_free", "structfpc__com__chain.html#af2a276eb2ccc79b6165584d97e798874", null ], - [ "channel", "structfpc__com__chain.html#aa42c6bf7052b0047c8b91635a13674d8", null ], - [ "context", "structfpc__com__chain.html#a6b907ebf3aeb09944baae1fd72a7abf9", null ], - [ "crc_calc", "structfpc__com__chain.html#ac697aca7a789065170e24d18647df0e7", null ], - [ "initialized", "structfpc__com__chain.html#a4a5f51c68263c56df53e3026d0959c4c", null ], - [ "link_overhead_get", "structfpc__com__chain.html#a055b5749b6e11042f39604bc7c7a33fe", null ], - [ "phy_mtu_buffer", "structfpc__com__chain.html#a63a02907c00e5443c7c3d4c0bd158d36", null ], - [ "phy_mtu_size", "structfpc__com__chain.html#ad135c2c04d54045141c2c3ffff09636d", null ], - [ "phy_rx", "structfpc__com__chain.html#ae0e4aa33099bfc0c9910c7b6bb30f915", null ], - [ "phy_timeout_rx", "structfpc__com__chain.html#a2e3f88e744ac92baecf22b8be8b8bdb2", null ], - [ "phy_timeout_tx", "structfpc__com__chain.html#a12a7599fb0f8ca779f6f5ac1df47bed2", null ], - [ "phy_tx", "structfpc__com__chain.html#a67cdb9c412d3478b46f9091d094c4faf", null ], - [ "private_vars", "structfpc__com__chain.html#a30701342d30047f48d0ec4f3f47f6ca3", null ], - [ "session", "structfpc__com__chain.html#a92eac8623fea4a4134d073233d25a63f", null ], - [ "tsp_overhead_get", "structfpc__com__chain.html#a319d3aa6f72ba5b04f6ac73bd09e860e", null ], - [ "tsp_rx", "structfpc__com__chain.html#a72f15dbe8cd7750f8f33346783404fb9", null ], - [ "tsp_tx", "structfpc__com__chain.html#aa9ee59b2a8c25a2cec027c078bb5db57", null ] -]; \ No newline at end of file diff --git a/hcp/doxygen/html/structfpc__com__chain__coll__graph.map b/hcp/doxygen/html/structfpc__com__chain__coll__graph.map deleted file mode 100644 index ae3a4a5..0000000 --- a/hcp/doxygen/html/structfpc__com__chain__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/hcp/doxygen/html/structfpc__com__chain__coll__graph.md5 b/hcp/doxygen/html/structfpc__com__chain__coll__graph.md5 deleted file mode 100644 index b582e7d..0000000 --- a/hcp/doxygen/html/structfpc__com__chain__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -62b5c96dd34d9372a91cd51284c482c6 \ No newline at end of file diff --git a/hcp/doxygen/html/structfpc__com__chain__coll__graph.svg b/hcp/doxygen/html/structfpc__com__chain__coll__graph.svg deleted file mode 100644 index 151441b..0000000 --- a/hcp/doxygen/html/structfpc__com__chain__coll__graph.svg +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - -fpc_com_chain - - -Node1 - -fpc_com_chain - - -Node2 - - -fpc_com_chain_private - - - - -Node2->Node1 - - - private_vars - - -Node3 - - -fpc_hcp_packet - - - - -Node3->Node2 - - - hcp_packet - - -Node4 - - -fpc_hcp_arg_data - - - - -Node4->Node3 - - - arguments - - - diff --git a/hcp/doxygen/html/structfpc__com__chain__private.html b/hcp/doxygen/html/structfpc__com__chain__private.html deleted file mode 100644 index 6565d01..0000000 --- a/hcp/doxygen/html/structfpc__com__chain__private.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - -Host Communication Protocol: fpc_com_chain_private Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    fpc_com_chain_private Struct Reference
    -
    -
    - -

    #include <fpc_com_chain.h>

    -
    -Collaboration diagram for fpc_com_chain_private:
    -
    -
    -
    -
    [legend]
    - - - - - - - - -

    -Data Fields

    fpc_hcp_packet_thcp_packet
     
    uint16_t hcp_seq_len
     
    uint16_t hcp_seq_nr
     
    -

    Detailed Description

    -

    Communication chain private struct

    - -

    Definition at line 36 of file fpc_com_chain.h.

    -

    Field Documentation

    - -
    -
    - - - - -
    fpc_hcp_packet_t* fpc_com_chain_private::hcp_packet
    -
    -

    HCP packet

    - -

    Definition at line 38 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    uint16_t fpc_com_chain_private::hcp_seq_len
    -
    -

    HCP sequence length

    - -

    Definition at line 40 of file fpc_com_chain.h.

    - -
    -
    - -
    -
    - - - - -
    uint16_t fpc_com_chain_private::hcp_seq_nr
    -
    -

    HCP sequence number

    - -

    Definition at line 42 of file fpc_com_chain.h.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    -
    - - - - diff --git a/hcp/doxygen/html/structfpc__com__chain__private.js b/hcp/doxygen/html/structfpc__com__chain__private.js deleted file mode 100644 index ffa1f0b..0000000 --- a/hcp/doxygen/html/structfpc__com__chain__private.js +++ /dev/null @@ -1,6 +0,0 @@ -var structfpc__com__chain__private = -[ - [ "hcp_packet", "structfpc__com__chain__private.html#ab64b1b4bd3081ca3db41ffa0e81bc916", null ], - [ "hcp_seq_len", "structfpc__com__chain__private.html#af8ce1ceb9f2ce4cfca0c5db4112b66a0", null ], - [ "hcp_seq_nr", "structfpc__com__chain__private.html#ac3cc68074e460e7f02487f4fd3b0f72b", null ] -]; \ No newline at end of file diff --git a/hcp/doxygen/html/structfpc__com__chain__private__coll__graph.map b/hcp/doxygen/html/structfpc__com__chain__private__coll__graph.map deleted file mode 100644 index fc2dc95..0000000 --- a/hcp/doxygen/html/structfpc__com__chain__private__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/hcp/doxygen/html/structfpc__com__chain__private__coll__graph.md5 b/hcp/doxygen/html/structfpc__com__chain__private__coll__graph.md5 deleted file mode 100644 index ee40ef7..0000000 --- a/hcp/doxygen/html/structfpc__com__chain__private__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -7c008b78ccb55fb4de6e98769ef6f843 \ No newline at end of file diff --git a/hcp/doxygen/html/structfpc__com__chain__private__coll__graph.svg b/hcp/doxygen/html/structfpc__com__chain__private__coll__graph.svg deleted file mode 100644 index 6d344fc..0000000 --- a/hcp/doxygen/html/structfpc__com__chain__private__coll__graph.svg +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - -fpc_com_chain_private - - -Node1 - -fpc_com_chain_private - - -Node2 - - -fpc_hcp_packet - - - - -Node2->Node1 - - - hcp_packet - - -Node3 - - -fpc_hcp_arg_data - - - - -Node3->Node2 - - - arguments - - - diff --git a/hcp/doxygen/html/structfpc__com__packet__link.html b/hcp/doxygen/html/structfpc__com__packet__link.html deleted file mode 100644 index e845432..0000000 --- a/hcp/doxygen/html/structfpc__com__packet__link.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - -Host Communication Protocol: fpc_com_packet_link Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    fpc_com_packet_link Struct Reference
    -
    -
    - -

    #include <fpc_com_packets.h>

    - - - - - - - - - - -

    -Data Fields

    fpc_com_channel_t channel
     
    uint16_t size
     
    uint8_t * data
     
    uint32_t crc
     
    -

    Detailed Description

    -

    Link layer packet

    - -

    Definition at line 61 of file fpc_com_packets.h.

    -

    Field Documentation

    - -
    -
    - - - - -
    fpc_com_channel_t fpc_com_packet_link::channel
    -
    -

    Communication channel

    - -

    Definition at line 63 of file fpc_com_packets.h.

    - -
    -
    - -
    -
    - - - - -
    uint32_t fpc_com_packet_link::crc
    -
    -

    CRC of data

    - -

    Definition at line 69 of file fpc_com_packets.h.

    - -
    -
    - -
    -
    - - - - -
    uint8_t* fpc_com_packet_link::data
    -
    -

    Packet data

    - -

    Definition at line 67 of file fpc_com_packets.h.

    - -
    -
    - -
    -
    - - - - -
    uint16_t fpc_com_packet_link::size
    -
    -

    Size of packet

    - -

    Definition at line 65 of file fpc_com_packets.h.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    -
    - - - - diff --git a/hcp/doxygen/html/structfpc__com__packet__link.js b/hcp/doxygen/html/structfpc__com__packet__link.js deleted file mode 100644 index 7b35e09..0000000 --- a/hcp/doxygen/html/structfpc__com__packet__link.js +++ /dev/null @@ -1,7 +0,0 @@ -var structfpc__com__packet__link = -[ - [ "channel", "structfpc__com__packet__link.html#aa90708dd6d842b318723cb70d6939c2a", null ], - [ "crc", "structfpc__com__packet__link.html#a2b36a249ee8d192688f2a5f3cce8cde4", null ], - [ "data", "structfpc__com__packet__link.html#ac5412a399ecd825e331b560c1ec078fd", null ], - [ "size", "structfpc__com__packet__link.html#a7305e6e32039579c1258ccb42513049b", null ] -]; \ No newline at end of file diff --git a/hcp/doxygen/html/structfpc__com__packet__transport.html b/hcp/doxygen/html/structfpc__com__packet__transport.html deleted file mode 100644 index e30f80d..0000000 --- a/hcp/doxygen/html/structfpc__com__packet__transport.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - -Host Communication Protocol: fpc_com_packet_transport Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    fpc_com_packet_transport Struct Reference
    -
    -
    - -

    #include <fpc_com_packets.h>

    - - - - - - - - - - -

    -Data Fields

    uint16_t size
     
    uint16_t seq_len
     
    uint16_t seq_nr
     
    uint8_t * data
     
    -

    Detailed Description

    -

    Transport layer packet.

    - -

    Definition at line 37 of file fpc_com_packets.h.

    -

    Field Documentation

    - -
    -
    - - - - -
    uint8_t* fpc_com_packet_transport::data
    -
    -

    Packet data

    - -

    Definition at line 45 of file fpc_com_packets.h.

    - -
    -
    - -
    -
    - - - - -
    uint16_t fpc_com_packet_transport::seq_len
    -
    -

    Sequence length

    - -

    Definition at line 41 of file fpc_com_packets.h.

    - -
    -
    - -
    -
    - - - - -
    uint16_t fpc_com_packet_transport::seq_nr
    -
    -

    Sequence number

    - -

    Definition at line 43 of file fpc_com_packets.h.

    - -
    -
    - -
    -
    - - - - -
    uint16_t fpc_com_packet_transport::size
    -
    -

    Size of packet

    - -

    Definition at line 39 of file fpc_com_packets.h.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    -
    - - - - diff --git a/hcp/doxygen/html/structfpc__com__packet__transport.js b/hcp/doxygen/html/structfpc__com__packet__transport.js deleted file mode 100644 index 6fef708..0000000 --- a/hcp/doxygen/html/structfpc__com__packet__transport.js +++ /dev/null @@ -1,7 +0,0 @@ -var structfpc__com__packet__transport = -[ - [ "data", "structfpc__com__packet__transport.html#a701682a127995ad73fd3d945faa0e6d0", null ], - [ "seq_len", "structfpc__com__packet__transport.html#af72d4eb7fdaf84b87dd369b348eafc6d", null ], - [ "seq_nr", "structfpc__com__packet__transport.html#a41944ffde2478be8fca892e84bd633c0", null ], - [ "size", "structfpc__com__packet__transport.html#a9c0d37a137ba70a8d0ecd17802e3810a", null ] -]; \ No newline at end of file diff --git a/hcp/doxygen/html/structfpc__hcp__arg__data.html b/hcp/doxygen/html/structfpc__hcp__arg__data.html deleted file mode 100644 index b542592..0000000 --- a/hcp/doxygen/html/structfpc__hcp__arg__data.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - -Host Communication Protocol: fpc_hcp_arg_data Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    fpc_hcp_arg_data Struct Reference
    -
    -
    - -

    Command Argument. - More...

    - -

    #include <fpc_hcp_common.h>

    - - - - - - - - - - -

    -Data Fields

    fpc_hcp_arg_t arg
     
    uint16_t size
     
    bool free_data
     
    uint8_t * data
     
    -

    Detailed Description

    -

    Command Argument.

    - -

    Definition at line 196 of file fpc_hcp_common.h.

    -

    Field Documentation

    - -
    -
    - - - - -
    fpc_hcp_arg_t fpc_hcp_arg_data::arg
    -
    -

    Argument

    - -

    Definition at line 198 of file fpc_hcp_common.h.

    - -
    -
    - -
    -
    - - - - -
    uint8_t* fpc_hcp_arg_data::data
    -
    -

    Pointer to data

    - -

    Definition at line 204 of file fpc_hcp_common.h.

    - -
    -
    - -
    -
    - - - - -
    bool fpc_hcp_arg_data::free_data
    -
    -

    Free data inside HCP

    - -

    Definition at line 202 of file fpc_hcp_common.h.

    - -
    -
    - -
    -
    - - - - -
    uint16_t fpc_hcp_arg_data::size
    -
    -

    Size of data

    - -

    Definition at line 200 of file fpc_hcp_common.h.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    -
    - - - - diff --git a/hcp/doxygen/html/structfpc__hcp__arg__data.js b/hcp/doxygen/html/structfpc__hcp__arg__data.js deleted file mode 100644 index bed4817..0000000 --- a/hcp/doxygen/html/structfpc__hcp__arg__data.js +++ /dev/null @@ -1,7 +0,0 @@ -var structfpc__hcp__arg__data = -[ - [ "arg", "structfpc__hcp__arg__data.html#ad10d9a131410e8832ee545e38c2957f0", null ], - [ "data", "structfpc__hcp__arg__data.html#a96b9e7812ba72f1c27355f8896079c2e", null ], - [ "free_data", "structfpc__hcp__arg__data.html#a2b1579dabe9af25ac70ba5c9345bec6a", null ], - [ "size", "structfpc__hcp__arg__data.html#aaee76f9b7bf53b5b9095ae68a8dbe4ec", null ] -]; \ No newline at end of file diff --git a/hcp/doxygen/html/structfpc__hcp__packet.html b/hcp/doxygen/html/structfpc__hcp__packet.html deleted file mode 100644 index f6befcd..0000000 --- a/hcp/doxygen/html/structfpc__hcp__packet.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - -Host Communication Protocol: fpc_hcp_packet Struct Reference - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - - -
    -
    - -
    -
    -
    - -
    -
    - -
    -
    fpc_hcp_packet Struct Reference
    -
    -
    - -

    Application Command Packet. - More...

    - -

    #include <fpc_hcp_common.h>

    -
    -Collaboration diagram for fpc_hcp_packet:
    -
    -
    -
    -
    [legend]
    - - - - - - - - -

    -Data Fields

    fpc_hcp_cmd_t id
     
    uint16_t num_args
     
    fpc_hcp_arg_data_targuments
     
    -

    Detailed Description

    -

    Application Command Packet.

    - -

    Definition at line 210 of file fpc_hcp_common.h.

    -

    Field Documentation

    - -
    -
    - - - - -
    fpc_hcp_arg_data_t* fpc_hcp_packet::arguments
    -
    -

    Pointer to argument data

    - -

    Definition at line 216 of file fpc_hcp_common.h.

    - -
    -
    - -
    -
    - - - - -
    fpc_hcp_cmd_t fpc_hcp_packet::id
    -
    -

    Command ID

    - -

    Definition at line 212 of file fpc_hcp_common.h.

    - -
    -
    - -
    -
    - - - - -
    uint16_t fpc_hcp_packet::num_args
    -
    -

    Number of arguments

    - -

    Definition at line 214 of file fpc_hcp_common.h.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    -
    - - - - diff --git a/hcp/doxygen/html/structfpc__hcp__packet.js b/hcp/doxygen/html/structfpc__hcp__packet.js deleted file mode 100644 index 2e725bc..0000000 --- a/hcp/doxygen/html/structfpc__hcp__packet.js +++ /dev/null @@ -1,6 +0,0 @@ -var structfpc__hcp__packet = -[ - [ "arguments", "structfpc__hcp__packet.html#a12c84e4603123d4a7b7968c1a408ac8a", null ], - [ "id", "structfpc__hcp__packet.html#a048db38d843571e797e3768b7e28691d", null ], - [ "num_args", "structfpc__hcp__packet.html#a43efbc11424d711b82fe5dde8d8da393", null ] -]; \ No newline at end of file diff --git a/hcp/doxygen/html/structfpc__hcp__packet__coll__graph.map b/hcp/doxygen/html/structfpc__hcp__packet__coll__graph.map deleted file mode 100644 index 542b000..0000000 --- a/hcp/doxygen/html/structfpc__hcp__packet__coll__graph.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/hcp/doxygen/html/structfpc__hcp__packet__coll__graph.md5 b/hcp/doxygen/html/structfpc__hcp__packet__coll__graph.md5 deleted file mode 100644 index 8db2ba9..0000000 --- a/hcp/doxygen/html/structfpc__hcp__packet__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -bb44f25e236a810c642564aa21997983 \ No newline at end of file diff --git a/hcp/doxygen/html/structfpc__hcp__packet__coll__graph.svg b/hcp/doxygen/html/structfpc__hcp__packet__coll__graph.svg deleted file mode 100644 index 9a08ef3..0000000 --- a/hcp/doxygen/html/structfpc__hcp__packet__coll__graph.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - -fpc_hcp_packet - - -Node1 - -fpc_hcp_packet - - -Node2 - - -fpc_hcp_arg_data - - - - -Node2->Node1 - - - arguments - - - diff --git a/hcp/doxygen/html/sync_off.png b/hcp/doxygen/html/sync_off.png deleted file mode 100644 index 3b443fc62892114406e3d399421b2a881b897acc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* diff --git a/hcp/doxygen/html/sync_on.png b/hcp/doxygen/html/sync_on.png deleted file mode 100644 index e08320fb64e6fa33b573005ed6d8fe294e19db76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 diff --git a/hcp/doxygen/html/tab_a.png b/hcp/doxygen/html/tab_a.png deleted file mode 100644 index 3b725c41c5a527a3a3e40097077d0e206a681247..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 diff --git a/hcp/doxygen/html/tab_b.png b/hcp/doxygen/html/tab_b.png deleted file mode 100644 index e2b4a8638cb3496a016eaed9e16ffc12846dea18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ diff --git a/hcp/doxygen/html/tabs.css b/hcp/doxygen/html/tabs.css deleted file mode 100644 index 9cf578f..0000000 --- a/hcp/doxygen/html/tabs.css +++ /dev/null @@ -1,60 +0,0 @@ -.tabs, .tabs2, .tabs3 { - background-image: url('tab_b.png'); - width: 100%; - z-index: 101; - font-size: 13px; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; -} - -.tabs2 { - font-size: 10px; -} -.tabs3 { - font-size: 9px; -} - -.tablist { - margin: 0; - padding: 0; - display: table; -} - -.tablist li { - float: left; - display: table-cell; - background-image: url('tab_b.png'); - line-height: 36px; - list-style: none; -} - -.tablist a { - display: block; - padding: 0 20px; - font-weight: bold; - background-image:url('tab_s.png'); - background-repeat:no-repeat; - background-position:right; - color: #283A5D; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; - outline: none; -} - -.tabs3 .tablist a { - padding: 0 10px; -} - -.tablist a:hover { - background-image: url('tab_h.png'); - background-repeat:repeat-x; - color: #fff; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); - text-decoration: none; -} - -.tablist li.current a { - background-image: url('tab_a.png'); - background-repeat:repeat-x; - color: #fff; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); -} diff --git a/hcp/doxygen/html/template.html b/hcp/doxygen/html/template.html deleted file mode 100644 index d1eb80e..0000000 --- a/hcp/doxygen/html/template.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - -Host Communication Protocol: Template handling - - - - - - - - - - - -
    -
    - - - - - - -
    -
    Host Communication Protocol -  2.0 -
    -
    -
    - - - -
    -
    - -
    -
    -
    - -
    -
    -
    -
    Template handling
    -
    -
    -

    -Upload

    -
    -

    -Download

    -
    -

    -Save

    -
    -
    -
    - - - - diff --git a/hcp/hcp.doxyfile b/hcp/hcp.doxyfile deleted file mode 100644 index 8ba9142..0000000 --- a/hcp/hcp.doxyfile +++ /dev/null @@ -1,2446 +0,0 @@ -# Doxyfile 1.8.13 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all text -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv -# for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = "Host Communication Protocol" - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = 2.0 - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = - -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included -# in the documentation. The maximum height of the logo should not exceed 55 -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy -# the logo to the output directory. - -PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = doxygen - -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new -# page for each member. If set to NO, the documentation of a member will be part -# of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:\n" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. - -ALIASES = - -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = YES - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, Javascript, -# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: -# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: -# Fortran. In the later case the parser tries to guess whether the code is fixed -# or free formatted code, this is the default for Fortran type files), VHDL. For -# instance to make doxygen treat .inc files as Fortran files (default is PHP), -# and .f files as C (default is Fortran), use: inc=Fortran f=C. -# -# Note: For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = YES - -# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up -# to that level are automatically included in the table of contents, even if -# they do not have an id attribute. -# Note: This feature currently applies only to Markdown headings. -# Minimum value: 0, maximum value: 99, default value: 0. -# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. - -TOC_INCLUDE_HEADINGS = 0 - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = YES - -# If one adds a struct or class to a group and this option is enabled, then also -# any nested class or struct is added to the same group. By default this option -# is disabled and one has to add nested compounds explicitly via \ingroup. -# The default value is: NO. - -GROUP_NESTED_COMPOUNDS = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = YES - -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO, -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. If set to YES, local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO, only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO, these declarations will be -# included in the documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO, these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES, upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. -# The default value is: system dependent. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES, the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = NO - -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will -# append additional text to a page's title, such as Class Reference. If set to -# YES the compound reference will be hidden. -# The default value is: NO. - -HIDE_COMPOUND_REFERENCE= NO - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = YES - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo -# list. This list is created by putting \todo commands in the documentation. -# The default value is: YES. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test -# list. This list is created by putting \test commands in the documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES, the -# list will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. See also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong or incomplete -# parameter documentation, but not about the absence of documentation. -# The default value is: NO. - -WARN_NO_PARAMDOC = YES - -# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when -# a warning is encountered. -# The default value is: NO. - -WARN_AS_ERROR = NO - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). - -WARN_LOGFILE = doxygen\doxygen_error.log - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING -# Note: If this tag is empty the current directory is searched. - -INPUT = inc \ - src \ - hcp.md \ - doc/md - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: http://www.gnu.org/software/libiconv) for the list of -# possible encodings. -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# read by doxygen. -# -# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, -# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, -# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, -# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, -# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf. - -FILE_PATTERNS = *.c \ - *.h \ - *.md - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = inc/fpc_host_cmd.h \ - src/fpc_host_cmd.c - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = */test/* - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = doc/md - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = doc/img - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = hcp.md - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# function all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = YES - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see http://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the -# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the -# cost of reduced performance. This can be particularly helpful with template -# rich C++ code for which doxygen's built-in parser lacks the necessary type -# information. -# Note: The availability of this option depends on whether or not doxygen was -# generated with the -Duse-libclang=ON option for CMake. -# The default value is: NO. - -CLANG_ASSISTED_PARSING = NO - -# If clang assisted parsing is enabled you can provide the compiler with command -# line options that you would normally use when invoking the compiler. Note that -# the include paths will already be set by doxygen for the files and directories -# specified with INPUT and INCLUDE_PATH. -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. - -CLANG_OPTIONS = - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = YES - -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined -# cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefore more robust against future updates. -# Doxygen will copy the style sheet files to the output directory. -# Note: The order of the extra style sheet files is of importance (e.g. the last -# style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to YES can help to show when doxygen was last run and thus if the -# documentation is up to date. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = NO - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: http://developer.apple.com/tools/xcode/), introduced with -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the master .chm file (NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- -# folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = NO - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = YES - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 1 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# http://www.mathjax.org) which uses client side Javascript for the rendering -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from http://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /