ソースを参照

同步上游到 21d59b8b40c2 , 添加 RT-Thread UART 对接 HCI 层 (#19)

* 同步到上游 21d59b8b40c2 tag-v1.5,调整文件

* 完成 rt-thread uart 到 HCI 层的对接,修改编译描述文件

* 对接rtdbg日志; debug 部分例程; menuconfig 配置 HCI uart 设备

* 调整文件, 增加 firmwares 及 同步上游代码说明文档
Yanlineng 3 年 前
コミット
a285c2e07a
100 ファイル変更20573 行追加119 行削除
  1. 4 0
      .rat-excludes
  2. 6 19
      .travis.yml
  3. 1 1
      NOTICE
  4. 11 8
      RELEASE_NOTES.md
  5. 69 8
      SConscript
  6. 33 0
      apps/advertiser/pkg.yml
  7. 131 0
      apps/advertiser/src/advertiser.c
  8. 23 0
      apps/advertiser/syscfg.yml
  9. 1 3
      apps/blecent/pkg.yml
  10. 0 3
      apps/blecent/src/blecent.c
  11. 1 0
      apps/blecent/src/peer.c
  12. 4 0
      apps/blecsc/src/blecsc_sens.c
  13. 4 0
      apps/blehr/src/blehr.c
  14. 2 0
      apps/bleprph/src/bleprph.c
  15. 1 0
      apps/bleprph/src/gatt_svr.c
  16. 1 0
      apps/bleprph/src/misc.c
  17. 1 0
      babblesim/README.md
  18. 30 0
      babblesim/core/include/argparse.h
  19. 51 0
      babblesim/core/include/cmsis.h
  20. 27 0
      babblesim/core/include/core_cm4.h
  21. 48 0
      babblesim/core/include/time_machine.h
  22. 9 4
      babblesim/core/pkg.yml
  23. 179 0
      babblesim/core/src/argparse.c
  24. 81 0
      babblesim/core/src/cmsis.c
  25. 68 0
      babblesim/core/src/irq_handler.c
  26. 84 0
      babblesim/core/src/main_config.c
  27. 255 0
      babblesim/core/src/time_machine.c
  28. 32 0
      babblesim/edtt/hci_test/pkg.yml
  29. 45 0
      babblesim/edtt/hci_test/src/main.c
  30. 30 0
      babblesim/edtt/hci_test/syscfg.yml
  31. 5 5
      babblesim/edtt/hci_transport/include/ble_hci_edtt.h
  32. 242 0
      babblesim/edtt/hci_transport/include/commands.h
  33. 38 0
      babblesim/edtt/hci_transport/include/edtt_driver.h
  34. 11 11
      babblesim/edtt/hci_transport/pkg.yml
  35. 813 0
      babblesim/edtt/hci_transport/src/ble_hci_edtt.c
  36. 289 0
      babblesim/edtt/hci_transport/src/edtt_driver_bsim.c
  37. 40 0
      babblesim/edtt/hci_transport/syscfg.yml
  38. 18 14
      babblesim/hw/bsp/nrf52_bsim/bsp.yml
  39. 91 0
      babblesim/hw/bsp/nrf52_bsim/include/bsp/bsp.h
  40. 64 0
      babblesim/hw/bsp/nrf52_bsim/include/os/os_arch.h
  41. 60 0
      babblesim/hw/bsp/nrf52_bsim/include/os/sim.h
  42. 22 0
      babblesim/hw/bsp/nrf52_bsim/nordic_pca10040_debug.cmd
  43. 45 0
      babblesim/hw/bsp/nrf52_bsim/nordic_pca10040_debug.sh
  44. 22 0
      babblesim/hw/bsp/nrf52_bsim/nordic_pca10040_download.cmd
  45. 40 0
      babblesim/hw/bsp/nrf52_bsim/nordic_pca10040_download.sh
  46. 37 0
      babblesim/hw/bsp/nrf52_bsim/pkg.yml
  47. 169 0
      babblesim/hw/bsp/nrf52_bsim/src/arch/bsim_arch/os_arch.c
  48. 231 0
      babblesim/hw/bsp/nrf52_bsim/src/arch/bsim_arch/startup_nrf52_bsim.c
  49. 160 0
      babblesim/hw/bsp/nrf52_bsim/src/hal_bsp.c
  50. 74 0
      babblesim/hw/bsp/nrf52_bsim/syscfg.yml
  51. 28 0
      babblesim/hw/mcu/nordic/nrf52_bsim/include/mcu/cmsis_nvic.h
  52. 11 6
      babblesim/hw/mcu/nordic/nrf52_bsim/include/mcu/cortex_m4.h
  53. 69 0
      babblesim/hw/mcu/nordic/nrf52_bsim/include/mcu/mcu.h
  54. 9 8
      babblesim/hw/mcu/nordic/nrf52_bsim/include/mcu/mcu_sim.h
  55. 34 0
      babblesim/hw/mcu/nordic/nrf52_bsim/include/mcu/native_bsp.h
  56. 50 0
      babblesim/hw/mcu/nordic/nrf52_bsim/include/mcu/nrf52_clock.h
  57. 101 0
      babblesim/hw/mcu/nordic/nrf52_bsim/include/mcu/nrf52_hal.h
  58. 6 4
      babblesim/hw/mcu/nordic/nrf52_bsim/include/mcu/nrf52_periph.h
  59. 8 12
      babblesim/hw/mcu/nordic/nrf52_bsim/pkg.yml
  60. 289 0
      babblesim/hw/mcu/nordic/nrf52_bsim/src/hal_flash.c
  61. 73 0
      babblesim/hw/mcu/nordic/nrf52_bsim/src/hal_hw_id.c
  62. 27 0
      babblesim/hw/mcu/nordic/nrf52_bsim/src/hal_native_priv.h
  63. 226 0
      babblesim/hw/mcu/nordic/nrf52_bsim/src/hal_os_tick.c
  64. 47 0
      babblesim/hw/mcu/nordic/nrf52_bsim/src/hal_reset_cause.c
  65. 128 0
      babblesim/hw/mcu/nordic/nrf52_bsim/src/hal_system.c
  66. 949 0
      babblesim/hw/mcu/nordic/nrf52_bsim/src/hal_timer.c
  67. 478 0
      babblesim/hw/mcu/nordic/nrf52_bsim/src/hal_uart.c
  68. 36 0
      babblesim/hw/mcu/nordic/nrf52_bsim/src/hal_watchdog.c
  69. 248 0
      babblesim/hw/mcu/nordic/nrf52_bsim/src/native_uart_cfg.c
  70. 31 0
      babblesim/hw/mcu/nordic/nrf52_bsim/src/native_uart_cfg_priv.h
  71. 103 0
      babblesim/hw/mcu/nordic/nrf52_bsim/src/nrf52_clock.c
  72. 37 0
      babblesim/hw/mcu/nordic/nrf52_bsim/src/system_nrf52.c
  73. 526 0
      babblesim/hw/mcu/nordic/nrf52_bsim/syscfg.yml
  74. 3 0
      babblesim/sdk/.gitignore
  75. 47 0
      babblesim/sdk/pkg.yml
  76. 47 0
      babblesim/sdk/scripts/link_babblesim.sh
  77. 21 0
      babblesim/sdk/scripts/link_nrfx.sh
  78. 23 0
      babblesim/targets/blecent/pkg.yml
  79. 2 5
      babblesim/targets/blecent/syscfg.yml
  80. 21 0
      babblesim/targets/blecent/target.yml
  81. 23 0
      babblesim/targets/blehci/pkg.yml
  82. 21 0
      babblesim/targets/blehci/syscfg.yml
  83. 21 0
      babblesim/targets/blehci/target.yml
  84. 23 0
      babblesim/targets/bleprph/pkg.yml
  85. 20 0
      babblesim/targets/bleprph/syscfg.yml
  86. 21 0
      babblesim/targets/bleprph/target.yml
  87. 23 0
      babblesim/targets/btshell/pkg.yml
  88. 20 0
      babblesim/targets/btshell/syscfg.yml
  89. 21 0
      babblesim/targets/btshell/target.yml
  90. 3 6
      babblesim/targets/edtthci/pkg.yml
  91. 55 0
      babblesim/targets/edtthci/syscfg.yml
  92. 22 0
      babblesim/targets/edtthci/target.yml
  93. 2 2
      docs/btshell/btshell_api.rst
  94. 87 0
      docs/firmwares/README.md
  95. 5863 0
      docs/firmwares/hci_uart_nrf52840dk.hex
  96. 6897 0
      docs/firmwares/hci_usb_nrf52840dongle.hex
  97. BIN
      docs/firmwares/images/JLINK_U.png
  98. BIN
      docs/firmwares/images/nrf52840dk.png
  99. BIN
      docs/firmwares/images/nrf52840dongle.png
  100. 70 0
      docs/同步上游代码说明.md

+ 4 - 0
.rat-excludes

@@ -16,6 +16,7 @@ pts-sm.txt
 94654-20170317-085441153.pts
 uncrustify.cfg
 .style_ignored_dirs
+.mailmap
 
 # tinycrypt - BSD License.
 tinycrypt
@@ -31,3 +32,6 @@ os_mbuf.c
 
 # Bluetooth Mesh badge sample - Apache 2.0 License
 mesh_badge
+
+#BabbleSim and EDDT - Apache 2.0 License
+babblesim

+ 6 - 19
.travis.yml

@@ -26,6 +26,7 @@ _addons: &addon_conf
     packages:
       - gcc-multilib
       - gcc-7-multilib
+      - g++-multilib
 
 go:
   - "1.16"
@@ -34,6 +35,11 @@ git:
   depth: false
 
 matrix:
+  allow_failures:
+    - env:
+        - TEST=BUILD_PORTS
+        - VM_AMOUNT=1
+        - TARGET_SET=1
   include:
     # Style checking
     - os: linux
@@ -96,25 +102,6 @@ matrix:
         - VM_AMOUNT=1
         - TARGET_SET=1
 
-    # newt test all
-    - os: osx
-      osx_image: xcode9.2
-      env:
-        - TEST=TEST_ALL
-        - VM_AMOUNT=3
-        - TARGET_SET=1
-    - os: osx
-      osx_image: xcode9.2
-      env:
-        - TEST=TEST_ALL
-        - VM_AMOUNT=3
-        - TARGET_SET=2
-    - os: osx
-      osx_image: xcode9.2
-      env:
-        - TEST=TEST_ALL
-        - VM_AMOUNT=3
-        - TARGET_SET=3
     - os: windows
       env:
         - TEST=BUILD_TARGETS_WINDOWS

+ 1 - 1
NOTICE

@@ -1,5 +1,5 @@
 Apache Mynewt NimBLE
-Copyright 2015-2021 The Apache Software Foundation
+Copyright 2015-2022 The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).

+ 11 - 8
RELEASE_NOTES.md

@@ -1,21 +1,24 @@
 # RELEASE NOTES
 
-24 March 2021 - Apache NimBLE v1.4.0
+20 April 2022 - Apache NimBLE v1.5.0
 
 For full release notes, please visit the
 [Apache Mynewt Wiki](https://cwiki.apache.org/confluence/display/MYNEWT/Release+Notes).
 
-Apache NimBLE is an open-source Bluetooth 5.1 stack (both Host & Controller) that completely
+Apache NimBLE is an open-source Bluetooth 5.3 stack (both Host & Controller) that completely
 replaces the proprietary SoftDevice on Nordic chipsets.
 
 New features in this version of NimBLE include:
 
-* Support for PHY on Dialog Configurable MAC (CMAC)
-* Support for PHY on Nordic nRF5340
-* Support for Apache NuttX port of NimBLE
-* Controller-to-host flow control support
-* Support for USB transport
-* Various bugfixes
+* Fake dual-mode option for controller
+* LLCP tracing via HCI events
+* Code size optimization for disabled GAP roles
+* Support for PA/LNA
+* LE Secure Connections Only mode
+* Support for Bluetooth Core Specification 5.3
+* Connection subrating
+* BabbleSim support
+* Various bugfixes and improvements
 
 If working on next-generation RTOS and Bluetooth protocol stack
 sounds exciting to you, get in touch, by sending a mail to the Apache Mynewt

+ 69 - 8
SConscript

@@ -19,8 +19,10 @@ path += [
     cwd + '/nimble/host/services/tps/include',
     cwd + '/nimble/host/store/ram/include',
     cwd + '/nimble/host/util/include',
-    cwd + '/porting/nimble/include',
-    cwd + '/porting/npl/rtthread/include']
+    cwd + '/nimble/transport/include',
+    cwd + '/nimble/transport/common/hci_h4/include',
+    cwd + '/porting/npl/rtthread/include',
+    cwd + '/porting/nimble/include']
 
 # Host stack
 src += Split('''
@@ -57,7 +59,6 @@ src += Split('''
     nimble/host/src/ble_l2cap_coc.c
     nimble/host/src/ble_l2cap_sig.c
     nimble/host/src/ble_l2cap_sig_cmd.c
-    nimble/host/src/ble_monitor.c
     nimble/host/src/ble_sm_alg.c
     nimble/host/src/ble_sm.c
     nimble/host/src/ble_sm_cmd.c
@@ -77,6 +78,62 @@ src += Split('''
     nimble/host/util/src/addr.c
     ''')
 
+# HCI transport
+src += Split('''
+    nimble/transport/src/monitor.c
+    nimble/transport/src/transport.c
+    nimble/transport/common/hci_h4/src/hci_h4.c
+    ''')
+
+if GetDepend(['PKG_NIMBLE_HCI_USING_RTT_UART']):
+    src += Split("""
+        nimble/transport/rtthread/src/ble_hci_rtthread_uart.c
+    """)
+
+# mesh
+if GetDepend(['PKG_NIMBLE_MESH']):
+    path += [cwd + '/nimble/host/mesh/include']
+
+    src += Split('''
+        nimble/host/mesh/src/access.c
+        nimble/host/mesh/src/adv_ext.c
+        nimble/host/mesh/src/adv_legacy.c
+        nimble/host/mesh/src/adv.c
+        nimble/host/mesh/src/aes-ccm.c
+        nimble/host/mesh/src/app_keys.c
+        nimble/host/mesh/src/beacon.c
+        nimble/host/mesh/src/cdb.c
+        nimble/host/mesh/src/cfg_cli.c
+        nimble/host/mesh/src/cfg_srv.c
+        nimble/host/mesh/src/cfg.c
+        nimble/host/mesh/src/crypto.c
+        nimble/host/mesh/src/friend.c
+        nimble/host/mesh/src/glue.c
+        nimble/host/mesh/src/health_cli.c
+        nimble/host/mesh/src/health_srv.c
+        nimble/host/mesh/src/heartbeat.c
+        nimble/host/mesh/src/light_model.c
+        nimble/host/mesh/src/lpn.c
+        nimble/host/mesh/src/mesh.c
+        nimble/host/mesh/src/model_cli.c
+        nimble/host/mesh/src/model_srv.c
+        nimble/host/mesh/src/msg.c
+        nimble/host/mesh/src/net.c
+        nimble/host/mesh/src/pb_adv.c
+        nimble/host/mesh/src/pb_gatt_srv.c
+        nimble/host/mesh/src/pb_gatt.c
+        nimble/host/mesh/src/prov_device.c
+        nimble/host/mesh/src/prov.c
+        nimble/host/mesh/src/provisioner.c
+        nimble/host/mesh/src/proxy_msg.c
+        nimble/host/mesh/src/proxy_srv.c
+        nimble/host/mesh/src/rpl.c
+        nimble/host/mesh/src/settings.c
+        nimble/host/mesh/src/shell.c
+        nimble/host/mesh/src/subnet.c
+        nimble/host/mesh/src/transport.c
+    ''')
+
 # Few utils and data structures copied from Mynewt
 src += Split('''
     porting/nimble/src/nimble_port.c''')
@@ -112,9 +169,7 @@ else:
     CPPDEFINES = ['']
 
 if GetDepend(['PKG_NIMBLE_CTLR']):
-    path += [
-        cwd + '/nimble/transport/ram/include',
-        cwd + '/nimble/controller/include']
+    path += [cwd + '/nimble/controller/include']
         
 
     if GetDepend(['PKG_NIMBLE_BSP_NRF51']):
@@ -131,7 +186,6 @@ if GetDepend(['PKG_NIMBLE_CTLR']):
             """)
 
     src += Split("""
-        nimble/transport/ram/src/ble_hci_ram.c
         nimble/controller/src/ble_ll_sched.c
         nimble/controller/src/ble_ll_whitelist.c
         nimble/controller/src/ble_ll_ctrl.c
@@ -146,6 +200,7 @@ if GetDepend(['PKG_NIMBLE_CTLR']):
         nimble/controller/src/ble_ll_scan.c
         nimble/controller/src/ble_ll_dtm.c
         nimble/controller/src/ble_ll_hci_ev.c
+        nimble/controller/src/ble_ll_hci_vs.c
         nimble/controller/src/ble_ll_iso.c
         nimble/controller/src/ble_ll_rfmgmt.c
         nimble/controller/src/ble_ll_scan_aux.c
@@ -157,6 +212,12 @@ if GetDepend(['PKG_NIMBLE_CTLR']):
         porting/npl/rtthread/src/nrf5x_isr.c
         """)
 
+# advertiser sample
+if GetDepend(['PKG_NIMBLE_SAMPLE_ADVERTISER']):
+    src += Split("""
+        apps/advertiser/src/advertiser.c
+    """)
+
 # central sample
 if GetDepend(['PKG_NIMBLE_SAMPLE_CENTRAL']):
     path += [cwd + '/apps/blecent/src']
@@ -240,7 +301,7 @@ if GetDepend(['PKG_NIMBLE_SAMPLE_EXT_ADVERTISER']):
 if GetDepend(['PKG_NIMBLE_SAMPLE_BEACON']):
     src += Glob('apps/ibeacon/src/ibeacon.c')
 
-LOCAL_CCFLAGS = ''
+LOCAL_CCFLAGS = '-Wno-format -Wno-unused-variable -Wno-unused-but-set-variable'
 
 if rtconfig.CROSS_TOOL == 'keil':
     LOCAL_CCFLAGS += ' --gnu --diag_suppress=111'

+ 33 - 0
apps/advertiser/pkg.yml

@@ -0,0 +1,33 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+
+pkg.name: "apps/advertiser"
+pkg.type: app
+pkg.description: "Basic advertiser application"
+pkg.author: "Krzysztof Kopyściński <krzysztof.kopyscinski@codecoup.pl>"
+
+pkg.deps:
+    - "@apache-mynewt-core/kernel/os"
+    - "@apache-mynewt-core/sys/console/full"
+    - "@apache-mynewt-core/sys/log/full"
+    - "@apache-mynewt-core/sys/stats/full"
+    - "@apache-mynewt-core/sys/log/modlog"
+    - "@apache-mynewt-nimble/nimble/host"
+    - "@apache-mynewt-nimble/nimble/host/util"
+    - "@apache-mynewt-nimble/nimble/host/services/gap"

+ 131 - 0
apps/advertiser/src/advertiser.c

@@ -0,0 +1,131 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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.
+ */
+
+#include <assert.h>
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "os/os.h"
+#include "sysinit/sysinit.h"
+#include "log/log.h"
+#include "host/ble_hs.h"
+#include "host/util/util.h"
+#include "services/gap/ble_svc_gap.h"
+
+static const char *device_name = "Apache Mynewt";
+
+/* adv_event() calls advertise(), so forward declaration is required */
+static void advertise(void);
+
+static void
+set_ble_addr(void)
+{
+    int rc;
+    ble_addr_t addr;
+
+    /* generate new non-resolvable private address */
+    rc = ble_hs_id_gen_rnd(1, &addr);
+    assert(rc == 0);
+
+    /* set generated address */
+    rc = ble_hs_id_set_rnd(addr.val);
+    assert(rc == 0);
+}
+
+static int
+adv_event(struct ble_gap_event *event, void *arg)
+{
+    switch (event->type) {
+    case BLE_GAP_EVENT_ADV_COMPLETE:
+        MODLOG_DFLT(INFO, "Advertising completed, termination code: %d\n",
+                    event->adv_complete.reason);
+        advertise();
+        return 0;
+    default:
+        MODLOG_DFLT(ERROR, "Advertising event not handled\n");
+        return 0;
+    }
+}
+
+static void
+advertise(void)
+{
+    int rc;
+    struct ble_gap_adv_params adv_params;
+    struct ble_hs_adv_fields fields;
+
+    /* set adv parameters */
+    memset(&adv_params, 0, sizeof(adv_params));
+    adv_params.conn_mode = BLE_GAP_CONN_MODE_NON;
+    adv_params.disc_mode = BLE_GAP_DISC_MODE_GEN;
+
+    memset(&fields, 0, sizeof(fields));
+
+    /* Fill the fields with advertising data - flags, tx power level, name */
+    fields.flags = BLE_HS_ADV_F_DISC_GEN;
+    fields.tx_pwr_lvl_is_present = 1;
+    fields.tx_pwr_lvl = BLE_HS_ADV_TX_PWR_LVL_AUTO;
+    fields.name = (uint8_t *)device_name;
+    fields.name_len = strlen(device_name);
+    fields.name_is_complete = 1;
+
+    rc = ble_gap_adv_set_fields(&fields);
+    assert(rc == 0);
+
+    MODLOG_DFLT(INFO, "Starting advertising...\n");
+
+    /* As own address type we use hard-coded value, because we generate
+       NRPA and by definition it's random */
+    rc = ble_gap_adv_start(BLE_OWN_ADDR_RANDOM, NULL, 10000,
+                           &adv_params, adv_event, NULL);
+    assert(rc == 0);
+}
+
+static void
+on_sync(void)
+{
+    set_ble_addr();
+
+    /* begin advertising */
+    advertise();
+}
+
+static void
+on_reset(int reason)
+{
+    MODLOG_DFLT(INFO, "Resetting state; reason=%d\n", reason);
+}
+
+static int ble_adv()
+{
+    int rc;
+
+    ble_hs_cfg.sync_cb = on_sync;
+    ble_hs_cfg.reset_cb = on_reset;
+
+    rc = ble_svc_gap_device_name_set(device_name);
+    assert(rc == 0);
+
+    /* startup bluetooth host stack*/
+    ble_hs_thread_startup();
+
+    return 0;
+}
+MSH_CMD_EXPORT_ALIAS(ble_adv, ble_adv, "bluetoooth advertise sample");

+ 23 - 0
apps/advertiser/syscfg.yml

@@ -0,0 +1,23 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+
+
+syscfg.vals:
+    BLE_ROLE_BROADCASTER: 1
+    BLE_ROLE_CENTRAL: 0
+    BLE_ROLE_OBSERVER: 0
+    BLE_ROLE_PERIPHERAL: 0

+ 1 - 3
apps/blecent/pkg.yml

@@ -28,10 +28,8 @@ pkg.deps:
     - "@apache-mynewt-core/sys/log/full"
     - "@apache-mynewt-core/sys/log/modlog"
     - "@apache-mynewt-core/sys/stats/full"
-    - nimble/controller
     - nimble/host
     - nimble/host/util
     - nimble/host/services/gap
     - nimble/host/services/gatt
-    - nimble/host/store/ram
-    - nimble/transport/ram
+    - nimble/host/store/config

+ 0 - 3
apps/blecent/src/blecent.c

@@ -27,9 +27,6 @@
 #include "host/ble_hs.h"
 #include "host/util/util.h"
 
-/* HCI transport. */
-#include "nimble/ble_hci_trans.h"
-
 /* Mandatory services. */
 #include "services/gap/ble_svc_gap.h"
 #include "services/gatt/ble_svc_gatt.h"

+ 1 - 0
apps/blecent/src/peer.c

@@ -21,6 +21,7 @@
 #include <string.h>
 #include "host/ble_hs.h"
 #include "blecent.h"
+#include <stdlib.h>
 
 static void *peer_svc_mem;
 static struct os_mempool peer_svc_pool;

+ 4 - 0
apps/blecsc/src/blecsc_sens.c

@@ -29,6 +29,7 @@
 #include "host/ble_hs.h"
 #include "services/gap/ble_svc_gap.h"
 #include "blecsc_sens.h"
+#include "nimble/host/util/include/host/util/util.h"
 
 /* Wheel size for simulation calculations */
 #define CSC_SIM_WHEEL_CIRCUMFERENCE_MM            2000
@@ -262,6 +263,9 @@ blecsc_on_sync(void)
     int rc;
 
     /* Figure out address to use while advertising (no privacy) */
+    rc = ble_hs_util_ensure_addr(0);
+    assert(rc == 0);
+
     rc = ble_hs_id_infer_auto(0, &blecsc_addr_type);
     assert(rc == 0);
 

+ 4 - 0
apps/blehr/src/blehr.c

@@ -27,6 +27,7 @@
 #include "host/ble_hs.h"
 #include "services/gap/ble_svc_gap.h"
 #include "blehr_sens.h"
+#include "nimble/host/util/include/host/util/util.h"
 
 static bool notify_state;
 static uint16_t notify_conn_handle;
@@ -208,6 +209,9 @@ blehr_on_sync(void)
     int rc;
 
     /* Use privacy */
+    rc = ble_hs_util_ensure_addr(0);
+    assert(rc == 0);
+
     rc = ble_hs_id_infer_auto(0, &blehr_addr_type);
     assert(rc == 0);
 

+ 2 - 0
apps/bleprph/src/bleprph.c

@@ -315,6 +315,8 @@ int bleprph_entry(void)
 
     /* startup bluetooth host stack*/
     ble_hs_thread_startup();
+    
+    return 0;
 }
 
 MSH_CMD_EXPORT_ALIAS(bleprph_entry, bleprph, "bluetooth peripheral role sample");

+ 1 - 0
apps/bleprph/src/gatt_svr.c

@@ -20,6 +20,7 @@
 #include <assert.h>
 #include <stdio.h>
 #include <string.h>
+#include <stdlib.h>
 #include "host/ble_hs.h"
 #include "host/ble_uuid.h"
 #include "bleprph.h"

+ 1 - 0
apps/bleprph/src/misc.c

@@ -18,6 +18,7 @@
  */
 
 #include "bleprph.h"
+#include "host/ble_hs.h"
 
 /**
  * Utility function to log an array of bytes.

+ 1 - 0
babblesim/README.md

@@ -0,0 +1 @@
+BabbleSim support for Apache NimBLE

+ 30 - 0
babblesim/core/include/argparse.h

@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2017 Oticon A/S
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+#ifndef BSIM_NRF_ARGS_H
+#define BSIM_NRF_ARGS_H
+
+#include <stdint.h>
+#include "NRF_hw_args.h"
+#include "bs_cmd_line.h"
+#include "bs_cmd_line_typical.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct nrf52_bsim_args_t {
+    BS_BASIC_DEVICE_OPTIONS_FIELDS
+    nrf_hw_sub_args_t nrf_hw;
+};
+
+struct nrf52_bsim_args_t *nrfbsim_argsparse(int argc, char *argv[]);
+void nrfbsim_register_args(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif

+ 51 - 0
babblesim/core/include/cmsis.h

@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2020 Oticon A/S
+ * Copyright (c) 2021 Codecoup
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+/**
+ * This header defines replacements for inline
+ * ARM Cortex-M CMSIS intrinsics.
+ */
+
+#ifndef BOARDS_POSIX_NRF52_BSIM_CMSIS_H
+#define BOARDS_POSIX_NRF52_BSIM_CMSIS_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Implement the following ARM intrinsics as no-op:
+ * - ARM Data Synchronization Barrier
+ * - ARM Data Memory Synchronization Barrier
+ * - ARM Instruction Synchronization Barrier
+ * - ARM No Operation
+ */
+#ifndef __DMB
+#define __DMB()
+#endif
+
+#ifndef __DSB
+#define __DSB()
+#endif
+
+#ifndef __ISB
+#define __ISB()
+#endif
+
+#ifndef __NOP
+#define __NOP()
+#endif
+
+void NVIC_SystemReset(void);
+void __disable_irq(void);
+void __enable_irq(void);
+uint32_t __get_PRIMASK(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* BOARDS_POSIX_NRF52_BSIM_CMSIS_H */

+ 27 - 0
babblesim/core/include/core_cm4.h

@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2020 Oticon A/S
+ * Copyright (c) 2021 Codecoup
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#ifndef _BSIM_CORE_CM4_H
+#define _BSIM_CORE_CM4_H
+
+#include <stdint.h>
+
+/* Include the original ext_NRF52_hw_models core_cm4.h */
+#include <../HW_models/core_cm4.h>
+
+/* Add missing function definitions */
+extern void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority);
+extern void NVIC_EnableIRQ(IRQn_Type IRQn);
+extern void NVIC_DisableIRQ(IRQn_Type IRQn);
+
+void __WFI(void);
+
+#ifndef __REV
+#define __REV __builtin_bswap32
+#endif
+
+#endif

+ 48 - 0
babblesim/core/include/time_machine.h

@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2017 Oticon A/S
+ * Copyright (c) 2021 Codecoup
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#ifndef _TIME_MACHINE_H
+#define _TIME_MACHINE_H
+
+#include "bs_types.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+extern bs_time_t now;
+bs_time_t tm_get_abs_time(void);
+bs_time_t tm_get_hw_time(void);
+bs_time_t tm_hw_time_to_abs_time(bs_time_t hwtime);
+bs_time_t tm_abs_time_to_hw_time(bs_time_t abstime);
+
+void tm_reset_hw_times(void);
+
+void tm_find_next_timer_to_trigger(void);
+bs_time_t tm_get_next_timer_abstime(void);
+
+void tm_update_last_phy_sync_time(bs_time_t abs_time);
+
+void tm_set_phy_max_resync_offset(bs_time_t offset_in_us);
+
+void tm_run_forever(void);
+
+void tm_sleep_until_hw_time(bs_time_t hw_time);
+
+void tm_sleep_until_abs_time(bs_time_t time);
+
+void tm_start(void);
+
+void tm_tick(void);
+
+void tm_tick_limited(bs_time_t max_time_diff);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif

+ 9 - 4
porting/targets/dummy_bsp/pkg.yml → babblesim/core/pkg.yml

@@ -17,11 +17,16 @@
 # under the License.
 #
 
-pkg.name: porting/targets/dummy_bsp
-pkg.type: bsp
-pkg.description: A dummy BSP definition
+pkg.name: babblesim/core
+pkg.description: time machine, irq handeler, core
 pkg.author: "Apache Mynewt <dev@mynewt.apache.org>"
 pkg.homepage: "http://mynewt.apache.org/"
 pkg.keywords:
-pkg.cflags:
+
 pkg.deps:
+  - "babblesim/sdk"
+
+pkg.cflags: -std=gnu99
+
+pkg.init:
+  bsim_start: 9999

+ 179 - 0
babblesim/core/src/argparse.c

@@ -0,0 +1,179 @@
+/*
+ * Copyright (c) 2017 Oticon A/S
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+#include <stdbool.h>
+#include <stdlib.h>
+#include <limits.h>
+#include "bs_tracing.h"
+#include "bs_oswrap.h"
+#include "bs_dump_files.h"
+#include "argparse.h"
+#include "NRF_hw_args.h"
+#include "bs_cmd_line.h"
+#include "bs_dynargs.h"
+#include "bs_cmd_line_typical.h"
+#include "NRF_HWLowL.h"
+#include "controller/ble_ll.h"
+
+static bs_args_struct_t *args_struct;
+static struct nrf52_bsim_args_t arg;
+const char *bogus_sim_id = "bogus";
+
+static void cmd_trace_lvl_found(char *argv, int offset)
+{
+	bs_trace_set_level(arg.verb);
+}
+
+static void cmd_gdev_nbr_found(char *argv, int offset)
+{
+	bs_trace_set_prefix_dev(arg.global_device_nbr);
+}
+
+static bool nosim;
+static void cmd_nosim_found(char *argv, int offset)
+{
+	hwll_set_nosim(true);
+}
+
+static void cmd_bdaddr_found(char *argv, int offset)
+{
+    union {
+        uint64_t u64;
+        uint8_t u8[8];
+    } bdaddr;
+    char *endptr;
+
+    if (sscanf(&argv[offset], "%02hhx:%02hhx:%02hhx:%02hhx:%02hhx:%02hhx",
+               &bdaddr.u8[5], &bdaddr.u8[4], &bdaddr.u8[3], &bdaddr.u8[2],
+               &bdaddr.u8[1], &bdaddr.u8[0]) < 6) {
+        bdaddr.u64 = strtoull(&argv[offset], &endptr, 0);
+        if (*endptr) {
+            return;
+        }
+
+        bdaddr.u64 = htole64(bdaddr.u64);
+    }
+
+    ble_ll_set_public_addr(bdaddr.u8);
+}
+
+static void print_no_sim_warning(void)
+{
+	bs_trace_warning("Neither simulation id or the device number "
+			"have been set. I assume you want to run "
+			"without a BabbleSim phy (-nosim)\n");
+	bs_trace_warning("If this is not what you wanted, check with "
+			"--help how to set them\n");
+	bs_trace_raw(3, "setting sim_id to 'bogus', device number to 0 "
+			"and nosim\n");
+}
+
+void nrfbsim_register_args(void)
+{
+#define args (&arg)
+	/* This define is quite ugly, but allows reusing the definitions
+	 * provided by the utils library */
+	static bs_args_struct_t args_struct_toadd[] = {
+		ARG_TABLE_S_ID,
+		ARG_TABLE_P_ID_2G4,
+		ARG_TABLE_DEV_NBR,
+		ARG_TABLE_GDEV_NBR,
+		ARG_TABLE_VERB,
+		ARG_TABLE_SEED,
+		ARG_TABLE_COLOR,
+		ARG_TABLE_NOCOLOR,
+		ARG_TABLE_FORCECOLOR,
+		_NRF_HW_SUB_CMD_ARG_STRUCT,
+		/*
+		 * Fields:
+		 * manual, mandatory, switch,
+		 * option_name, var_name, type,
+		 * destination, callback,
+		 * description
+		 */
+		{ false, false , false,
+		  "A", "bdaddr", 's',
+		  NULL, cmd_bdaddr_found, "Device public address"},
+		{false, false, true,
+		"nosim", "", 'b',
+		(void *)&nosim, cmd_nosim_found,
+		"(debug feature) Do not connect to the phy"},
+		BS_DUMP_FILES_ARGS,
+		{true, false, false,
+		"argsmain", "arg", 'l',
+		NULL, NULL,
+		"The arguments that follow will be passed to main (default)"},
+		ARG_TABLE_ENDMARKER
+	};
+#undef args
+
+	bs_add_dynargs(&args_struct, args_struct_toadd);
+}
+
+/**
+ * Check the arguments provided in the command line: set args based on it or
+ * defaults, and check they are correct
+ */
+struct nrf52_bsim_args_t *nrfbsim_argsparse(int argc, char *argv[])
+{
+	bs_args_set_defaults(args_struct);
+	arg.verb = 2;
+	bs_trace_set_level(arg.verb);
+	nrf_hw_sub_cmline_set_defaults(&arg.nrf_hw);
+	static const char default_phy[] = "2G4";
+
+    for (int i = 1; i < argc; i++) {
+        if (bs_is_option(argv[i], "argsmain", 0)) {
+            continue;
+        }
+
+        if (!bs_args_parse_one_arg(argv[i], args_struct)) {
+            bs_args_print_switches_help(args_struct);
+            bs_trace_error_line("Incorrect option %s\n",
+                                argv[i]);
+        }
+    }
+
+	/**
+	 * If the user did not set the simulation id or device number
+	 * we assume he wanted to run with nosim (but warn him)
+	 */
+	if ((!nosim) && (arg.s_id == NULL) && (arg.device_nbr == UINT_MAX)) {
+		print_no_sim_warning();
+		nosim = true;
+		hwll_set_nosim(true);
+	}
+	if (nosim) {
+		if (arg.s_id == NULL) {
+			arg.s_id = (char *)bogus_sim_id;
+		}
+		if (arg.device_nbr == UINT_MAX) {
+			arg.device_nbr = 0;
+		}
+	}
+
+	if (arg.device_nbr == UINT_MAX) {
+		bs_args_print_switches_help(args_struct);
+		bs_trace_error_line("The command line option <device number> "
+				    "needs to be set\n");
+	}
+	if (arg.global_device_nbr == UINT_MAX) {
+		arg.global_device_nbr = arg.device_nbr;
+		bs_trace_set_prefix_dev(arg.global_device_nbr);
+	}
+	if (!arg.s_id) {
+		bs_args_print_switches_help(args_struct);
+		bs_trace_error_line("The command line option <simulation ID> "
+				    "needs to be set\n");
+	}
+	if (!arg.p_id) {
+		arg.p_id = (char *)default_phy;
+	}
+
+	if (arg.rseed == UINT_MAX) {
+		arg.rseed = 0x1000 + arg.device_nbr;
+	}
+	return &arg;
+}

+ 81 - 0
babblesim/core/src/cmsis.c

@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2020 Nordic Semiconductor ASA
+ * Copyright (c) 2020 Oticon A/S
+ * Copyright (c) 2021 Codecoup
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#include <stdint.h>
+#include "irq_ctrl.h"
+
+#include "irq_sources.h"
+#include <nrfx.h>
+#include "cmsis.h"
+#include "os/sim.h"
+
+#include <stdbool.h>
+#include <stddef.h>
+
+extern void (* systemVectors[256])(void);
+
+/*
+ *  Replacement for ARMs NVIC functions()
+ */
+void NVIC_SetPendingIRQ(IRQn_Type IRQn)
+{
+	hw_irq_ctrl_raise_im_from_sw(IRQn);
+}
+
+void NVIC_ClearPendingIRQ(IRQn_Type IRQn)
+{
+	hw_irq_ctrl_clear_irq(IRQn);
+}
+
+void NVIC_DisableIRQ(IRQn_Type IRQn)
+{
+	hw_irq_ctrl_disable_irq(IRQn);
+}
+
+void NVIC_EnableIRQ(IRQn_Type IRQn)
+{
+	hw_irq_ctrl_enable_irq(IRQn);
+}
+
+void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
+{
+	hw_irq_ctrl_prio_set(IRQn, priority);
+}
+
+uint32_t NVIC_GetPriority(IRQn_Type IRQn)
+{
+	return hw_irq_ctrl_get_prio(IRQn);
+}
+
+void NVIC_SystemReset(void)
+{
+	inner_main_clean_up(1);
+}
+
+/*
+ * Replacements for some other CMSIS functions
+ */
+void __enable_irq(void)
+{
+	hw_irq_ctrl_change_lock(false);
+}
+
+void __disable_irq(void)
+{
+	hw_irq_ctrl_change_lock(true);
+}
+
+uint32_t __get_PRIMASK(void)
+{
+	return hw_irq_ctrl_get_current_lock();
+}
+
+void NVIC_SetVector(IRQn_Type IRQn, uint32_t vector)
+{
+	systemVectors[(int32_t)IRQn + 16] = (void(*)(void))vector;
+}

+ 68 - 0
babblesim/core/src/irq_handler.c

@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2017 Oticon A/S
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * SW side of the IRQ handling
+ */
+
+#include <stdint.h>
+#include "irq_ctrl.h"
+#include "irq_sources.h"
+#include "os/sim.h"
+
+static int currently_running_irq = -1;
+extern void (* const systemVectors[256])(void);
+
+/**
+ * When an interrupt is raised, this function is called to handle it and, if
+ * needed, swap to a re-enabled thread
+ *
+ * Note that even that this function is executing in a Zephyr thread,  it is
+ * effectively the model of the interrupt controller passing context to the IRQ
+ * handler and therefore its priority handling
+ */
+
+void posix_interrupt_raised(void)
+{
+    uint64_t irq_lock;
+    int irq_nbr;
+
+    irq_lock = hw_irq_ctrl_get_current_lock();
+
+    if (irq_lock) {
+        /* "spurious" wakes can happen with interrupts locked */
+        return;
+    }
+
+    while ((irq_nbr = hw_irq_ctrl_get_highest_prio_irq()) != -1) {
+        int last_current_running_prio = hw_irq_ctrl_get_cur_prio();
+        int last_running_irq = currently_running_irq;
+
+        hw_irq_ctrl_set_cur_prio(hw_irq_ctrl_get_prio(irq_nbr));
+        hw_irq_ctrl_clear_irq(irq_nbr);
+
+        currently_running_irq = irq_nbr;
+        systemVectors[irq_nbr + 16]();
+        currently_running_irq = last_running_irq;
+
+        hw_irq_ctrl_set_cur_prio(last_current_running_prio);
+    }
+}
+
+/**
+ * Thru this function the IRQ controller can raise an immediate  interrupt which
+ * will interrupt the SW itself
+ * (this function should only be called from the HW model code, from SW threads)
+ */
+void posix_irq_handler_im_from_sw(void)
+{
+	/*
+	 * if a higher priority interrupt than the possibly currently running is
+	 * pending we go immediately into irq_handler() to vector into its
+	 * handler
+	 */
+	if (hw_irq_ctrl_get_highest_prio_irq() != -1) {
+	    posix_interrupt_raised();
+	}
+}

+ 84 - 0
babblesim/core/src/main_config.c

@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2017-2018 Oticon A/S
+ * Copyright (c) 2021 Codecoup
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#include <unistd.h>
+#include "NRF_HW_model_top.h"
+#include "NRF_HWLowL.h"
+#include "bs_tracing.h"
+#include "bs_symbols.h"
+#include "bs_types.h"
+#include "bs_rand_main.h"
+#include "bs_pc_backchannel.h"
+#include "bs_dump_files.h"
+#include "argparse.h"
+#include "time_machine.h"
+#include "os/mynewt.h"
+#include <stdio.h>
+#include "os/sim.h"
+
+uint global_device_nbr;
+struct nrf52_bsim_args_t *args;
+
+void
+bst_tick(bs_time_t time)
+{
+    return;
+}
+
+uint8_t
+inner_main_clean_up(int exit_code)
+{
+    hwll_terminate_simulation();
+    nrf_hw_models_free_all();
+    bs_dump_files_close_all();
+
+    bs_clean_back_channels();
+    return 0;
+}
+
+uint8_t
+main_clean_up_trace_wrap(void)
+{
+    return inner_main_clean_up(0);
+}
+
+void
+bsim_init(int argc, char** argv, int (*main_fn)(int argc, char **arg))
+{
+        setvbuf(stdout, NULL, _IOLBF, 512);
+        setvbuf(stderr, NULL, _IOLBF, 512);
+
+        bs_trace_register_cleanup_function(main_clean_up_trace_wrap);
+        bs_trace_register_time_function(tm_get_abs_time);
+
+        nrf_hw_pre_init();
+        nrfbsim_register_args();
+
+        args = nrfbsim_argsparse(argc, argv);
+        global_device_nbr = args->global_device_nbr;
+
+        bs_read_function_names_from_Tsymbols(argv[0]);
+
+        nrf_hw_initialize(&args->nrf_hw);
+        os_init(main_fn);
+        os_start();
+
+        while (1) {
+            sleep(1);
+        }
+}
+
+void
+bsim_start(void)
+{
+    bs_trace_raw(9, "%s: Connecting to phy...\n", __func__);
+    hwll_connect_to_phy(args->device_nbr, args->s_id, args->p_id);
+    bs_trace_raw(9, "%s: Connected\n", __func__);
+
+    bs_random_init(args->rseed);
+    bs_dump_files_open(args->s_id, args->global_device_nbr);
+}

+ 255 - 0
babblesim/core/src/time_machine.c

@@ -0,0 +1,255 @@
+/*
+ * Copyright (c) 2017-2018 Oticon A/S
+ * Copyright (c) 2021 Codecoup
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#include "NRF_HW_model_top.h"
+#include "NRF_HWLowL.h"
+#include "bs_tracing.h"
+#include "bs_types.h"
+#include "bs_utils.h"
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <ctype.h>
+
+/* Note: All timers are relative to hw_time and NOT to 'now' */
+extern bs_time_t timer_nrf_main_timer;
+
+/* The events priorities are as in this list from top to bottom
+ * Priority being which timer executes first if several trigger at the same
+ * instant
+ */
+static enum {
+    NRF_HW_MAIN_TIMER = 0,
+    NUMBER_OF_TIMERS,
+    NONE
+} next_timer_index = NONE;
+
+static bs_time_t *Timer_list[NUMBER_OF_TIMERS] = {
+    &timer_nrf_main_timer,
+};
+static bs_time_t next_timer_time = TIME_NEVER;
+
+/*
+ * Current absolute time of this device, as the device knows it.
+ * It is never reset:
+ */
+bs_time_t now;
+/* Current time the HW of this device things it is */
+static bs_time_t hw_time;
+/*
+ * Offset between the current absolute time of the device and the HW time
+ * That is, the absolute time when the HW_time got reset
+ */
+static bs_time_t hw_time_delta;
+
+/* Last time we synchronized with the bsim PHY, in device abs time */
+static bs_time_t last_bsim_phy_sync_time;
+
+#define BSIM_DEFAULT_PHY_MAX_RESYNC_OFFSET 1000000
+/* At least every second we will inform the simulator about our timing */
+static bs_time_t max_resync_offset = BSIM_DEFAULT_PHY_MAX_RESYNC_OFFSET;
+
+/**
+ * Set the maximum amount of time the device will spend without talking
+ * (synching) with the phy.
+ * This does not change the functional behavior of the Zephyr code or of the
+ * radio emulation, and it is only relevant if special test code running in the
+ * device interacts behind the scenes with other devices test code.
+ * Setting for example a value of 5ms will ensure that this device time
+ * will never be more than 5ms away from the phy. Setting it in all devices
+ * to 5ms would then ensure no device time is farther apart than 5ms from any
+ * other.
+ *
+ * Note that setting low values has a performance penalty.
+ */
+void
+tm_set_phy_max_resync_offset(bs_time_t offset_in_us)
+{
+    max_resync_offset = offset_in_us;
+}
+
+/**
+ * Return the absolute current time (no HW model except the RADIO
+ * should look into this)
+ */
+bs_time_t
+tm_get_abs_time(void)
+{
+    return now;
+}
+
+/**
+ * Return the current HW time
+ */
+bs_time_t
+tm_get_hw_time(void)
+{
+    return hw_time;
+}
+
+bs_time_t
+posix_get_hw_cycle(void)
+{
+    return tm_get_hw_time();
+}
+
+/**
+ * Reset the HW time
+ */
+static void
+tm_reset_hw_time(void)
+{
+    hw_time = 0;
+    hw_time_delta = now;
+    if (now != 0) {
+        bs_trace_error_line("Reset not supposed to happen after "
+                            "initialization\n");
+    }
+}
+
+/**
+ * Update the current hw_time value given the absolute time
+ */
+INLINE void
+tm_update_HW_time(void)
+{
+    hw_time = now - hw_time_delta;
+}
+
+/*
+ * Reset the HW time
+ */
+void
+tm_reset_hw_times(void)
+{
+    tm_reset_hw_time();
+}
+
+/**
+ * Advance the internal time values of this device until time
+ */
+void
+tm_sleep_until_abs_time(bs_time_t time)
+{
+    if (time >= now) {
+        /*
+         * Ensure that at least we sync with the phy
+         * every max_resync_offset
+         */
+        if (time > last_bsim_phy_sync_time + max_resync_offset) {
+            hwll_sync_time_with_phy(time);
+            last_bsim_phy_sync_time = time;
+        }
+
+        now = time;
+    } else {
+        /* LCOV_EXCL_START */
+        bs_trace_warning_manual_time_line(now, "next_time_time "
+                                               "corrupted (%"PRItime"<= %"PRItime", timer idx=%i)\n",
+                                          time, now, next_timer_index);
+        /* LCOV_EXCL_STOP */
+    }
+    tm_update_HW_time();
+}
+
+/**
+ * Keep track of the last time we synchronized the time with the scheduler
+ */
+void
+tm_update_last_phy_sync_time(bs_time_t abs_time)
+{
+    last_bsim_phy_sync_time = abs_time;
+}
+
+/**
+ * Advance the internal time values of this device
+ * until the HW time reaches hw_time
+ */
+void
+tm_sleep_until_hw_time(bs_time_t hw_time)
+{
+    bs_time_t next_time = TIME_NEVER;
+
+    if (hw_time != TIME_NEVER) {
+        next_time = hw_time + hw_time_delta;
+    }
+
+    tm_sleep_until_abs_time(next_time);
+}
+
+/**
+ * Look into all timers and update next_timer accordingly
+ * To be called each time a "timed process" updates its timer
+ */
+void
+tm_find_next_timer_to_trigger(void)
+{
+    next_timer_time = *Timer_list[0];
+    next_timer_index = 0;
+
+    for (uint i = 1; i < NUMBER_OF_TIMERS; i++) {
+        if (next_timer_time > *Timer_list[i]) {
+            next_timer_time = *Timer_list[i];
+            next_timer_index = i;
+        }
+    }
+}
+
+bs_time_t
+tm_get_next_timer_abstime(void)
+{
+    return next_timer_time + hw_time_delta;
+}
+
+bs_time_t
+tm_hw_time_to_abs_time(bs_time_t hwtime)
+{
+    if (hwtime == TIME_NEVER) {
+        return TIME_NEVER;
+    }
+    return hwtime + hw_time_delta;
+}
+
+bs_time_t
+tm_abs_time_to_hw_time(bs_time_t abstime)
+{
+    if (abstime == TIME_NEVER) {
+        return TIME_NEVER;
+    }
+    return abstime - hw_time_delta;
+}
+
+void
+tm_tick_limited(bs_time_t max_time_diff)
+{
+    bs_time_t time_to_wait;
+
+    if (max_time_diff != TIME_NEVER && now + max_time_diff < next_timer_time) {
+        time_to_wait = now + max_time_diff;
+    } else {
+        time_to_wait = next_timer_time;
+    }
+
+    tm_sleep_until_hw_time(time_to_wait);
+    switch (next_timer_index) {
+        case NRF_HW_MAIN_TIMER:
+            nrf_hw_some_timer_reached();
+            break;
+        default:
+            bs_trace_error_time_line("next_timer_index "
+                                     "corrupted\n");
+            break;
+    }
+    tm_find_next_timer_to_trigger();
+}
+
+void
+tm_tick(void)
+{
+    tm_tick_limited(TIME_NEVER);
+}

+ 32 - 0
babblesim/edtt/hci_test/pkg.yml

@@ -0,0 +1,32 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+pkg.name: babblesim/edtt/hci_test
+pkg.type: app
+pkg.description: nRF52 on BabbleSim - EDTT tester
+pkg.author: "Codecoup"
+pkg.homepage: "http://mynewt.apache.org/"
+pkg.keywords:
+
+pkg.deps:
+    - "@apache-mynewt-core/sys/console/stub"
+    - "@apache-mynewt-core/sys/log/stub"
+    - "@apache-mynewt-core/sys/stats/full"
+    - "@apache-mynewt-core/kernel/os"
+    - nimble/transport
+    - babblesim/edtt/hci_transport

+ 45 - 0
babblesim/edtt/hci_test/src/main.c

@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2021 Codecoup
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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.
+ */
+
+#include "os/mynewt.h"
+#include "ble_hci_edtt.h"
+
+static int
+main_fn(int argc, char **argv)
+{
+    sysinit();
+
+    edtt_init();
+
+    while (1) {
+        os_eventq_run(os_eventq_dflt_get());
+    }
+    return 0;
+}
+
+int
+main(int argc, char **argv)
+{
+    extern void bsim_init(int argc, char** argv, void *main_fn);
+    bsim_init(argc, argv, main_fn);
+
+    return 0;
+}

+ 30 - 0
babblesim/edtt/hci_test/syscfg.yml

@@ -0,0 +1,30 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+
+syscfg.vals:
+    BLE_TRANSPORT_LL: native
+    BLE_TRANSPORT_HS: custom
+
+    # EDTT requires 0x123456789ABC address for first device
+    # and 0x456789ABCDEF for second
+    BLE_LL_PUBLIC_DEV_ADDR: 0x123456789ABC
+#    BLE_LL_PUBLIC_DEV_ADDR: 0x456789ABCDEF
+
+    # For LL/CON/ADV/BV-09-C, LL/CON/ADV/BV-10-C
+    BLE_LL_CFG_FEAT_LE_CSA2: 1

+ 5 - 5
nimble/transport/ram/include/transport/ram/ble_hci_ram.h → babblesim/edtt/hci_transport/include/ble_hci_edtt.h

@@ -1,4 +1,6 @@
 /*
+ * Copyright (c) 2021 Codecoup
+ *
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -17,16 +19,14 @@
  * under the License.
  */
 
-#ifndef H_BLE_HCI_RAM_
-#define H_BLE_HCI_RAM_
-
-#include "nimble/ble_hci_trans.h"
+#ifndef H_BLE_HCI_EDTT_
+#define H_BLE_HCI_EDTT_
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-void ble_hci_ram_init(void);
+int edtt_init(void);
 
 #ifdef __cplusplus
 }

+ 242 - 0
babblesim/edtt/hci_transport/include/commands.h

@@ -0,0 +1,242 @@
+/*
+ * Copyright (c) 2019 Oticon A/S
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#ifndef EDDT_APP_COMMANDS_H
+#define EDDT_APP_COMMANDS_H
+
+enum commands_t {
+	CMD_NOTHING = 0,
+	CMD_ECHO_REQ,
+	CMD_ECHO_RSP,
+	CMD_INQUIRE_REQ,
+	CMD_INQUIRE_RSP,
+	CMD_DISCONNECT_REQ,
+	CMD_DISCONNECT_RSP,
+	CMD_READ_REMOTE_VERSION_INFORMATION_REQ,
+	CMD_READ_REMOTE_VERSION_INFORMATION_RSP,
+	CMD_SET_EVENT_MASK_REQ,
+	CMD_SET_EVENT_MASK_RSP,
+	CMD_RESET_REQ,
+	CMD_RESET_RSP,
+	CMD_READ_TRANSMIT_POWER_LEVEL_REQ,
+	CMD_READ_TRANSMIT_POWER_LEVEL_RSP,
+	CMD_SET_CONTROLLER_TO_HOST_FLOW_CONTROL_REQ,
+	CMD_SET_CONTROLLER_TO_HOST_FLOW_CONTROL_RSP,
+	CMD_HOST_BUFFER_SIZE_REQ,
+	CMD_HOST_BUFFER_SIZE_RSP,
+	CMD_HOST_NUMBER_OF_COMPLETED_PACKETS_REQ,
+	CMD_HOST_NUMBER_OF_COMPLETED_PACKETS_RSP,
+	CMD_SET_EVENT_MASK_PAGE_2_REQ,
+	CMD_SET_EVENT_MASK_PAGE_2_RSP,
+	CMD_WRITE_LE_HOST_SUPPORT_REQ,
+	CMD_WRITE_LE_HOST_SUPPORT_RSP,
+	CMD_READ_AUTHENTICATED_PAYLOAD_TIMEOUT_REQ,
+	CMD_READ_AUTHENTICATED_PAYLOAD_TIMEOUT_RSP,
+	CMD_WRITE_AUTHENTICATED_PAYLOAD_TIMEOUT_REQ,
+	CMD_WRITE_AUTHENTICATED_PAYLOAD_TIMEOUT_RSP,
+	CMD_READ_LOCAL_VERSION_INFORMATION_REQ,
+	CMD_READ_LOCAL_VERSION_INFORMATION_RSP,
+	CMD_READ_LOCAL_SUPPORTED_COMMANDS_REQ,
+	CMD_READ_LOCAL_SUPPORTED_COMMANDS_RSP,
+	CMD_READ_LOCAL_SUPPORTED_FEATURES_REQ,
+	CMD_READ_LOCAL_SUPPORTED_FEATURES_RSP,
+	CMD_READ_BUFFER_SIZE_REQ,
+	CMD_READ_BUFFER_SIZE_RSP,
+	CMD_READ_BD_ADDR_REQ,
+	CMD_READ_BD_ADDR_RSP,
+	CMD_READ_RSSI_REQ,
+	CMD_READ_RSSI_RSP,
+	CMD_LE_SET_EVENT_MASK_REQ,
+	CMD_LE_SET_EVENT_MASK_RSP,
+	CMD_LE_READ_BUFFER_SIZE_REQ,
+	CMD_LE_READ_BUFFER_SIZE_RSP,
+	CMD_LE_READ_LOCAL_SUPPORTED_FEATURES_REQ,
+	CMD_LE_READ_LOCAL_SUPPORTED_FEATURES_RSP,
+	CMD_LE_SET_RANDOM_ADDRESS_REQ,
+	CMD_LE_SET_RANDOM_ADDRESS_RSP,
+	CMD_LE_SET_ADVERTISING_PARAMETERS_REQ,
+	CMD_LE_SET_ADVERTISING_PARAMETERS_RSP,
+	CMD_LE_READ_ADVERTISING_CHANNEL_TX_POWER_REQ,
+	CMD_LE_READ_ADVERTISING_CHANNEL_TX_POWER_RSP,
+	CMD_LE_SET_ADVERTISING_DATA_REQ,
+	CMD_LE_SET_ADVERTISING_DATA_RSP,
+	CMD_LE_SET_SCAN_RESPONSE_DATA_REQ,
+	CMD_LE_SET_SCAN_RESPONSE_DATA_RSP,
+	CMD_LE_SET_ADVERTISING_ENABLE_REQ,
+	CMD_LE_SET_ADVERTISING_ENABLE_RSP,
+	CMD_LE_SET_SCAN_PARAMETERS_REQ,
+	CMD_LE_SET_SCAN_PARAMETERS_RSP,
+	CMD_LE_SET_SCAN_ENABLE_REQ,
+	CMD_LE_SET_SCAN_ENABLE_RSP,
+	CMD_LE_CREATE_CONNECTION_REQ,
+	CMD_LE_CREATE_CONNECTION_RSP,
+	CMD_LE_CREATE_CONNECTION_CANCEL_REQ,
+	CMD_LE_CREATE_CONNECTION_CANCEL_RSP,
+	CMD_LE_READ_FILTER_ACCEPT_LIST_SIZE_REQ,
+	CMD_LE_READ_FILTER_ACCEPT_LIST_SIZE_RSP,
+	CMD_LE_CLEAR_FILTER_ACCEPT_LIST_REQ,
+	CMD_LE_CLEAR_FILTER_ACCEPT_LIST_RSP,
+	CMD_LE_ADD_DEVICE_TO_FILTER_ACCEPT_LIST_REQ,
+	CMD_LE_ADD_DEVICE_TO_FILTER_ACCEPT_LIST_RSP,
+	CMD_LE_REMOVE_DEVICE_FROM_FILTER_ACCEPT_LIST_REQ,
+	CMD_LE_REMOVE_DEVICE_FROM_FILTER_ACCEPT_LIST_RSP,
+	CMD_LE_CONNECTION_UPDATE_REQ,
+	CMD_LE_CONNECTION_UPDATE_RSP,
+	CMD_LE_SET_HOST_CHANNEL_CLASSIFICATION_REQ,
+	CMD_LE_SET_HOST_CHANNEL_CLASSIFICATION_RSP,
+	CMD_LE_READ_CHANNEL_MAP_REQ,
+	CMD_LE_READ_CHANNEL_MAP_RSP,
+	CMD_LE_READ_REMOTE_FEATURES_REQ,
+	CMD_LE_READ_REMOTE_FEATURES_RSP,
+	CMD_LE_ENCRYPT_REQ,
+	CMD_LE_ENCRYPT_RSP,
+	CMD_LE_RAND_REQ,
+	CMD_LE_RAND_RSP,
+	CMD_LE_START_ENCRYPTION_REQ,
+	CMD_LE_START_ENCRYPTION_RSP,
+	CMD_LE_LONG_TERM_KEY_REQUEST_REPLY_REQ,
+	CMD_LE_LONG_TERM_KEY_REQUEST_REPLY_RSP,
+	CMD_LE_LONG_TERM_KEY_REQUEST_NEGATIVE_REPLY_REQ,
+	CMD_LE_LONG_TERM_KEY_REQUEST_NEGATIVE_REPLY_RSP,
+	CMD_LE_READ_SUPPORTED_STATES_REQ,
+	CMD_LE_READ_SUPPORTED_STATES_RSP,
+	CMD_LE_RECEIVER_TEST_REQ,
+	CMD_LE_RECEIVER_TEST_RSP,
+	CMD_LE_TRANSMITTER_TEST_REQ,
+	CMD_LE_TRANSMITTER_TEST_RSP,
+	CMD_LE_TEST_END_REQ,
+	CMD_LE_TEST_END_RSP,
+	CMD_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_REPLY_REQ,
+	CMD_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_REPLY_RSP,
+	CMD_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_NEGATIVE_REPLY_REQ,
+	CMD_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_NEGATIVE_REPLY_RSP,
+	CMD_LE_SET_DATA_LENGTH_REQ,
+	CMD_LE_SET_DATA_LENGTH_RSP,
+	CMD_LE_READ_SUGGESTED_DEFAULT_DATA_LENGTH_REQ,
+	CMD_LE_READ_SUGGESTED_DEFAULT_DATA_LENGTH_RSP,
+	CMD_LE_WRITE_SUGGESTED_DEFAULT_DATA_LENGTH_REQ,
+	CMD_LE_WRITE_SUGGESTED_DEFAULT_DATA_LENGTH_RSP,
+	CMD_LE_READ_LOCAL_P_256_PUBLIC_KEY_COMMAND_REQ,
+	CMD_LE_READ_LOCAL_P_256_PUBLIC_KEY_COMMAND_RSP,
+	CMD_LE_GENERATE_DHKEY_COMMAND_REQ,
+	CMD_LE_GENERATE_DHKEY_COMMAND_RSP,
+	CMD_LE_ADD_DEVICE_TO_RESOLVING_LIST_REQ,
+	CMD_LE_ADD_DEVICE_TO_RESOLVING_LIST_RSP,
+	CMD_LE_REMOVE_DEVICE_FROM_RESOLVING_LIST_REQ,
+	CMD_LE_REMOVE_DEVICE_FROM_RESOLVING_LIST_RSP,
+	CMD_LE_CLEAR_RESOLVING_LIST_REQ,
+	CMD_LE_CLEAR_RESOLVING_LIST_RSP,
+	CMD_LE_READ_RESOLVING_LIST_SIZE_REQ,
+	CMD_LE_READ_RESOLVING_LIST_SIZE_RSP,
+	CMD_LE_READ_PEER_RESOLVABLE_ADDRESS_REQ,
+	CMD_LE_READ_PEER_RESOLVABLE_ADDRESS_RSP,
+	CMD_LE_READ_LOCAL_RESOLVABLE_ADDRESS_REQ,
+	CMD_LE_READ_LOCAL_RESOLVABLE_ADDRESS_RSP,
+	CMD_LE_SET_ADDRESS_RESOLUTION_ENABLE_REQ,
+	CMD_LE_SET_ADDRESS_RESOLUTION_ENABLE_RSP,
+	CMD_LE_SET_RESOLVABLE_PRIVATE_ADDRESS_TIMEOUT_REQ,
+	CMD_LE_SET_RESOLVABLE_PRIVATE_ADDRESS_TIMEOUT_RSP,
+	CMD_LE_READ_MAXIMUM_DATA_LENGTH_REQ,
+	CMD_LE_READ_MAXIMUM_DATA_LENGTH_RSP,
+	CMD_LE_READ_PHY_REQ,
+	CMD_LE_READ_PHY_RSP,
+	CMD_LE_SET_DEFAULT_PHY_REQ,
+	CMD_LE_SET_DEFAULT_PHY_RSP,
+	CMD_LE_SET_PHY_REQ,
+	CMD_LE_SET_PHY_RSP,
+	CMD_LE_ENHANCED_RECEIVER_TEST_REQ,
+	CMD_LE_ENHANCED_RECEIVER_TEST_RSP,
+	CMD_LE_ENHANCED_TRANSMITTER_TEST_REQ,
+	CMD_LE_ENHANCED_TRANSMITTER_TEST_RSP,
+	CMD_LE_SET_EXTENDED_ADVERTISING_PARAMETERS_REQ,
+	CMD_LE_SET_EXTENDED_ADVERTISING_PARAMETERS_RSP,
+	CMD_LE_SET_EXTENDED_ADVERTISING_DATA_REQ,
+	CMD_LE_SET_EXTENDED_ADVERTISING_DATA_RSP,
+	CMD_LE_SET_EXTENDED_SCAN_RESPONSE_DATA_REQ,
+	CMD_LE_SET_EXTENDED_SCAN_RESPONSE_DATA_RSP,
+	CMD_LE_SET_EXTENDED_ADVERTISING_ENABLE_REQ,
+	CMD_LE_SET_EXTENDED_ADVERTISING_ENABLE_RSP,
+	CMD_LE_READ_MAXIMUM_ADVERTISING_DATA_LENGTH_REQ,
+	CMD_LE_READ_MAXIMUM_ADVERTISING_DATA_LENGTH_RSP,
+	CMD_LE_READ_NUMBER_OF_SUPPORTED_ADVERTISING_SETS_REQ,
+	CMD_LE_READ_NUMBER_OF_SUPPORTED_ADVERTISING_SETS_RSP,
+	CMD_LE_REMOVE_ADVERTISING_SET_REQ,
+	CMD_LE_REMOVE_ADVERTISING_SET_RSP,
+	CMD_LE_CLEAR_ADVERTISING_SETS_REQ,
+	CMD_LE_CLEAR_ADVERTISING_SETS_RSP,
+	CMD_LE_SET_PERIODIC_ADVERTISING_PARAMETERS_REQ,
+	CMD_LE_SET_PERIODIC_ADVERTISING_PARAMETERS_RSP,
+	CMD_LE_SET_PERIODIC_ADVERTISING_DATA_REQ,
+	CMD_LE_SET_PERIODIC_ADVERTISING_DATA_RSP,
+	CMD_LE_SET_PERIODIC_ADVERTISING_ENABLE_REQ,
+	CMD_LE_SET_PERIODIC_ADVERTISING_ENABLE_RSP,
+	CMD_LE_SET_EXTENDED_SCAN_PARAMETERS_REQ,
+	CMD_LE_SET_EXTENDED_SCAN_PARAMETERS_RSP,
+	CMD_LE_SET_EXTENDED_SCAN_ENABLE_REQ,
+	CMD_LE_SET_EXTENDED_SCAN_ENABLE_RSP,
+	CMD_LE_EXTENDED_CREATE_CONNECTION_REQ,
+	CMD_LE_EXTENDED_CREATE_CONNECTION_RSP,
+	CMD_LE_PERIODIC_ADVERTISING_CREATE_SYNC_REQ,
+	CMD_LE_PERIODIC_ADVERTISING_CREATE_SYNC_RSP,
+	CMD_LE_PERIODIC_ADVERTISING_CREATE_SYNC_CANCEL_REQ,
+	CMD_LE_PERIODIC_ADVERTISING_CREATE_SYNC_CANCEL_RSP,
+	CMD_LE_PERIODIC_ADVERTISING_TERMINATE_SYNC_REQ,
+	CMD_LE_PERIODIC_ADVERTISING_TERMINATE_SYNC_RSP,
+	CMD_LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST_REQ,
+	CMD_LE_ADD_DEVICE_TO_PERIODIC_ADVERTISER_LIST_RSP,
+	CMD_LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST_REQ,
+	CMD_LE_REMOVE_DEVICE_FROM_PERIODIC_ADVERTISER_LIST_RSP,
+	CMD_LE_CLEAR_PERIODIC_ADVERTISER_LIST_REQ,
+	CMD_LE_CLEAR_PERIODIC_ADVERTISER_LIST_RSP,
+	CMD_LE_READ_PERIODIC_ADVERTISER_LIST_SIZE_REQ,
+	CMD_LE_READ_PERIODIC_ADVERTISER_LIST_SIZE_RSP,
+	CMD_LE_READ_TRANSMIT_POWER_REQ,
+	CMD_LE_READ_TRANSMIT_POWER_RSP,
+	CMD_LE_READ_RF_PATH_COMPENSATION_REQ,
+	CMD_LE_READ_RF_PATH_COMPENSATION_RSP,
+	CMD_LE_WRITE_RF_PATH_COMPENSATION_REQ,
+	CMD_LE_WRITE_RF_PATH_COMPENSATION_RSP,
+	CMD_LE_SET_PRIVACY_MODE_REQ,
+	CMD_LE_SET_PRIVACY_MODE_RSP,
+	CMD_WRITE_BD_ADDR_REQ,
+	CMD_WRITE_BD_ADDR_RSP,
+	CMD_FLUSH_EVENTS_REQ,
+	CMD_FLUSH_EVENTS_RSP,
+	CMD_HAS_EVENT_REQ,
+	CMD_HAS_EVENT_RSP,
+	CMD_GET_EVENT_REQ,
+	CMD_GET_EVENT_RSP,
+	CMD_LE_FLUSH_DATA_REQ,
+	CMD_LE_FLUSH_DATA_RSP,
+	CMD_LE_DATA_READY_REQ,
+	CMD_LE_DATA_READY_RSP,
+	CMD_LE_DATA_WRITE_REQ,
+	CMD_LE_DATA_WRITE_RSP,
+	CMD_LE_DATA_READ_REQ,
+	CMD_LE_DATA_READ_RSP,
+	CMD_GATT_SERVICE_SET_REQ,
+	CMD_GATT_SERVICE_SET_RSP,
+	CMD_GATT_SERVICE_NOTIFY_REQ,
+	CMD_GATT_SERVICE_NOTIFY_RSP,
+	CMD_GATT_SERVICE_INDICATE_REQ,
+	CMD_GATT_SERVICE_INDICATE_RSP,
+	CMD_GAP_ADVERTISING_MODE_REQ,
+	CMD_GAP_ADVERTISING_MODE_RSP,
+	CMD_GAP_ADVERTISING_DATA_REQ,
+	CMD_GAP_ADVERTISING_DATA_RSP,
+	CMD_GAP_SCANNING_MODE_REQ,
+	CMD_GAP_SCANNING_MODE_RSP,
+	CMD_READ_STATIC_ADDRESSES_REQ,
+	CMD_READ_STATIC_ADDRESSES_RSP,
+	CMD_READ_KEY_HIERARCHY_ROOTS_REQ,
+	CMD_READ_KEY_HIERARCHY_ROOTS_RSP,
+	CMD_GAP_READ_IRK_REQ,
+	CMD_GAP_READ_IRK_RSP,
+	CMD_GAP_ROLE_REQ,
+	CMD_GAP_ROLE_RSP
+};
+
+#endif /* EDDT_APP_COMMANDS_H */

+ 38 - 0
babblesim/edtt/hci_transport/include/edtt_driver.h

@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019 Oticon A/S
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#ifndef EDTT_DRIVER_H
+#define EDTT_DRIVER_H
+
+#include <stdlib.h>
+#include <stdbool.h>
+
+#define EDTTT_NONBLOCK 0
+#define EDTTT_BLOCK 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Generic EDTT interface
+ */
+bool edtt_start(void);
+bool edtt_stop(void);
+int edtt_read(uint8_t *ptr, size_t size, int flags);
+int edtt_write(uint8_t *ptr, size_t size, int flags);
+
+/**
+ * Exclusive functions for the BabbleSim driver
+ */
+void enable_edtt_mode(void);
+void set_edtt_autoshutdown(bool mode);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EDTT_DRIVER_H */

+ 11 - 11
nimble/transport/da1469x/pkg.yml → babblesim/edtt/hci_transport/pkg.yml

@@ -6,7 +6,7 @@
 # to you 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
-# 
+#
 #  http://www.apache.org/licenses/LICENSE-2.0
 #
 # Unless required by applicable law or agreed to in writing,
@@ -17,22 +17,22 @@
 # under the License.
 #
 
-pkg.name: nimble/transport/da1469x
-pkg.description: HCI transport for DA1469x
+pkg.name: babblesim/edtt/hci_transport
+pkg.description: Provides communication with EDTT bridge over named pipes
 pkg.author: "Apache Mynewt <dev@mynewt.apache.org>"
 pkg.homepage: "http://mynewt.apache.org/"
-pkg.keywords:
-    - ble
-    - bluetooth
-
 pkg.deps:
-    - "@apache-mynewt-nimble/nimble"
-    - "@apache-mynewt-nimble/nimble/transport/da1469x/cmac_driver"
+    - "@apache-mynewt-core/sys/console/stub"
+    - "@apache-mynewt-core/sys/log/stub"
+    - "@apache-mynewt-core/sys/stats/full"
     - "@apache-mynewt-core/kernel/os"
+    - nimble/controller
+
+# allows to override settings from nimble/transport
+pkg.subpriority: 1
 
 pkg.apis:
     - ble_transport
 
 pkg.init:
-    da1469x_ble_hci_init: 100
-    da1469x_ble_hci_cmac_init: 201
+    ble_hci_edtt_init: 249

+ 813 - 0
babblesim/edtt/hci_transport/src/ble_hci_edtt.c

@@ -0,0 +1,813 @@
+/*
+ * Copyright (c) 2019 Oticon A/S
+ * Copyright (c) 2021 Codecoup
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#include <assert.h>
+#include <string.h>
+#include <stdint.h>
+#include <bs_tracing.h>
+#include "sysinit/sysinit.h"
+#include "syscfg/syscfg.h"
+#include "os/os_eventq.h"
+#include "controller/ble_ll.h"
+
+/* BLE */
+#include "nimble/ble.h"
+#include "nimble/hci_common.h"
+
+#include "bs_symbols.h"
+#include "bs_types.h"
+#include "time_machine.h"
+#include "ble_hci_edtt.h"
+#include "edtt_driver.h"
+#include "commands.h"
+
+#define BLE_HCI_EDTT_NONE        0x00
+#define BLE_HCI_EDTT_CMD         0x01
+#define BLE_HCI_EDTT_ACL         0x02
+#define BLE_HCI_EDTT_EVT         0x04
+
+#define BT_HCI_OP_VS_WRITE_BD_ADDR 0xFC06
+
+/* A packet for queueing EDTT/HCI commands and events */
+struct ble_hci_edtt_pkt {
+    struct os_event ev;
+    STAILQ_ENTRY(ble_hci_edtt_pkt) next;
+    uint32_t timestamp;
+    uint8_t type;
+    void *data;
+};
+
+static struct os_eventq edtt_q_svc;
+static struct os_eventq edtt_q_data;
+static struct os_eventq edtt_q_event;
+static uint8_t edtt_q_event_count;
+
+static uint16_t waiting_opcode;
+static enum commands_t waiting_response;
+
+static struct os_task edtt_poller_task;
+static struct os_task edtt_service_task;
+
+#if EDTT_HCI_LOGS
+extern unsigned int global_device_nbr;
+static FILE *fptr;
+
+static void
+log_hex_array(uint8_t *buf, int len)
+{
+    int i;
+    for (i = 0; i < len; i++) {
+        fprintf(fptr, "%02X ", buf[i]);
+    }
+}
+
+static void
+log_hci_cmd(uint16_t opcode, uint8_t *buf, int len)
+{
+    if (fptr) {
+        fprintf(fptr, "> %llu %02d %02d ", now, BLE_HCI_OCF(opcode), (BLE_HCI_OGF(opcode)));
+        log_hex_array(buf, len);
+        fputs("\n\n", fptr);
+        fflush(fptr);
+    }
+}
+
+static void
+log_hci_evt(struct ble_hci_ev *hdr)
+{
+    if (fptr) {
+        fprintf(fptr, "< %llu %02d ", now, hdr->opcode);
+        log_hex_array(hdr->data, hdr->length);
+        fputs("\n\n", fptr);
+        fflush(fptr);
+    }
+}
+
+static void
+log_hci_init()
+{
+    int flen = (int) strlen(MYNEWT_VAL(EDTT_HCI_LOG_FILE)) + 7;
+    char *fpath = (char *) calloc(flen, sizeof(char));
+    sprintf(fpath, "%s_%02d.log", MYNEWT_VAL(EDTT_HCI_LOG_FILE), global_device_nbr);
+    fptr = fopen(fpath, "w");
+    free(fpath);
+}
+#endif
+
+static int
+ble_hci_edtt_acl_tx(struct os_mbuf *om)
+{
+    struct ble_hci_edtt_pkt *pkt;
+
+    /* If this packet is zero length, just free it */
+    if (OS_MBUF_PKTLEN(om) == 0) {
+        os_mbuf_free_chain(om);
+        return 0;
+    }
+
+    pkt = calloc(1, sizeof(*pkt));
+    pkt->type = BLE_HCI_EDTT_ACL;
+    pkt->data = om;
+
+    os_eventq_put(&edtt_q_svc, &pkt->ev);
+
+    return 0;
+}
+
+static int
+ble_hci_edtt_cmdevt_tx(uint8_t *hci_ev, uint8_t edtt_type)
+{
+    struct ble_hci_edtt_pkt *pkt;
+
+    pkt = calloc(1, sizeof(*pkt));
+    pkt->type = edtt_type;
+    pkt->data = hci_ev;
+
+    os_eventq_put(&edtt_q_svc, &pkt->ev);
+
+    return 0;
+}
+
+/**
+ * Sends an HCI event from the controller to the host.
+ *
+ * @param cmd                   The HCI event to send.  This buffer must be
+ *                                  allocated via ble_hci_trans_buf_alloc().
+ *
+ * @return                      0 on success;
+ *                              A BLE_ERR_[...] error code on failure.
+ */
+int
+ble_transport_to_hs_evt(void *buf)
+{
+    return ble_hci_edtt_cmdevt_tx(buf, BLE_HCI_EDTT_EVT);
+}
+
+/**
+ * Sends ACL data from controller to host.
+ *
+ * @param om                    The ACL data packet to send.
+ *
+ * @return                      0 on success;
+ *                              A BLE_ERR_[...] error code on failure.
+ */
+int
+ble_transport_to_hs_acl(struct os_mbuf *om)
+{
+    return ble_hci_edtt_acl_tx(om);
+}
+
+/**
+ * @brief Clean out excess bytes from the input buffer
+ */
+static void
+read_excess_bytes(uint16_t size)
+{
+    if (size > 0) {
+        uint8_t buffer[size];
+
+        edtt_read((uint8_t *) buffer, size, EDTTT_BLOCK);
+        bs_trace_raw_time(3, "command size wrong! (%u extra bytes removed)", size);
+    }
+}
+
+/**
+ * @brief Provide an error response when an HCI command send failed
+ */
+static void
+error_response(int error)
+{
+    uint16_t response = waiting_response;
+    int le_error = error;
+    uint16_t size = sizeof(le_error);
+
+    edtt_write((uint8_t *) &response, sizeof(response), EDTTT_BLOCK);
+    edtt_write((uint8_t *) &size, sizeof(size), EDTTT_BLOCK);
+    edtt_write((uint8_t *) &le_error, sizeof(le_error), EDTTT_BLOCK);
+    waiting_response = CMD_NOTHING;
+    waiting_opcode = 0;
+}
+
+/**
+ * @brief Allocate buffer for HCI command, fill in parameters and send the
+ * command
+ */
+static int
+send_hci_cmd_to_ctrl(uint16_t opcode, uint8_t param_len, uint16_t response) {
+    struct ble_hci_cmd *buf;
+    int err = 0;
+    waiting_response = response;
+    waiting_opcode = opcode;
+
+    buf = ble_transport_alloc_cmd();
+    if (buf != NULL) {
+        buf->opcode = opcode;
+        buf->length = param_len;
+
+        if (param_len) {
+            edtt_read((uint8_t *) buf->data, param_len, EDTTT_BLOCK);
+        }
+
+#if EDTT_HCI_LOGS
+        log_hci_cmd(opcode, buf->data, param_len);
+#endif
+
+        err = ble_transport_to_ll_cmd(buf);
+        if (err) {
+            ble_transport_free(buf);
+            bs_trace_raw_time(3, "Failed to send HCI command %d (err %d)", opcode, err);
+            error_response(err);
+        }
+    } else {
+        bs_trace_raw_time(3, "Failed to create buffer for HCI command 0x%04x", opcode);
+        error_response(-1);
+    }
+    return err;
+}
+
+/**
+ * @brief Echo function - echo input received
+ */
+static void
+echo(uint16_t size)
+{
+    uint16_t response = CMD_ECHO_RSP;
+
+    edtt_write((uint8_t *) &response, sizeof(response), EDTTT_BLOCK);
+    edtt_write((uint8_t *) &size, sizeof(size), EDTTT_BLOCK);
+
+    if (size > 0) {
+        uint8_t buff[size];
+
+        edtt_read(buff, size, EDTTT_BLOCK);
+        edtt_write(buff, size, EDTTT_BLOCK);
+    }
+}
+
+/**
+ * @brief Handle Command Complete HCI event
+ */
+static void
+command_complete(struct ble_hci_ev *evt)
+{
+    struct ble_hci_ev_command_complete *evt_cc = (void *) evt->data;
+    uint16_t response = waiting_response;
+    uint16_t size = evt->length - sizeof(evt_cc->num_packets) - sizeof(evt_cc->opcode);
+
+    if (evt_cc->opcode == 0) {
+        /* ignore nop */
+    } else if (evt_cc->opcode == waiting_opcode) {
+        bs_trace_raw_time(9, "Command complete for 0x%04x", waiting_opcode);
+
+        edtt_write((uint8_t *) &response, sizeof(response), EDTTT_BLOCK);
+        edtt_write((uint8_t *) &size, sizeof(size), EDTTT_BLOCK);
+        edtt_write((uint8_t *) &evt_cc->status, sizeof(evt_cc->status), EDTTT_BLOCK);
+        edtt_write((uint8_t *) &evt_cc->return_params, size - sizeof(evt_cc->status), EDTTT_BLOCK);
+        waiting_opcode = 0;
+    } else {
+        bs_trace_raw_time(5, "Not waiting for 0x(%04x) command status,"
+                             " expected 0x(%04x)", evt_cc->opcode, waiting_opcode);
+    }
+}
+
+/**
+ * @brief Handle Command Status HCI event
+ */
+static void
+command_status(struct ble_hci_ev *evt)
+{
+    struct ble_hci_ev_command_status *evt_cs = (void *) evt->data;
+    uint16_t opcode = evt_cs->opcode;
+    uint16_t response = waiting_response;
+    uint16_t size;
+
+    size = evt->length - sizeof(evt_cs->num_packets) - sizeof(evt_cs->opcode);
+
+    if (opcode == waiting_opcode) {
+        bs_trace_raw_time(9, "Command status for 0x%04x", waiting_opcode);
+
+        edtt_write((uint8_t *) &response, sizeof(response), EDTTT_BLOCK);
+        edtt_write((uint8_t *) &size, sizeof(size), EDTTT_BLOCK);
+        edtt_write((uint8_t *) &evt_cs->status, sizeof(evt_cs->status), EDTTT_BLOCK);
+        edtt_write((uint8_t *) &evt_cs->num_packets, size - sizeof(evt_cs->status), EDTTT_BLOCK);
+        waiting_opcode = 0;
+    } else {
+        bs_trace_raw_time(5, "Not waiting for 0x(%04x) command status,"
+                             " expected 0x(%04x)", opcode, waiting_opcode);
+    }
+}
+
+static void
+free_data(struct ble_hci_edtt_pkt *pkt)
+{
+    assert(pkt);
+    os_mbuf_free_chain(pkt->data);
+    free(pkt);
+}
+
+static void
+free_event(struct ble_hci_edtt_pkt *pkt)
+{
+    assert(pkt);
+    ble_transport_free(pkt->data);
+    free(pkt);
+}
+
+/**
+ * @brief Allocate and store an event in the event queue
+ */
+static struct ble_hci_edtt_pkt *
+queue_event(struct ble_hci_ev *evt)
+{
+    struct ble_hci_edtt_pkt *pkt;
+
+    pkt = calloc(1, sizeof(*pkt));
+    assert(pkt);
+    pkt->timestamp = tm_get_hw_time();
+    pkt->type = BLE_HCI_EDTT_EVT;
+    pkt->data = evt;
+
+    os_eventq_put(&edtt_q_event, &pkt->ev);
+    edtt_q_event_count++;
+
+    return pkt;
+}
+
+static struct ble_hci_edtt_pkt *
+queue_data(struct os_mbuf *om)
+{
+    struct ble_hci_edtt_pkt *pkt;
+
+    pkt = calloc(1, sizeof(*pkt));
+    assert(pkt);
+    pkt->timestamp = tm_get_hw_time();
+    pkt->type = BLE_HCI_EDTT_ACL;
+    pkt->data = om;
+
+    os_eventq_put(&edtt_q_data, &pkt->ev);
+
+    return pkt;
+}
+
+
+static void *
+dup_complete_evt(void *evt)
+{
+    struct ble_hci_ev *evt_copy;
+
+    /* max evt size is always 257 */
+    evt_copy = ble_transport_alloc_evt(0);
+    memcpy(evt_copy, evt, 257);
+    ble_transport_free(evt);
+
+    return evt_copy;
+}
+
+/**
+ * @brief Thread to service events and ACL data packets from the HCI input queue
+ */
+static void
+service_events(void *arg)
+{
+    struct ble_hci_edtt_pkt *pkt;
+    struct ble_hci_ev *evt;
+    struct ble_hci_ev_num_comp_pkts *evt_ncp;
+
+    while (1) {
+        pkt = (void *)os_eventq_get(&edtt_q_svc);
+
+        if (pkt->type == BLE_HCI_EDTT_EVT) {
+            evt = (void *)pkt->data;
+
+#if EDTT_HCI_LOGS
+            log_hci_evt(hdr);
+#endif
+
+            /* Prepare and send EDTT events */
+            switch (evt->opcode) {
+            case BLE_HCI_EVCODE_COMMAND_COMPLETE:
+                evt = dup_complete_evt(evt);
+                queue_event(evt);
+                command_complete(evt);
+                break;
+            case BLE_HCI_EVCODE_COMMAND_STATUS:
+                evt = dup_complete_evt(evt);
+                queue_event(evt);
+                command_status(evt);
+                break;
+            case BLE_HCI_EVCODE_NUM_COMP_PKTS:
+                evt_ncp = (void *)evt->data;
+                /* This should always be true for NimBLE LL */
+                assert(evt_ncp->count == 1);
+                if (evt_ncp->completed[0].packets == 0) {
+                    /* Discard, because EDTT does not like it */
+                    ble_transport_free(evt);
+                } else {
+                    queue_event(evt);
+                }
+                break;
+            case BLE_HCI_OPCODE_NOP:
+                /* Ignore noop bytes from Link layer */
+                ble_transport_free(evt);
+                break;
+            default:
+                /* Queue HCI events. We will send them to EDTT
+                 * on CMD_GET_EVENT_REQ. */
+                queue_event(evt);
+            }
+        } else if (pkt->type == BLE_HCI_EDTT_ACL) {
+            queue_data(pkt->data);
+        }
+
+        free(pkt);
+    }
+}
+
+/**
+ * @brief Flush all HCI events from the input-copy queue
+ */
+static void
+flush_events(uint16_t size)
+{
+    uint16_t response = CMD_FLUSH_EVENTS_RSP;
+    struct ble_hci_edtt_pkt *pkt;
+
+    while ((pkt = (void *)os_eventq_get_no_wait(&edtt_q_event))) {
+        free_event(pkt);
+        edtt_q_event_count--;
+    }
+    read_excess_bytes(size);
+    size = 0;
+
+    edtt_write((uint8_t *)&response, sizeof(response), EDTTT_BLOCK);
+    edtt_write((uint8_t *)&size, sizeof(size), EDTTT_BLOCK);
+}
+
+/**
+ * @brief Get next available HCI event from the input-copy queue
+ */
+static void
+get_event(uint16_t size)
+{
+    uint16_t response = CMD_GET_EVENT_RSP;
+    struct ble_hci_edtt_pkt *pkt;
+    struct ble_hci_ev *evt;
+
+    read_excess_bytes(size);
+    size = 0;
+
+    edtt_write((uint8_t *)&response, sizeof(response), EDTTT_BLOCK);
+    pkt = (void*)os_eventq_get(&edtt_q_event);
+    if (pkt) {
+        evt = pkt->data;
+        size = sizeof(pkt->timestamp) + sizeof(*evt) + evt->length;
+
+        edtt_write((uint8_t *)&size, sizeof(size), EDTTT_BLOCK);
+        edtt_write((uint8_t *)&pkt->timestamp, sizeof(pkt->timestamp), EDTTT_BLOCK);
+        edtt_write((uint8_t *)evt, sizeof(*evt) + evt->length, EDTTT_BLOCK);
+
+        free_event(pkt);
+
+        edtt_q_event_count--;
+    } else {
+        edtt_write((uint8_t *)&size, sizeof(size), EDTTT_BLOCK);
+    }
+}
+
+/**
+ * @brief Get next available HCI events from the input-copy queue
+ */
+static void
+get_events(uint16_t size)
+{
+    uint16_t response = CMD_GET_EVENT_RSP;
+    struct ble_hci_edtt_pkt *pkt;
+    struct ble_hci_ev *evt;
+    uint8_t count = edtt_q_event_count;
+
+    read_excess_bytes(size);
+    size = 0;
+
+    edtt_write((uint8_t *)&response, sizeof(response), EDTTT_BLOCK);
+    edtt_write((uint8_t *)&count, sizeof(count), EDTTT_BLOCK);
+
+    while (count--) {
+        pkt = (void *)os_eventq_get_no_wait(&edtt_q_event);
+        assert(pkt);
+        evt = pkt->data;
+        size = sizeof(pkt->timestamp) + sizeof(*evt) + evt->length;
+
+        edtt_write((uint8_t *)&size, sizeof(size), EDTTT_BLOCK);
+        edtt_write((uint8_t *)&pkt->timestamp, sizeof(pkt->timestamp), EDTTT_BLOCK);
+        edtt_write((uint8_t *)evt, sizeof(*evt) + evt->length, EDTTT_BLOCK);
+
+        free_event(pkt);
+
+        edtt_q_event_count--;
+    }
+}
+
+/**
+ * @brief Check whether an HCI event is available in the input-copy queue
+ */
+static void
+has_event(uint16_t size)
+{
+    struct has_event_resp {
+        uint16_t response;
+        uint16_t size;
+        uint8_t count;
+    } __attribute__((packed));
+    struct has_event_resp le_response = {
+        .response = CMD_HAS_EVENT_RSP,
+        .size = 1,
+        .count = edtt_q_event_count
+    };
+
+    if (size > 0) {
+        read_excess_bytes(size);
+    }
+    edtt_write((uint8_t *) &le_response, sizeof(le_response), EDTTT_BLOCK);
+}
+
+/**
+ * @brief Flush all ACL Data Packages from the input-copy queue
+ */
+static void
+le_flush_data(uint16_t size)
+{
+    uint16_t response = CMD_LE_FLUSH_DATA_RSP;
+    struct ble_hci_edtt_pkt *pkt;
+
+    while ((pkt = (void *)os_eventq_get_no_wait(&edtt_q_data))) {
+        free_data(pkt);
+    }
+
+    read_excess_bytes(size);
+    size = 0;
+
+    edtt_write((uint8_t *)&response, sizeof(response), EDTTT_BLOCK);
+    edtt_write((uint8_t *)&size, sizeof(size), EDTTT_BLOCK);
+}
+
+/**
+ * @brief Check whether an ACL Data Package is available in the input-copy queue
+ */
+static void
+le_data_ready(uint16_t size)
+{
+    struct has_data_resp {
+        uint16_t response;
+        uint16_t size;
+        uint8_t empty;
+    } __attribute__((packed));
+    struct has_data_resp le_response = {
+        .response = CMD_LE_DATA_READY_RSP,
+        .size = 1,
+        .empty = 0
+    };
+
+    if (size > 0) {
+        read_excess_bytes(size);
+    }
+
+    /* There's no API to check if eventq is empty but a little hack will do... */
+    if (edtt_q_data.evq_list.stqh_first == NULL) {
+        le_response.empty = 1;
+    }
+
+    edtt_write((uint8_t *) &le_response, sizeof(le_response), EDTTT_BLOCK);
+}
+
+/**
+ * @brief Get next available HCI Data Package from the input-copy queue
+ */
+static void
+le_data_read(uint16_t size)
+{
+    uint16_t response = CMD_LE_DATA_READ_RSP;
+    struct ble_hci_edtt_pkt *pkt;
+    struct os_mbuf *om;
+
+    read_excess_bytes(size);
+    size = 0;
+
+    edtt_write((uint8_t *)&response, sizeof(response), EDTTT_BLOCK);
+    pkt = (void *)os_eventq_get(&edtt_q_data);
+    if (pkt) {
+        om = pkt->data;
+
+        size = sizeof(pkt->timestamp) + OS_MBUF_PKTLEN(om);
+
+        edtt_write((uint8_t *)&size, sizeof(size), EDTTT_BLOCK);
+        edtt_write((uint8_t *)&pkt->timestamp, sizeof(pkt->timestamp), EDTTT_BLOCK);
+
+        while (om != NULL) {
+            edtt_write((uint8_t *)om->om_data, om->om_len, EDTTT_BLOCK);
+            om = SLIST_NEXT(om, om_next);
+        }
+
+        free_data(pkt);
+    } else {
+        edtt_write((uint8_t *)&size, sizeof(size), EDTTT_BLOCK);
+    }
+}
+
+/**
+ * @brief Write ACL Data Package to the Controller
+ */
+static void
+le_data_write(uint16_t size)
+{
+    struct data_write_resp {
+        uint16_t code;
+        uint16_t size;
+        uint8_t status;
+    } __attribute__((packed));
+    struct data_write_resp response = {
+        .code = CMD_LE_DATA_WRITE_RSP,
+        .size = 1,
+        .status = 0
+    };
+    struct os_mbuf *om;
+    struct hci_data_hdr hdr;
+    int err;
+
+    if (size >= sizeof(hdr)) {
+        om = ble_transport_alloc_acl_from_hs();
+        if (om) {
+            edtt_read((void *)&hdr, sizeof(hdr), EDTTT_BLOCK);
+            size -= sizeof(hdr);
+
+            os_mbuf_append(om, &hdr, sizeof(hdr));
+
+            if (size >= hdr.hdh_len) {
+                /* Don't care, we have plenty of stack */
+                uint8_t tmp[hdr.hdh_len];
+
+                edtt_read(tmp, hdr.hdh_len, EDTTT_BLOCK);
+                size -= hdr.hdh_len;
+
+                os_mbuf_append(om, tmp, hdr.hdh_len);
+            }
+
+            err = ble_transport_to_ll_acl(om);
+            if (err) {
+                bs_trace_raw_time(3, "Failed to send ACL Data (err %d)", err);
+            }
+        } else {
+            err = -2; /* Failed to allocate data buffer */
+            bs_trace_raw_time(3, "Failed to create buffer for ACL Data.");
+        }
+    } else {
+        /* Size too small for header (handle and data length) */
+        err = -3;
+    }
+    read_excess_bytes(size);
+
+    response.status = err;
+    edtt_write((uint8_t *) &response, sizeof(response), EDTTT_BLOCK);
+}
+
+static void
+fake_write_bd_addr_cc()
+{
+    struct ble_hci_ev_command_complete *ev;
+    struct ble_hci_ev *hci_ev;
+    waiting_opcode = BT_HCI_OP_VS_WRITE_BD_ADDR;
+    waiting_response = CMD_WRITE_BD_ADDR_RSP;
+
+    hci_ev = ble_transport_alloc_evt(0);
+    if (hci_ev) {
+        hci_ev->opcode = BLE_HCI_EVCODE_COMMAND_COMPLETE;
+        hci_ev->length = sizeof(*ev);
+        ev = (void *) hci_ev->data;
+
+        ev->num_packets = 1;
+        ev->opcode = waiting_opcode;
+        ev->status = 0;
+        ble_hci_edtt_cmdevt_tx((uint8_t *) hci_ev, BLE_HCI_EDTT_EVT);
+    }
+}
+
+/* Reads and executes EDTT commands. */
+static void
+edtt_poller(void *arg) {
+    uint16_t command;
+    uint16_t size;
+    uint16_t opcode;
+    uint8_t bdaddr[6];
+
+    /* Initialize HCI command opcode and response variables */
+    waiting_opcode = 0;
+    waiting_response = CMD_NOTHING;
+    edtt_q_event_count = 0;
+
+    /* Initialize and start EDTT system */
+    enable_edtt_mode();
+    set_edtt_autoshutdown(true);
+    edtt_start();
+
+#if EDTT_HCI_LOGS
+    log_hci_init();
+#endif
+
+    while (1) {
+        edtt_read((uint8_t *) &command, sizeof(command), EDTTT_BLOCK);
+        edtt_read((uint8_t *) &size, sizeof(size), EDTTT_BLOCK);
+
+        bs_trace_raw_time(4, "command 0x%04X received (size %u) "
+                             "events=%u\n",
+                          command, size, edtt_q_event_count);
+
+        switch (command) {
+            case CMD_ECHO_REQ:
+                echo(size);
+                break;
+            case CMD_FLUSH_EVENTS_REQ:
+                flush_events(size);
+                break;
+            case CMD_HAS_EVENT_REQ:
+                has_event(size);
+                break;
+            case CMD_GET_EVENT_REQ: {
+                uint8_t multiple;
+
+                edtt_read((uint8_t *) &multiple, sizeof(multiple), EDTTT_BLOCK);
+                if (multiple)
+                    get_events(--size);
+                else
+                    get_event(--size);
+            }
+                break;
+            case CMD_LE_FLUSH_DATA_REQ:
+                le_flush_data(size);
+                break;
+            case CMD_LE_DATA_READY_REQ:
+                le_data_ready(size);
+                break;
+            case CMD_LE_DATA_WRITE_REQ:
+                le_data_write(size);
+                break;
+            case CMD_LE_DATA_READ_REQ:
+                le_data_read(size);
+                break;
+            case CMD_WRITE_BD_ADDR_REQ:
+                edtt_read((uint8_t *) &opcode, sizeof(opcode), EDTTT_BLOCK);
+
+                if (opcode == BT_HCI_OP_VS_WRITE_BD_ADDR) {
+                    edtt_read((uint8_t *) &bdaddr, sizeof(bdaddr), EDTTT_BLOCK);
+                    ble_ll_set_public_addr(bdaddr);
+                    fake_write_bd_addr_cc();
+                } else {
+                    assert(0);
+                }
+                break;
+            default:
+                if (size >= 2) {
+                    edtt_read((uint8_t *) &opcode, sizeof(opcode), EDTTT_BLOCK);
+                    send_hci_cmd_to_ctrl(opcode, size - 2, command + 1);
+                }
+        }
+    }
+}
+
+int
+edtt_init(void)
+{
+    os_stack_t dummy_stack;
+    int rc;
+
+    rc = os_task_init(&edtt_poller_task, "edttpoll", edtt_poller, NULL,
+                      MYNEWT_VAL(EDTT_POLLER_PRIO), OS_WAIT_FOREVER,
+                      &dummy_stack, 1);
+    assert(rc == 0);
+
+    rc = os_task_init(&edtt_service_task, "edttsvc", service_events, NULL,
+                      MYNEWT_VAL(EDTT_POLLER_PRIO) + 1, OS_WAIT_FOREVER,
+                      &dummy_stack, 1);
+    assert(rc == 0);
+
+    return 0;
+}
+
+/**
+ * Initializes the EDTT HCI transport module.
+ *
+ * @return                      0 on success;
+ *                              A BLE_ERR_[...] error code on failure.
+ */
+void
+ble_hci_edtt_init(void)
+{
+    /* Ensure this function only gets called by sysinit. */
+    SYSINIT_ASSERT_ACTIVE();
+
+    os_eventq_init(&edtt_q_svc);
+    os_eventq_init(&edtt_q_event);
+    os_eventq_init(&edtt_q_data);
+}

+ 289 - 0
babblesim/edtt/hci_transport/src/edtt_driver_bsim.c

@@ -0,0 +1,289 @@
+/*
+ * Copyright (c) 2019 Oticon A/S
+ * Copyright (c) 2021 Codecoup
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#include <stddef.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <errno.h>
+
+#include "bs_tracing.h"
+#include "bs_oswrap.h"
+#include "bs_pc_base_fifo_user.h"
+
+#include <time_machine.h>
+#include "edtt_driver.h"
+#include "os/os_sched.h"
+
+/* Recheck if something arrived from the EDTT every 5ms */
+#define EDTT_IF_RECHECK_DELTA 5 /* ms */
+
+/* We want the runs to be deterministic => we want to resync with the Phy
+ * before we retry any read so the bridge device may also run
+ */
+#define EDTT_SIMU_RESYNC_TIME_WITH_EDTT \
+	(EDTT_IF_RECHECK_DELTA * 1000 - 1)
+
+static int edtt_mode_enabled = 0;
+
+/* In this mode, when the EDTTool closes the FIFO we automatically terminate
+ * this simulated device. If false, we just continue running
+ */
+static int edtt_autoshutdown;
+
+#define TO_DEVICE  0
+#define TO_BRIDGE 1
+static int fifo[2] = { -1, -1 };
+static char *fifo_path[2] = {NULL, NULL};
+
+extern unsigned int global_device_nbr;
+
+static void edttd_clean_up(void);
+static void edptd_create_fifo_if(void);
+static int fifo_low_level_read(uint8_t *bufptr, int size);
+
+bool edtt_start(void)
+{
+	if (edtt_mode_enabled == false) {
+		/* otherwise we don't try to open the EDTT interface */
+		return true;
+	}
+
+	edptd_create_fifo_if();
+
+	extern void tm_set_phy_max_resync_offset(uint64_t offset_in_us);
+	tm_set_phy_max_resync_offset(EDTT_SIMU_RESYNC_TIME_WITH_EDTT);
+	return true;
+}
+
+bool edtt_stop(void)
+{
+	if (edtt_mode_enabled == false) {
+		/* otherwise we don't try to open the EDTT interface */
+		return true;
+	}
+
+	bs_trace_raw(9, "EDTTT: %s called\n", __func__);
+	edttd_clean_up();
+	edtt_mode_enabled = false;
+	return true;
+}
+
+static void
+print_hex_array(int lvl, uint8_t *buf, int len)
+{
+    char str[2*len];
+    char *p = str;
+    int i;
+    for (i = 0; i < len; i++) {
+        if (i > 0) *p++ = ' ';
+        sprintf(p++, "%02X", buf[i]);
+    }
+    *p = '\n';
+    bs_trace_raw(lvl, str);
+}
+
+/**
+ * Attempt to read size bytes thru the EDTT IF into the buffer <*ptr>
+ * <flags> can be set to EDTTT_BLOCK or EDTTT_NONBLOCK
+ *
+ * If set to EDTTT_BLOCK it will block the calling thread until <size>
+ * bytes have been read or the interface has been closed.
+ * If set to EDTTT_NONBLOCK it returns as soon as there is no more data to be
+ * read
+ *
+ * Returns the amount of read bytes, or -1 on error
+ */
+int edtt_read(uint8_t *ptr, size_t size, int flags)
+{
+    uint8_t *buf = ptr;
+
+	if (edtt_mode_enabled == false) {
+		return -1;
+	}
+
+	bs_trace_raw_time(8, "EDTT: Asked to read %i bytes\n", size);
+	int read = 0;
+
+	while (size > 0) {
+		int received_bytes;
+
+		received_bytes = fifo_low_level_read(ptr, size);
+		if (received_bytes < 0) {
+			return -1;
+		} else if (received_bytes > 0) {
+			size -= received_bytes;
+			ptr += received_bytes;
+			read += received_bytes;
+		} else {
+			if (flags & EDTTT_BLOCK) {
+				bs_trace_raw_time(9, "EDTT: No enough data yet,"
+						"sleeping for %i ms\n",
+						EDTT_IF_RECHECK_DELTA);
+                os_sched_sleep(os_sched_get_current_task(),
+                               os_time_ms_to_ticks32(EDTT_IF_RECHECK_DELTA));
+                os_sched(NULL);
+			} else {
+				bs_trace_raw_time(9, "EDTT: No enough data yet,"
+						"returning\n");
+				break;
+			}
+		}
+    }
+
+    if (read > 0) {
+        bs_trace_raw_time(8, "Read %i bytes:\n", read);
+        print_hex_array(8, buf, read);
+    }
+	return read;
+}
+
+/**
+ * Write <size> bytes from <ptr> toward the EDTTool
+ *
+ * <flags> is ignored in this driver, all writes to the tool are
+ * instantaneous
+ */
+int edtt_write(uint8_t *ptr, size_t size, int flags)
+{
+	if (edtt_mode_enabled == false) {
+		return -1;
+	}
+
+	bs_trace_raw_time(6, "EDTT: Asked to write %i bytes: ", size);
+    print_hex_array(6, ptr, size);
+
+	if (write(fifo[TO_BRIDGE], ptr, size) != size) {
+		if (errno == EPIPE) {
+			bs_trace_error_line("EDTT IF suddenly closed by other "
+					    "end\n");
+		}
+		if ((errno == EAGAIN) || (errno == EWOULDBLOCK)) {
+			bs_trace_error_line("EDTT IF to bridge filled up (FIFO "
+					    "size needs to be increased)\n");
+		}
+		bs_trace_error_line("EDTT IF: Unexpected error on write\n");
+	}
+	return size;
+}
+
+/*
+ * Applications may want to enable the EDTT interface only in some
+ * cases. By default it is not enabled in this driver. This function
+ * must be called once before starting it to do so
+ */
+void enable_edtt_mode(void)
+{
+	edtt_mode_enabled = true;
+}
+
+/**
+ * Automatically terminate this device execution once the EDTTool disconnects
+ */
+void set_edtt_autoshutdown(bool Mode)
+{
+	edtt_autoshutdown = Mode;
+}
+
+static void edptd_create_fifo_if(void)
+{
+	int flags;
+
+	bs_trace_raw_time(9, "Bringing EDTT IF up (waiting for other side)\n");
+
+	if (pb_com_path == NULL) {
+		bs_trace_error_line("Not connected to Phy."
+				    "EDTT IF cannot be brough up\n");
+	}
+
+	/* At this point we have connected to the Phy so the COM folder does
+	 * already exist
+	 * also SIGPIPE is already ignored
+	 */
+
+	fifo_path[TO_DEVICE] = (char *)bs_calloc(pb_com_path_length + 30,
+						 sizeof(char));
+	fifo_path[TO_BRIDGE] = (char *)bs_calloc(pb_com_path_length + 30,
+						 sizeof(char));
+	sprintf(fifo_path[TO_DEVICE], "%s/Device%i.PTTin",
+		pb_com_path, global_device_nbr);
+	sprintf(fifo_path[TO_BRIDGE], "%s/Device%i.PTTout",
+		pb_com_path, global_device_nbr);
+
+	if ((pb_create_fifo_if_not_there(fifo_path[TO_DEVICE]) != 0)
+		|| (pb_create_fifo_if_not_there(fifo_path[TO_BRIDGE]) != 0)) {
+		bs_trace_error_line("Couldnt create FIFOs for EDTT IF\n");
+	}
+
+	/* we block here until the bridge opens its end */
+	fifo[TO_BRIDGE] = open(fifo_path[TO_BRIDGE], O_WRONLY);
+	if (fifo[TO_BRIDGE] == -1) {
+		bs_trace_error_line("Couldn't create FIFOs for EDTT IF\n");
+	}
+
+	flags = fcntl(fifo[TO_BRIDGE], F_GETFL);
+	flags |= O_NONBLOCK;
+	fcntl(fifo[TO_BRIDGE], F_SETFL, flags);
+
+	/* we will block here until the bridge opens its end */
+	fifo[TO_DEVICE] = open(fifo_path[TO_DEVICE], O_RDONLY);
+	if (fifo[TO_DEVICE] == -1) {
+		bs_trace_error_line("Couldn't create FIFOs for EDTT IF\n");
+	}
+
+	flags = fcntl(fifo[TO_DEVICE], F_GETFL);
+	flags |= O_NONBLOCK;
+	fcntl(fifo[TO_DEVICE], F_SETFL, flags);
+}
+
+static void edttd_clean_up(void)
+{
+	for (int dir = TO_DEVICE ; dir <= TO_BRIDGE ; dir++) {
+		if (fifo_path[dir]) {
+			if (fifo[dir] != -1) {
+				close(fifo[dir]);
+				remove(fifo_path[dir]);
+				fifo[dir] = -1;
+			}
+			free(fifo_path[dir]);
+			fifo_path[dir] = NULL;
+		}
+	}
+	if (pb_com_path != NULL) {
+		rmdir(pb_com_path);
+	}
+}
+
+static int fifo_low_level_read(uint8_t *bufptr, int size)
+{
+	int received_bytes = read(fifo[TO_DEVICE], bufptr, size);
+
+	if ((received_bytes == -1) && (errno == EAGAIN)) {
+		return 0;
+	} else if (received_bytes == EOF || received_bytes == 0) {
+		/*The FIFO was closed by the bridge*/
+		if (edtt_autoshutdown) {
+			bs_trace_raw_time(3, "EDTT: FIFO closed "
+					"(ptt_autoshutdown==true) =>"
+					" Terminate\n");
+			edttd_clean_up();
+			bs_trace_exit_line("\n");
+		} else {
+			bs_trace_raw_time(3, "EDTT: FIFO closed "
+					"(ptt_autoshutdown==false) => We close "
+					"the FIFOs and move on\n");
+			edttd_clean_up();
+			edtt_mode_enabled = false;
+			return -1;
+		}
+	} else if (received_bytes == -1) {
+		bs_trace_error_line("EDTT: Unexpected error\n");
+	}
+
+	return received_bytes;
+}

+ 40 - 0
babblesim/edtt/hci_transport/syscfg.yml

@@ -0,0 +1,40 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+
+syscfg.defs:
+    EDTT_HCI_LOG_FILE:
+        description: >
+            Path to the HCI log file. Skip file extension
+            because device id and .log will be appended.
+        value: "hci_logs"
+    EDTT_HCI_LOGS:
+        description: Turn on HCI commands logging.
+        value: 0
+    EDTT_POLLER_PRIO:
+        description: 'Priority of native EDTT poller task.'
+        type: task_priority
+        value: 2
+
+syscfg.vals:
+    BLE_TRANSPORT_ACL_COUNT: 32
+    BLE_TRANSPORT_EVT_COUNT: 64
+
+syscfg.restrictions:
+    - BLE_TRANSPORT_HS == "custom"
+    - BLE_TRANSPORT_LL == "native"

+ 18 - 14
porting/targets/dummy_bsp/bsp.yml → babblesim/hw/bsp/nrf52_bsim/bsp.yml

@@ -17,11 +17,15 @@
 # under the License.
 #
 
-bsp.name: "dummy"
-bsp.url:
-bsp.maker:
-bsp.arch: dummy
+bsp.name: "nRF52 DK"
+bsp.url: https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF52-DK
+bsp.maker: "Nordic Semiconductor"
+bsp.arch: bsim_arch
 bsp.compiler: "@apache-mynewt-core/compiler/sim"
+bsp.downloadscript: "hw/bsp/nrf52_bsim/nordic_pca10040_download.sh"
+bsp.debugscript: "hw/bsp/nrf52_bsim/nordic_pca10040_debug.sh"
+bsp.downloadscript.WINDOWS.OVERWRITE: "hw/bsp/nrf52_bsim/nordic_pca10040_download.cmd"
+bsp.debugscript.WINDOWS.OVERWRITE: "hw/bsp/nrf52_bsim/nordic_pca10040_debug.cmd"
 
 bsp.flash_map:
     areas:
@@ -29,28 +33,28 @@ bsp.flash_map:
         FLASH_AREA_BOOTLOADER:
             device: 0
             offset: 0x00000000
-            size: 32kB
+            size: 16kB
         FLASH_AREA_IMAGE_0:
             device: 0
-            offset: 0x0000c000
-            size: 472kB
+            offset: 0x00008000
+            size: 232kB
         FLASH_AREA_IMAGE_1:
             device: 0
-            offset: 0x00082000
-            size: 472kB
+            offset: 0x00042000
+            size: 232kB
         FLASH_AREA_IMAGE_SCRATCH:
             device: 0
-            offset: 0x000f8000
-            size: 16kB
+            offset: 0x0007c000
+            size: 4kB
 
         # User areas.
         FLASH_AREA_REBOOT_LOG:
             user_id: 0
             device: 0
-            offset: 0x00008000
+            offset: 0x00004000
             size: 16kB
         FLASH_AREA_NFFS:
             user_id: 1
             device: 0
-            offset: 0x000fc000
-            size: 16kB
+            offset: 0x0007d000
+            size: 12kB

+ 91 - 0
babblesim/hw/bsp/nrf52_bsim/include/bsp/bsp.h

@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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 H_BSP_H
+#define H_BSP_H
+
+#include <inttypes.h>
+
+#include "os/mynewt.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Define special stackos sections */
+#define sec_data_core   __attribute__((section(".data.core")))
+#define sec_bss_core    __attribute__((section(".bss.core")))
+#define sec_bss_nz_core __attribute__((section(".bss.core.nz")))
+
+/* More convenient section placement macros. */
+#define bssnz_t         sec_bss_nz_core
+
+extern uint8_t _ram_start;
+#define RAM_SIZE        0x10000
+
+/* LED pins */
+#define LED_1           (17)
+#define LED_2           (18)
+#define LED_3           (19)
+#define LED_4           (20)
+#define LED_BLINK_PIN   (LED_1)
+
+/* Buttons */
+#define BUTTON_1 (13)
+#define BUTTON_2 (14)
+#define BUTTON_3 (15)
+#define BUTTON_4 (16)
+
+/* Arduino pins */
+#define ARDUINO_PIN_D0      11
+#define ARDUINO_PIN_D1      12
+#define ARDUINO_PIN_D2      13
+#define ARDUINO_PIN_D3      14
+#define ARDUINO_PIN_D4      15
+#define ARDUINO_PIN_D5      16
+#define ARDUINO_PIN_D6      17
+#define ARDUINO_PIN_D7      18
+#define ARDUINO_PIN_D8      19
+#define ARDUINO_PIN_D9      20
+#define ARDUINO_PIN_D10     22
+#define ARDUINO_PIN_D11     23
+#define ARDUINO_PIN_D12     24
+#define ARDUINO_PIN_D13     25
+#define ARDUINO_PIN_A0      3
+#define ARDUINO_PIN_A1      4
+#define ARDUINO_PIN_A2      28
+#define ARDUINO_PIN_A3      29
+#define ARDUINO_PIN_A4      30
+#define ARDUINO_PIN_A5      31
+
+#define ARDUINO_PIN_RX      ARDUINO_PIN_D0
+#define ARDUINO_PIN_TX      ARDUINO_PIN_D1
+
+#define ARDUINO_PIN_SCL     27
+#define ARDUINO_PIN_SDA     26
+
+#define ARDUINO_PIN_SCK     ARDUINO_PIN_D13
+#define ARDUINO_PIN_MOSI    ARDUINO_PIN_D11
+#define ARDUINO_PIN_MISO    ARDUINO_PIN_D12
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* H_BSP_H */

+ 64 - 0
babblesim/hw/bsp/nrf52_bsim/include/os/os_arch.h

@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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 _OS_ARCH_ARM_H
+#define _OS_ARCH_ARM_H
+
+#include <stdint.h>
+#include "syscfg/syscfg.h"
+#include "mcu/cmsis_nvic.h"
+#include "mcu/cortex_m4.h"
+#include <irq_ctrl.h>
+#include "mcu/mcu_sim.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CPU status register */
+typedef uint32_t os_sr_t;
+
+/* Stack element */
+typedef uint32_t os_stack_t;
+
+struct stack_frame;
+void os_arch_frame_init(struct stack_frame *sf);
+
+/* Stack sizes for common OS tasks */
+#define OS_SANITY_STACK_SIZE (2000)
+#if MYNEWT_VAL(OS_SYSVIEW)
+#define OS_IDLE_STACK_SIZE (80)
+#else
+#define OS_IDLE_STACK_SIZE (4000)
+#endif
+
+static inline int
+os_arch_in_isr(void)
+{
+	return hw_irq_ctrl_get_irq_status();
+}
+
+/* Include common arch definitions and APIs */
+#include "os/arch/common.h"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _OS_ARCH_ARM_H */

+ 60 - 0
babblesim/hw/bsp/nrf52_bsim/include/os/sim.h

@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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 H_KERNEL_SIM_
+#define H_KERNEL_SIM_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdio.h>
+#include <setjmp.h>
+#include "os/mynewt.h"
+#include "mcu/mcu_sim.h"
+struct os_task;
+struct stack_frame;
+
+struct stack_frame {
+    int sf_mainsp;              /* stack on which main() is executing */
+    sigjmp_buf sf_jb;
+    struct os_task *sf_task;
+};
+
+void sim_task_start(struct stack_frame *sf, int rc);
+os_stack_t *sim_task_stack_init(struct os_task *t, os_stack_t *stack_top,
+                                int size);
+os_error_t sim_os_start(void);
+void sim_os_stop(void);
+os_error_t sim_os_init(void);
+void sim_ctx_sw(struct os_task *next_t);
+os_sr_t sim_save_sr(void);
+void sim_restore_sr(os_sr_t osr);
+int sim_in_critical(void);
+void sim_tick_idle(os_time_t ticks);
+int sig_block_irq_on();
+void sig_unblock_irq_off();
+
+uint8_t inner_main_clean_up(int exit_code);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif

+ 22 - 0
babblesim/hw/bsp/nrf52_bsim/nordic_pca10040_debug.cmd

@@ -0,0 +1,22 @@
+@rem
+@rem Licensed to the Apache Software Foundation (ASF) under one
+@rem or more contributor license agreements.  See the NOTICE file
+@rem distributed with this work for additional information
+@rem regarding copyright ownership.  The ASF licenses this file
+@rem to you under the Apache License, Version 2.0 (the
+@rem "License"); you may not use this file except in compliance
+@rem with the License.  You may obtain a copy of the License at
+@rem
+@rem  http://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing,
+@rem software distributed under the License is distributed on an
+@rem "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@rem KIND, either express or implied.  See the License for the
+@rem specific language governing permissions and limitations
+@rem under the License.
+@rem
+
+@rem Execute a shell with a script of the same name and .sh extension
+
+@bash "%~dp0%~n0.sh"

+ 45 - 0
babblesim/hw/bsp/nrf52_bsim/nordic_pca10040_debug.sh

@@ -0,0 +1,45 @@
+#!/bin/sh
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#   http://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.
+#
+
+# Called with following variables set:
+#  - CORE_PATH is absolute path to @apache-mynewt-core
+#  - BSP_PATH is absolute path to hw/bsp/bsp_name
+#  - BIN_BASENAME is the path to prefix to target binary,
+#    .elf appended to name is the ELF file
+#  - FEATURES holds the target features string
+#  - EXTRA_JTAG_CMD holds extra parameters to pass to jtag software
+#  - RESET set if target should be reset when attaching
+#  - NO_GDB set if we should not start gdb to debug
+#
+
+. $CORE_PATH/hw/scripts/jlink.sh
+
+FILE_NAME=$BIN_BASENAME.elf
+
+if [ $# -gt 2 ]; then
+    SPLIT_ELF_NAME=$3.elf
+    # TODO -- this magic number 0x42000 is the location of the second image
+    # slot. we should either get this from a flash map file or somehow learn
+    # this from the image itself
+    EXTRA_GDB_CMDS="add-symbol-file $SPLIT_ELF_NAME 0x8000 -readnow"
+fi
+
+JLINK_DEV="nRF52"
+
+jlink_debug

+ 22 - 0
babblesim/hw/bsp/nrf52_bsim/nordic_pca10040_download.cmd

@@ -0,0 +1,22 @@
+@rem
+@rem Licensed to the Apache Software Foundation (ASF) under one
+@rem or more contributor license agreements.  See the NOTICE file
+@rem distributed with this work for additional information
+@rem regarding copyright ownership.  The ASF licenses this file
+@rem to you under the Apache License, Version 2.0 (the
+@rem "License"); you may not use this file except in compliance
+@rem with the License.  You may obtain a copy of the License at
+@rem
+@rem  http://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing,
+@rem software distributed under the License is distributed on an
+@rem "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@rem KIND, either express or implied.  See the License for the
+@rem specific language governing permissions and limitations
+@rem under the License.
+@rem
+
+@rem Execute a shell with a script of the same name and .sh extension
+
+@bash "%~dp0%~n0.sh"

+ 40 - 0
babblesim/hw/bsp/nrf52_bsim/nordic_pca10040_download.sh

@@ -0,0 +1,40 @@
+#!/bin/sh
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#   http://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.
+
+# Called with following variables set:
+#  - CORE_PATH is absolute path to @apache-mynewt-core
+#  - BSP_PATH is absolute path to hw/bsp/bsp_name
+#  - BIN_BASENAME is the path to prefix to target binary,
+#    .elf appended to name is the ELF file
+#  - IMAGE_SLOT is the image slot to download to (for non-mfg-image, non-boot)
+#  - FEATURES holds the target features string
+#  - EXTRA_JTAG_CMD holds extra parameters to pass to jtag software
+#  - MFG_IMAGE is "1" if this is a manufacturing image
+#  - FLASH_OFFSET contains the flash offset to download to
+#  - BOOT_LOADER is set if downloading a bootloader
+
+. $CORE_PATH/hw/scripts/jlink.sh
+
+if [ "$MFG_IMAGE" ]; then
+    FLASH_OFFSET=0x0
+fi
+
+JLINK_DEV="nRF52"
+
+common_file_to_load
+jlink_load

+ 37 - 0
babblesim/hw/bsp/nrf52_bsim/pkg.yml

@@ -0,0 +1,37 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+
+pkg.name: babblesim/hw/bsp/nrf52_bsim
+pkg.type: bsp
+pkg.description: nRF52 on BabbleSim
+pkg.author: "Apache Mynewt <dev@mynewt.apache.org>"
+pkg.homepage: "http://mynewt.apache.org/"
+
+pkg.cflags:
+    - '-DNRF52832_XXAA'
+    - '-DBABBLESIM'
+
+pkg.cflags.HARDFLOAT:
+    - -mfloat-abi=hard -mfpu=fpv4-sp-d16
+
+pkg.deps:
+    - "babblesim/core"
+    - "babblesim/hw/mcu/nordic/nrf52_bsim"
+    - "@apache-mynewt-core/hw/drivers/uart/uart_hal"
+    - "@apache-mynewt-nimble/nimble/controller"

+ 169 - 0
babblesim/hw/bsp/nrf52_bsim/src/arch/bsim_arch/os_arch.c

@@ -0,0 +1,169 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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.
+ */
+
+#define _GNU_SOURCE
+#include <pthread.h>
+#include <syscfg/syscfg.h>
+#include <os/os_task.h>
+#include <hal/hal_os_tick.h>
+#include <irq_ctrl.h>
+
+static pthread_mutex_t bsim_ctx_sw_mutex = PTHREAD_MUTEX_INITIALIZER;
+static int bsim_pend_sv;
+
+struct task_info {
+    pthread_t tid;
+    pthread_cond_t cond;
+    void *arg;
+};
+
+static void *
+task_wrapper(void *arg)
+{
+    struct os_task *me = arg;
+    struct task_info *ti = me->t_arg;
+
+    pthread_mutex_lock(&bsim_ctx_sw_mutex);
+    if (g_current_task != me) {
+        pthread_cond_wait(&ti->cond, &bsim_ctx_sw_mutex);
+        assert(g_current_task == me);
+    }
+
+    me->t_func(ti->arg);
+
+    assert(0);
+}
+
+os_stack_t *
+os_arch_task_stack_init(struct os_task *t, os_stack_t *stack_top, int size)
+{
+    struct task_info *ti;
+    int err;
+
+    ti = calloc(1, sizeof(*ti));
+
+    pthread_cond_init(&ti->cond, NULL);
+    ti->arg = t->t_arg;
+    t->t_arg = ti;
+
+    err = pthread_create(&ti->tid, NULL, task_wrapper, t);
+    assert(err == 0);
+
+    pthread_setname_np(ti->tid, t->t_name);
+
+    return stack_top;
+}
+
+os_error_t
+os_arch_os_start(void)
+{
+    struct os_task *next_t;
+    struct task_info *ti;
+
+    os_tick_init(OS_TICKS_PER_SEC, 7);
+
+    next_t = os_sched_next_task();
+    assert(next_t);
+    os_sched_set_current_task(next_t);
+
+    g_os_started = 1;
+
+    ti = next_t->t_arg;
+    pthread_cond_signal(&ti->cond);
+
+    return 0;
+}
+
+os_error_t
+os_arch_os_init(void)
+{
+    STAILQ_INIT(&g_os_task_list);
+    TAILQ_INIT(&g_os_run_list);
+    TAILQ_INIT(&g_os_sleep_list);
+
+    os_init_idle_task();
+
+    return OS_OK;
+}
+
+void
+os_arch_ctx_sw(struct os_task *next_t)
+{
+    os_sched_ctx_sw_hook(next_t);
+    bsim_pend_sv = 1;
+}
+
+static void
+do_ctx_sw(void)
+{
+    struct os_task *next_t;
+    struct os_task *me;
+    struct task_info *ti, *next_ti;
+
+    next_t = os_sched_next_task();
+    assert(next_t);
+
+    bsim_pend_sv = 0;
+
+    assert(g_current_task);
+    me = g_current_task;
+    ti = me->t_arg;
+
+    if (me == next_t) {
+        return;
+    }
+
+    g_current_task = next_t;
+    next_ti = g_current_task->t_arg;
+
+    pthread_cond_signal(&next_ti->cond);
+    pthread_cond_wait(&ti->cond, &bsim_ctx_sw_mutex);
+    assert(g_current_task == me);
+}
+
+os_sr_t
+os_arch_save_sr(void)
+{
+    return hw_irq_ctrl_change_lock(1);
+}
+
+void
+os_arch_restore_sr(os_sr_t osr)
+{
+    hw_irq_ctrl_change_lock(osr);
+
+    if (!osr && bsim_pend_sv) {
+        do_ctx_sw();
+    }
+}
+
+int
+os_arch_in_critical(void)
+{
+    return hw_irq_ctrl_get_current_lock();
+}
+
+void
+__assert_func(const char *file, int line, const char *func, const char *e)
+{
+#if MYNEWT_VAL(OS_ASSERT_CB)
+    os_assert_cb();
+#endif
+    _Exit(1);
+}

+ 231 - 0
babblesim/hw/bsp/nrf52_bsim/src/arch/bsim_arch/startup_nrf52_bsim.c

@@ -0,0 +1,231 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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.
+ */
+
+#include "nrf.h"
+
+/**************************************************************************************************
+  Macros
+**************************************************************************************************/
+
+/*! Weak symbol reference. */
+#define WEAK        __attribute__ ((weak))
+
+/**************************************************************************************************
+  Functions
+**************************************************************************************************/
+
+extern void SystemInit(void);
+static void SystemDefaultHandler(void);
+
+/* Core vectors. */
+void WEAK Reset_Handler(void);
+void WEAK NMI_Handler(void);
+void WEAK HardFault_Handler(void);
+void WEAK MemoryManagement_Handler(void);
+void WEAK BusFault_Handler(void);
+void WEAK UsageFault_Handler(void);
+void WEAK SVC_Handler(void);
+void WEAK DebugMon_Handler(void);
+void WEAK PendSV_Handler(void);
+void WEAK SysTick_Handler(void);
+void WEAK POWER_CLOCK_IRQHandler(void);
+void WEAK RADIO_IRQHandler(void);
+void WEAK UARTE0_UART0_IRQHandler(void);
+void WEAK SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0_IRQHandler(void);
+void WEAK SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1_IRQHandler(void);
+void WEAK NFCT_IRQHandler(void);
+void WEAK GPIOTE_IRQHandler(void);
+void WEAK SAADC_IRQHandler(void);
+void WEAK TIMER0_IRQHandler(void);
+void WEAK TIMER1_IRQHandler(void);
+void WEAK TIMER2_IRQHandler(void);
+void WEAK RTC0_IRQHandler(void);
+void WEAK TEMP_IRQHandler(void);
+void WEAK RNG_IRQHandler(void);
+void WEAK ECB_IRQHandler(void);
+void WEAK CCM_AAR_IRQHandler(void);
+void WEAK WDT_IRQHandler(void);
+void WEAK RTC1_IRQHandler(void);
+void WEAK QDEC_IRQHandler(void);
+void WEAK COMP_LPCOMP_IRQHandler(void);
+void WEAK SWI0_EGU0_IRQHandler(void);
+void WEAK SWI1_EGU1_IRQHandler(void);
+void WEAK SWI2_EGU2_IRQHandler(void);
+void WEAK SWI3_EGU3_IRQHandler(void);
+void WEAK SWI4_EGU4_IRQHandler(void);
+void WEAK SWI5_EGU5_IRQHandler(void);
+void WEAK TIMER3_IRQHandler(void);
+void WEAK TIMER4_IRQHandler(void);
+void WEAK PWM0_IRQHandler(void);
+void WEAK PDM_IRQHandler(void);
+void WEAK MWU_IRQHandler(void);
+void WEAK PWM1_IRQHandler(void);
+void WEAK PWM2_IRQHandler(void);
+void WEAK SPIM2_SPIS2_SPI2_IRQHandler(void);
+void WEAK RTC2_IRQHandler(void);
+void WEAK I2S_IRQHandler(void);
+void WEAK FPU_IRQHandler(void);
+
+/* Assign default weak references. Override these values by defining a new function with the same name. */
+#pragma weak NMI_Handler                                    = SystemDefaultHandler
+#pragma weak HardFault_Handler                              = SystemDefaultHandler
+#pragma weak MemoryManagement_Handler                       = SystemDefaultHandler
+#pragma weak BusFault_Handler                               = SystemDefaultHandler
+#pragma weak UsageFault_Handler                             = SystemDefaultHandler
+#pragma weak SVC_Handler                                    = SystemDefaultHandler
+#pragma weak DebugMon_Handler                               = SystemDefaultHandler
+#pragma weak PendSV_Handler                                 = SystemDefaultHandler
+#pragma weak SysTick_Handler                                = SystemDefaultHandler
+#pragma weak POWER_CLOCK_IRQHandler                         = SystemDefaultHandler
+#pragma weak RADIO_IRQHandler                               = SystemDefaultHandler
+#pragma weak UARTE0_UART0_IRQHandler                        = SystemDefaultHandler
+#pragma weak SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0_IRQHandler   = SystemDefaultHandler
+#pragma weak SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1_IRQHandler   = SystemDefaultHandler
+#pragma weak NFCT_IRQHandler                                = SystemDefaultHandler
+#pragma weak GPIOTE_IRQHandler                              = SystemDefaultHandler
+#pragma weak SAADC_IRQHandler                               = SystemDefaultHandler
+#pragma weak TIMER0_IRQHandler                              = SystemDefaultHandler
+#pragma weak TIMER1_IRQHandler                              = SystemDefaultHandler
+#pragma weak TIMER2_IRQHandler                              = SystemDefaultHandler
+#pragma weak RTC0_IRQHandler                                = SystemDefaultHandler
+#pragma weak TEMP_IRQHandler                                = SystemDefaultHandler
+#pragma weak RNG_IRQHandler                                 = SystemDefaultHandler
+#pragma weak ECB_IRQHandler                                 = SystemDefaultHandler
+#pragma weak CCM_AAR_IRQHandler                             = SystemDefaultHandler
+#pragma weak WDT_IRQHandler                                 = SystemDefaultHandler
+#pragma weak RTC1_IRQHandler                                = SystemDefaultHandler
+#pragma weak QDEC_IRQHandler                                = SystemDefaultHandler
+#pragma weak COMP_LPCOMP_IRQHandler                         = SystemDefaultHandler
+#pragma weak SWI0_EGU0_IRQHandler                           = SystemDefaultHandler
+#pragma weak SWI1_EGU1_IRQHandler                           = SystemDefaultHandler
+#pragma weak SWI2_EGU2_IRQHandler                           = SystemDefaultHandler
+#pragma weak SWI3_EGU3_IRQHandler                           = SystemDefaultHandler
+#pragma weak SWI4_EGU4_IRQHandler                           = SystemDefaultHandler
+#pragma weak SWI5_EGU5_IRQHandler                           = SystemDefaultHandler
+#pragma weak TIMER3_IRQHandler                              = SystemDefaultHandler
+#pragma weak TIMER4_IRQHandler                              = SystemDefaultHandler
+#pragma weak PWM0_IRQHandler                                = SystemDefaultHandler
+#pragma weak PDM_IRQHandler                                 = SystemDefaultHandler
+#pragma weak MWU_IRQHandler                                 = SystemDefaultHandler
+#pragma weak PWM1_IRQHandler                                = SystemDefaultHandler
+#pragma weak PWM2_IRQHandler                                = SystemDefaultHandler
+#pragma weak SPIM2_SPIS2_SPI2_IRQHandler                    = SystemDefaultHandler
+#pragma weak RTC2_IRQHandler                                = SystemDefaultHandler
+#pragma weak I2S_IRQHandler                                 = SystemDefaultHandler
+#pragma weak FPU_IRQHandler                                 = SystemDefaultHandler
+
+/**************************************************************************************************
+  Global variables
+**************************************************************************************************/
+
+/*! Core vector table */
+void (* systemVectors[256])(void) =
+{
+  0,                                            /*  0: The initial stack pointer */
+  Reset_Handler,                                /*  1: The reset handler */
+  NMI_Handler,                                  /*  2: The NMI handler */
+  HardFault_Handler,                            /*  3: The hard fault handler */
+  MemoryManagement_Handler,                     /*  4: The MPU fault handler */
+  BusFault_Handler,                             /*  5: The bus fault handler */
+  UsageFault_Handler,                           /*  6: The usage fault handler */
+  0,                                            /*  7: Reserved */
+  0,                                            /*  8: Reserved */
+  0,                                            /*  9: Reserved */
+  0,                                            /* 10: Reserved */
+  SVC_Handler,                                  /* 11: SVCall handler */
+  DebugMon_Handler,                             /* 12: Debug monitor handler */
+  0,                                            /* 13: Reserved */
+  PendSV_Handler,                               /* 14: The PendSV handler */
+  SysTick_Handler,                              /* 15: The SysTick handler */
+
+  /* External interrupts */
+  POWER_CLOCK_IRQHandler,                       /* 16: POWER_CLOCK */
+  RADIO_IRQHandler,                             /* 17: RADIO */
+  UARTE0_UART0_IRQHandler,                      /* 18: UART0 */
+  SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0_IRQHandler, /* 19: SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0 */
+  SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1_IRQHandler, /* 20: SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1 */
+  NFCT_IRQHandler,                              /* 21: NFCT */
+  GPIOTE_IRQHandler,                            /* 22: GPIOTE */
+  SAADC_IRQHandler,                             /* 23: SAADC */
+  TIMER0_IRQHandler,                            /* 24: TIMER0 */
+  TIMER1_IRQHandler,                            /* 25: TIMER1 */
+  TIMER2_IRQHandler,                            /* 26: TIMER2 */
+  RTC0_IRQHandler,                              /* 27: RTC0 */
+  TEMP_IRQHandler,                              /* 28: TEMP */
+  RNG_IRQHandler,                               /* 29: RNG */
+  ECB_IRQHandler,                               /* 30: ECB */
+  CCM_AAR_IRQHandler,                           /* 31: CCM_AAR */
+  WDT_IRQHandler,                               /* 32: WDT */
+  RTC1_IRQHandler,                              /* 33: RTC1 */
+  QDEC_IRQHandler,                              /* 34: QDEC */
+  COMP_LPCOMP_IRQHandler,                       /* 35: COMP_LPCOMP */
+  SWI0_EGU0_IRQHandler,                         /* 36: SWI0_EGU0 */
+  SWI1_EGU1_IRQHandler,                         /* 37: SWI1_EGU1 */
+  SWI2_EGU2_IRQHandler,                         /* 38: SWI2_EGU2 */
+  SWI3_EGU3_IRQHandler,                         /* 39: SWI3_EGU3 */
+  SWI4_EGU4_IRQHandler,                         /* 40: SWI4_EGU4 */
+  SWI5_EGU5_IRQHandler,                         /* 41: SWI5_EGU5 */
+  TIMER3_IRQHandler,                            /* 42: TIMER3 */
+  TIMER4_IRQHandler,                            /* 43: TIMER4 */
+  PWM0_IRQHandler,                              /* 44: PWM0 */
+  PDM_IRQHandler,                               /* 45: PDM */
+  0,                                            /* 46: Reserved */
+  0,                                            /* 47: Reserved */
+  MWU_IRQHandler,                               /* 48: MWU */
+  PWM1_IRQHandler,                              /* 49: PWM1 */
+  PWM2_IRQHandler,                              /* 50: PWM2 */
+  SPIM2_SPIS2_SPI2_IRQHandler,                  /* 51: SPIM2_SPIS2_SPI2 */
+  RTC2_IRQHandler,                              /* 52: RTC2 */
+  I2S_IRQHandler,                               /* 53: I2S */
+  FPU_IRQHandler,                               /* 54: FPU */
+  0,                                            /* 55: Reserved */
+  0,                                            /* 56: Reserved */
+  0,                                            /* 57: Reserved */
+  0,                                            /* 58: Reserved */
+  0,                                            /* 59: Reserved */
+  0,                                            /* 60: Reserved */
+  0,                                            /* 61: Reserved */
+  0,                                            /* 62: Reserved */
+  0                                             /* 63: Reserved */
+                                                /* 64..127: Reserved */
+};
+
+/*************************************************************************************************/
+/*!
+ *  \brief      Reset handler.
+ */
+/*************************************************************************************************/
+void Reset_Handler(void)
+{
+  /* Core initialization. */
+  SystemInit();
+}
+
+/*************************************************************************************************/
+/*!
+ *  \brief      Default vector handler.
+ *
+ *  \param      None.
+ */
+/*************************************************************************************************/
+static void SystemDefaultHandler(void)
+{
+  volatile unsigned int forever = 1;
+  while (forever);
+}

+ 160 - 0
babblesim/hw/bsp/nrf52_bsim/src/hal_bsp.c

@@ -0,0 +1,160 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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.
+ */
+
+#include <stdint.h>
+#include <stddef.h>
+#include <assert.h>
+#include "os/mynewt.h"
+#include "nrfx.h"
+#include "flash_map/flash_map.h"
+#include "hal/hal_bsp.h"
+#include "hal/hal_flash.h"
+#include "hal/hal_system.h"
+#include "mcu/nrf52_hal.h"
+#include "mcu/nrf52_periph.h"
+#include "mcu/native_bsp.h"
+#include "bsp/bsp.h"
+#include "defs/sections.h"
+#include "uart_hal/uart_hal.h"
+#include "uart/uart.h"
+
+/*
+ * What memory to include in coredump.
+ */
+static const struct hal_bsp_mem_dump dump_cfg[] = {
+    [0] = {
+        .hbmd_start = &_ram_start,
+        .hbmd_size = RAM_SIZE
+    }
+};
+
+const struct hal_flash *
+hal_bsp_flash_dev(uint8_t id)
+{
+    switch (id) {
+    case 0:
+        return &native_flash_dev;
+    default:
+        return NULL;
+    }
+}
+
+const struct hal_bsp_mem_dump *
+hal_bsp_core_dump(int *area_cnt)
+{
+    *area_cnt = sizeof(dump_cfg) / sizeof(dump_cfg[0]);
+    return dump_cfg;
+}
+
+int
+hal_bsp_power_state(int state)
+{
+    return (0);
+}
+
+/**
+ * Returns the configured priority for the given interrupt. If no priority
+ * configured, return the priority passed in
+ *
+ * @param irq_num
+ * @param pri
+ *
+ * @return uint32_t
+ */
+uint32_t
+hal_bsp_get_nvic_priority(int irq_num, uint32_t pri)
+{
+    uint32_t cfg_pri;
+
+    switch (irq_num) {
+    /* Radio gets highest priority */
+    case RADIO_IRQn:
+        cfg_pri = 0;
+        break;
+    default:
+        cfg_pri = pri;
+    }
+    return cfg_pri;
+}
+
+static void
+nrf52_periph_create_timers(void)
+{
+    int rc;
+
+    (void)rc;
+
+#if MYNEWT_VAL(TIMER_0)
+    rc = hal_timer_init(0, NULL);
+    assert(rc == 0);
+#endif
+#if MYNEWT_VAL(TIMER_1)
+    rc = hal_timer_init(1, NULL);
+    assert(rc == 0);
+#endif
+#if MYNEWT_VAL(TIMER_2)
+    rc = hal_timer_init(2, NULL);
+    assert(rc == 0);
+#endif
+#if MYNEWT_VAL(TIMER_3)
+    rc = hal_timer_init(3, NULL);
+    assert(rc == 0);
+#endif
+#if MYNEWT_VAL(TIMER_4)
+    rc = hal_timer_init(4, NULL);
+    assert(rc == 0);
+#endif
+#if MYNEWT_VAL(TIMER_5)
+    rc = hal_timer_init(5, NULL);
+    assert(rc == 0);
+#endif
+
+#if MYNEWT_VAL(OS_CPUTIME_TIMER_NUM) >= 0
+    rc = os_cputime_init(MYNEWT_VAL(OS_CPUTIME_FREQ));
+    assert(rc == 0);
+#endif
+}
+
+static struct uart_dev os_bsp_uart0;
+static struct uart_dev os_bsp_uart1;
+
+void
+hal_bsp_init(void)
+{
+    /* Make sure system clocks have started */
+    hal_system_clock_start();
+
+    /* Create all available nRF52840 peripherals */
+//    nrf52_periph_create();
+    nrf52_periph_create_timers();
+
+    int rc;
+
+    rc = os_dev_create((struct os_dev *) &os_bsp_uart0, "uart0",
+                       OS_DEV_INIT_PRIMARY, 0, uart_hal_init, (void *) NULL);
+    assert(rc == 0);
+    rc = os_dev_create((struct os_dev *) &os_bsp_uart1, "uart1",
+                       OS_DEV_INIT_PRIMARY, 0, uart_hal_init, (void *) NULL);
+    assert(rc == 0);
+}
+
+void
+hal_bsp_deinit(void)
+{
+}

+ 74 - 0
babblesim/hw/bsp/nrf52_bsim/syscfg.yml

@@ -0,0 +1,74 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+
+syscfg.defs:
+    BSP_NRF52:
+        description: 'Set to indicate that BSP has NRF52'
+        value: 1
+    SOFT_PWM:
+        description: 'Enable soft PWM'
+        value: 0
+    ENC_FLASH_DEV:
+        description: 'Encrypting flash driver over interal flash for testing'
+        value: 0
+    UARTBB_0:
+        description: 'Enable bit-banger UART 0'
+        value: 0
+    RAM_RESIDENT:
+        description: 'Compile app to be loaded to RAM'
+        value: 0
+
+syscfg.vals:
+    HAL_SBRK: 0
+    OS_TICKS_PER_SEC: 1024
+    OS_MAIN_STACK_SIZE: 8000
+    MCU_TIMER_POLLER_PRIO: 0
+    BLE_LL_PRIO: 1
+    MCU_UART_POLLER_PRIO: 9
+
+    # Enable nRF52832 MCU
+    MCU_TARGET: nRF52832
+    # Set default pins for peripherals
+    UART_0_PIN_TX: 6
+    UART_0_PIN_RX: 8
+    UART_0_PIN_RTS: 5
+    UART_0_PIN_CTS: 7
+    SPI_0_MASTER_PIN_SCK: 23
+    SPI_0_MASTER_PIN_MOSI: 24
+    SPI_0_MASTER_PIN_MISO: 25
+    SPI_0_SLAVE_PIN_SCK: 23
+    SPI_0_SLAVE_PIN_MOSI: 24
+    SPI_0_SLAVE_PIN_MISO: 25
+    SPI_0_SLAVE_PIN_SS: 22
+    I2C_0_PIN_SCL: 27
+    I2C_0_PIN_SDA: 26
+
+    CONFIG_FCB_FLASH_AREA: FLASH_AREA_NFFS
+    REBOOT_LOG_FLASH_AREA: FLASH_AREA_REBOOT_LOG
+    NFFS_FLASH_AREA: FLASH_AREA_NFFS
+    COREDUMP_FLASH_AREA: FLASH_AREA_IMAGE_1
+    MCU_DCDC_ENABLED: 1
+    MCU_LFCLK_SOURCE: LFXO
+    BOOT_SERIAL_DETECT_PIN: 13  # Button 1
+
+syscfg.vals.BLE_CONTROLLER:
+    TIMER_0: 0
+    TIMER_5: 1
+    OS_CPUTIME_FREQ: 32768
+    OS_CPUTIME_TIMER_NUM: 5
+    BLE_LL_RFMGMT_ENABLE_TIME: 1500

+ 28 - 0
babblesim/hw/mcu/nordic/nrf52_bsim/include/mcu/cmsis_nvic.h

@@ -0,0 +1,28 @@
+/* mbed Microcontroller Library - cmsis_nvic
+ * Copyright (c) 2009-2011 ARM Limited. All rights reserved.
+ *
+ * CMSIS-style functionality to support dynamic vectors
+ */
+
+#ifndef MBED_CMSIS_NVIC_H
+#define MBED_CMSIS_NVIC_H
+
+#include <stdint.h>
+#include "nrf.h"
+
+#define NVIC_NUM_VECTORS      (16 + 38)   // CORE + MCU Peripherals
+#define NVIC_USER_IRQ_OFFSET  16
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void NVIC_Relocate(void);
+void NVIC_SetVector(IRQn_Type IRQn, uint32_t vector);
+uint32_t NVIC_GetVector(IRQn_Type IRQn);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif

+ 11 - 6
nimble/transport/dialog_cmac/src/ble_hci_cmac_priv.h → babblesim/hw/mcu/nordic/nrf52_bsim/include/mcu/cortex_m4.h

@@ -17,13 +17,18 @@
  * under the License.
  */
 
-#ifndef _BLE_HCI_CMAC_PRIV_H_
-#define _BLE_HCI_CMAC_PRIV_H_
+#ifndef __MCU_CORTEX_M4_H__
+#define __MCU_CORTEX_M4_H__
 
-#include "os/os_mbuf.h"
+#include "nrf.h"
+#include <syscfg/syscfg.h>
 
-struct os_mbuf *ble_hci_cmac_alloc_acl_mbuf(void);
+#ifdef __cplusplus
+extern "C" {
+#endif
 
-void ble_hci_trans_notify_free(void);
+#ifdef __cplusplus
+}
+#endif
 
-#endif /* _BLE_HCI_CMAC_PRIV_H_ */
+#endif /* __MCU_CORTEX_M4_H__ */

+ 69 - 0
babblesim/hw/mcu/nordic/nrf52_bsim/include/mcu/mcu.h

@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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 __MCU_MCU_H_
+#define __MCU_MCU_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Defines for naming GPIOs. NOTE: the nordic chip docs use numeric labels for
+ * ports. Port A corresponds to Port 0, B to 1, etc. The nrf52832 has only one
+ * port and thus uses pins 0 - 31. The nrf52840 has two ports but Port 1 only
+ * has 16 pins.
+ */
+#define MCU_GPIO_PORTA(pin)	((0 * 16) + (pin))
+#define MCU_GPIO_PORTB(pin)	((1 * 16) + (pin))
+
+#if NRF52
+
+#define MCU_SYSVIEW_INTERRUPTS \
+    "I#1=Reset,I#2=MNI,I#3=HardFault,I#4=MemoryMgmt,I#5=BusFault,I#6=UsageFault," \
+    "I#11=SVCall,I#12=DebugMonitor,I#14=PendSV,I#15=SysTick," \
+    "I#16=POWER_CLOCK,I#17=RADIO,I#18=UARTE0_UART0,I#19=SPIx0_TWIx0," \
+    "I#20=SPIx1_TWIx1,I#21=NFCT,I#22=GPIOTE,I#23=SAADC," \
+    "I#24=TIMER0,I#25=TIMER1,I#26=TIMER2,I#27=RTC0,I#28=TEMP,I#29=RNG,I#30=ECB," \
+    "I#31=CCM_AAR,I#32=WDT,I#33=RTC1,I#34=QDEC,I#35=COMP_LPCOMP,I#36=SWI0_EGU0," \
+    "I#37=SWI1_EGU1,I#38=SWI2_EGU2,I#39=SWI3_EGU3,I#40=SWI4_EGU4,I#41=SWI5_EGU5," \
+    "I#42=TIMER3,I#43=TIMER4,I#44=PWM0,I#45=PDM,I#48=MWU,I#49=PWM1,I#50=PWM2," \
+    "I#51=SPIx2,I#52=RTC2,I#53=I2S,I#54=FPU"
+
+#elif NRF52840_XXAA
+
+#define MCU_SYSVIEW_INTERRUPTS \
+    "I#1=Reset,I#2=MNI,I#3=HardFault,I#4=MemoryMgmt,I#5=BusFault,I#6=UsageFault," \
+    "I#11=SVCall,I#12=DebugMonitor,I#14=PendSV,I#15=SysTick," \
+    "I#16=POWER_CLOCK,I#17=RADIO,I#18=UARTE0_UART0,I#19=SPIx0_TWIx0," \
+    "I#20=SPIx1_TWIx1,I#21=NFCT,I#22=GPIOTE,I#23=SAADC," \
+    "I#24=TIMER0,I#25=TIMER1,I#26=TIMER2,I#27=RTC0,I#28=TEMP,I#29=RNG,I#30=ECB," \
+    "I#31=CCM_AAR,I#32=WDT,I#33=RTC1,I#34=QDEC,I#35=COMP_LPCOMP,I#36=SWI0_EGU0," \
+    "I#37=SWI1_EGU1,I#38=SWI2_EGU2,I#39=SWI3_EGU3,I#40=SWI4_EGU4,I#41=SWI5_EGU5," \
+    "I#42=TIMER3,I#43=TIMER4,I#44=PWM0,I#45=PDM,I#48=MWU,I#49=PWM1,I#50=PWM2," \
+    "I#51=SPIx2,I#52=RTC2,I#53=I2S,I#54=FPU,I#55=USBD," \
+    "I#56=UARTE1,I#57=QSPI,I#58=CRYPTOCELL,I#61=PWM3,I#63=SPIM3"
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MCU_MCU_H_ */

+ 9 - 8
nimble/transport/da1469x/cmac_driver/include/cmac_driver/cmac_host.h → babblesim/hw/mcu/nordic/nrf52_bsim/include/mcu/mcu_sim.h

@@ -16,22 +16,23 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-#ifndef __CMAC_HOST_H_
-#define __CMAC_HOST_H_
+#ifndef __MCU_SIM_H__
+#define __MCU_SIM_H__
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-typedef int (* cmac_mbox_read_cb)(const uint8_t *, uint16_t len);
+extern char *native_flash_file;
+extern char *native_uart_log_file;
+extern const char *native_uart_dev_strs[];
+
+void mcu_sim_parse_args(int argc, char **argv);
 
-void cmac_host_init(void);
-void cmac_mbox_write(const uint8_t *buf, size_t len);
-void cmac_mbox_set_read_cb(cmac_mbox_read_cb cb);
+void static inline hal_debug_break(void) {}
 
 #ifdef __cplusplus
 }
 #endif
 
-#endif /* __CMAC_HOST_H_ */
+#endif /* __MCU_SIM_H__ */

+ 34 - 0
babblesim/hw/mcu/nordic/nrf52_bsim/include/mcu/native_bsp.h

@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ * 
+ *  http://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 H_NATIVE_BSP_
+#define H_NATIVE_BSP_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern const struct hal_flash native_flash_dev;
+
+int uart_set_dev(int port, const char *dev_str);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* H_NATIVE_BSP_ */

+ 50 - 0
babblesim/hw/mcu/nordic/nrf52_bsim/include/mcu/nrf52_clock.h

@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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 H_NRF52_CLOCK_
+#define H_NRF52_CLOCK_
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/**
+ * Request HFXO clock be turned on. Note that each request must have a
+ * corresponding release.
+ *
+ * @return int 0: hfxo was already on. 1: hfxo was turned on.
+ */
+int nrf52_clock_hfxo_request(void);
+
+/**
+ * Release the HFXO; caller no longer needs the HFXO to be turned on. Each call
+ * to release should have been preceeded by a corresponding call to request the
+ * HFXO
+ *
+ *
+ * @return int 0: HFXO not stopped by this call (others using it) 1: HFXO
+ *         stopped.
+ */
+int nrf52_clock_hfxo_release(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* H_NRF52_CLOCK_ */

+ 101 - 0
babblesim/hw/mcu/nordic/nrf52_bsim/include/mcu/nrf52_hal.h

@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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 H_NRF52_HAL_
+#define H_NRF52_HAL_
+
+#include "cmsis.h"
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* Helper functions to enable/disable interrupts. */
+#define __HAL_DISABLE_INTERRUPTS(x)                     \
+    do {                                                \
+        x = __get_PRIMASK();                            \
+        __disable_irq();                                \
+    } while(0);
+
+#define __HAL_ENABLE_INTERRUPTS(x)                      \
+    do {                                                \
+        if (!x) {                                       \
+            __enable_irq();                             \
+        }                                               \
+    } while(0);
+
+struct nrf52_uart_cfg {
+    int8_t suc_pin_tx;                          /* pins for IO */
+    int8_t suc_pin_rx;
+    int8_t suc_pin_rts;
+    int8_t suc_pin_cts;
+};
+const struct nrf52_uart_cfg *bsp_uart_config(void);
+
+struct nrf52_hal_i2c_cfg {
+    int scl_pin;
+    int sda_pin;
+    uint32_t i2c_frequency;
+};
+struct hal_flash;
+extern const struct hal_flash nrf52k_flash_dev;
+extern const struct hal_flash nrf52k_qspi_dev;
+
+/* SPI configuration (used for both master and slave) */
+struct nrf52_hal_spi_cfg {
+    uint8_t sck_pin;
+    uint8_t mosi_pin;
+    uint8_t miso_pin;
+    uint8_t ss_pin;
+};
+
+/*
+ * GPIO pin mapping
+ *
+ * The logical GPIO pin numbers (0 to N) are mapped to ports in the following
+ * manner:
+ *  pins 0 - 31: Port 0
+ *  pins 32 - 48: Port 1.
+ *
+ *  The nrf52832 has only one port with 32 pins. The nrf52840 has 48 pins and
+ *  uses two ports.
+ *
+ *  NOTE: in order to save code space, there is no checking done to see if the
+ *  user specifies a pin that is not used by the processor. If an invalid pin
+ *  number is used unexpected and/or erroneous behavior will result.
+ */
+#if defined(NRF52832_XXAA) || defined(NRF52810_XXAA) || defined(NRF52811_XXAA)
+#define HAL_GPIO_INDEX(pin)     (pin)
+#define HAL_GPIO_PORT(pin)      (NRF_P0)
+#define HAL_GPIO_MASK(pin)      (1 << pin)
+#define HAL_GPIOTE_PIN_MASK     GPIOTE_CONFIG_PSEL_Msk
+#endif
+
+#ifdef NRF52840_XXAA
+#define HAL_GPIO_INDEX(pin)     ((pin) & 0x1F)
+#define HAL_GPIO_PORT(pin)      ((pin) > 31 ? NRF_P1 : NRF_P0)
+#define HAL_GPIO_MASK(pin)      (1 << HAL_GPIO_INDEX(pin))
+#define HAL_GPIOTE_PIN_MASK     (0x3FUL << GPIOTE_CONFIG_PSEL_Pos)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif  /* H_NRF52_HAL_ */

+ 6 - 4
porting/targets/dummy_bsp/include/bsp/bsp.h → babblesim/hw/mcu/nordic/nrf52_bsim/include/mcu/nrf52_periph.h

@@ -17,15 +17,17 @@
  * under the License.
  */
 
-#ifndef H_BSP_H
-#define H_BSP_H
+#ifndef H_NRF52_PERIPH_
+#define H_NRF52_PERIPH_
 
 #ifdef __cplusplus
-extern "C" {
+ extern "C" {
 #endif
 
+void nrf52_periph_create(void);
+
 #ifdef __cplusplus
 }
 #endif
 
-#endif  /* H_BSP_H */
+#endif  /* H_NRF52_PERIPH_ */

+ 8 - 12
nimble/transport/ram/pkg.yml → babblesim/hw/mcu/nordic/nrf52_bsim/pkg.yml

@@ -17,20 +17,16 @@
 # under the License.
 #
 
-pkg.name: nimble/transport/ram
-pkg.description: XXX
+pkg.name: babblesim/hw/mcu/nordic/nrf52_bsim
+pkg.description: nRF52 on BabbleSim
 pkg.author: "Apache Mynewt <dev@mynewt.apache.org>"
 pkg.homepage: "http://mynewt.apache.org/"
-pkg.keywords:
-    - ble
-    - bluetooth
 
-pkg.deps:
-    - "@apache-mynewt-core/kernel/os"
-    - nimble
+pkg.lflags:
+    - -lpthread
 
-pkg.apis:
-    - ble_transport
+pkg.deps:
+    - "babblesim/core"
 
-pkg.init:
-    ble_hci_ram_init: 'MYNEWT_VAL(BLE_TRANS_RAM_SYSINIT_STAGE)'
+pkg.deps.BLE_CONTROLLER:
+    - "@apache-mynewt-nimble/nimble/drivers/nrf52"

+ 289 - 0
babblesim/hw/mcu/nordic/nrf52_bsim/src/hal_flash.c

@@ -0,0 +1,289 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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.
+ */
+
+#include <sys/mman.h>
+#include <fcntl.h>
+#include <assert.h>
+#include <string.h>
+#include <inttypes.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include "os/mynewt.h"
+
+#include "hal/hal_flash_int.h"
+#include "mcu/mcu_sim.h"
+
+char *native_flash_file;
+static int file = -1;
+static void *file_loc;
+
+static int native_flash_init(const struct hal_flash *dev);
+static int native_flash_read(const struct hal_flash *dev, uint32_t address,
+        void *dst, uint32_t length);
+static int native_flash_write(const struct hal_flash *dev, uint32_t address,
+        const void *src, uint32_t length);
+static int native_flash_erase_sector(const struct hal_flash *dev,
+        uint32_t sector_address);
+static int native_flash_sector_info(const struct hal_flash *dev, int idx,
+        uint32_t *address, uint32_t *size);
+
+static const struct hal_flash_funcs native_flash_funcs = {
+    .hff_read = native_flash_read,
+    .hff_write = native_flash_write,
+    .hff_erase_sector = native_flash_erase_sector,
+    .hff_sector_info = native_flash_sector_info,
+    .hff_init = native_flash_init
+};
+
+#if MYNEWT_VAL(MCU_FLASH_STYLE_ST)
+static const uint32_t native_flash_sectors[] = {
+    0x00000000, /* 16 * 1024 */
+    0x00004000, /* 16 * 1024 */
+    0x00008000, /* 16 * 1024 */
+    0x0000c000, /* 16 * 1024 */
+    0x00010000, /* 64 * 1024 */
+    0x00020000, /* 128 * 1024 */
+    0x00040000, /* 128 * 1024 */
+    0x00060000, /* 128 * 1024 */
+    0x00080000, /* 128 * 1024 */
+    0x000a0000, /* 128 * 1024 */
+    0x000c0000, /* 128 * 1024 */
+    0x000e0000, /* 128 * 1024 */
+};
+#elif MYNEWT_VAL(MCU_FLASH_STYLE_NORDIC)
+static uint32_t native_flash_sectors[1024 * 1024 / 2048];
+#else
+#error "Need to specify either MCU_FLASH_STYLE_NORDIC or MCU_FLASH_STYLE_ST"
+#endif
+
+#define FLASH_NUM_AREAS   (int)(sizeof native_flash_sectors /           \
+                                sizeof native_flash_sectors[0])
+
+const struct hal_flash native_flash_dev = {
+    .hf_itf = &native_flash_funcs,
+    .hf_base_addr = 0,
+    .hf_size = 1024 * 1024,
+    .hf_sector_cnt = FLASH_NUM_AREAS,
+    .hf_align = MYNEWT_VAL(MCU_FLASH_MIN_WRITE_SIZE),
+    .hf_erased_val = 0xff,
+};
+
+static void
+flash_native_erase(uint32_t addr, uint32_t len)
+{
+    memset(file_loc + addr, 0xff, len);
+}
+
+static void
+flash_native_file_open(char *name)
+{
+    int created = 0;
+    char tmpl[] = "/tmp/native_flash.XXXXXX";
+
+    extern int ftruncate(int fd, off_t length);
+
+    if (file != -1) {
+        close(file);
+        file = -1;
+    }
+
+    if (name) {
+        file = open(name, O_RDWR);
+        if (file < 0) {
+            file = open(name, O_RDWR | O_CREAT, 0660);
+            assert(file > 0);
+            created = 1;
+        }
+    } else {
+        file = mkstemp(tmpl);
+        assert(file > 0);
+        created = 1;
+    }
+
+    if (created) {
+        if (ftruncate(file, native_flash_dev.hf_size) < 0) {
+            assert(0);
+        }
+    }
+
+    if (file_loc != NULL) {
+        munmap(file_loc, native_flash_dev.hf_size);
+    }
+
+    file_loc = mmap(0, native_flash_dev.hf_size,
+          PROT_READ | PROT_WRITE, MAP_SHARED, file, 0);
+    assert(file_loc != MAP_FAILED);
+    if (created) {
+        flash_native_erase(0, native_flash_dev.hf_size);
+    }
+
+    /* If using a temporary file, unlink it immediately. */
+    if (name == NULL) {
+        remove(tmpl);
+    }
+}
+
+static void
+flash_native_ensure_file_open(void)
+{
+    if (file == 0) {
+        flash_native_file_open(NULL);
+    }
+}
+
+static int
+flash_native_write_internal(uint32_t address, const void *src, uint32_t length,
+                            int allow_overwrite)
+{
+    static uint8_t buf[256];
+    uint32_t cur;
+    uint32_t end;
+    int chunk_sz;
+    int rc;
+    int i;
+
+    if (length == 0) {
+        return 0;
+    }
+
+    end = address + length;
+
+    flash_native_ensure_file_open();
+
+    cur = address;
+    while (cur < end) {
+        if (end - cur < sizeof buf) {
+            chunk_sz = end - cur;
+        } else {
+            chunk_sz = sizeof buf;
+        }
+
+        /* Ensure data is not being overwritten. */
+        if (!allow_overwrite) {
+            rc = native_flash_read(NULL, cur, buf, chunk_sz);
+            assert(rc == 0);
+            for (i = 0; i < chunk_sz; i++) {
+                assert(buf[i] == 0xff);
+            }
+        }
+
+        cur += chunk_sz;
+    }
+
+    memcpy((char *)file_loc + address, src, length);
+
+    return 0;
+}
+
+static int
+native_flash_write(const struct hal_flash *dev, uint32_t address,
+        const void *src, uint32_t length)
+{
+    assert(address % native_flash_dev.hf_align == 0);
+    return flash_native_write_internal(address, src, length, 0);
+}
+
+int
+flash_native_memset(uint32_t offset, uint8_t c, uint32_t len)
+{
+    memset(file_loc + offset, c, len);
+    return 0;
+}
+
+static int
+native_flash_read(const struct hal_flash *dev, uint32_t address, void *dst,
+        uint32_t length)
+{
+    flash_native_ensure_file_open();
+    memcpy(dst, (char *)file_loc + address, length);
+
+    return 0;
+}
+
+static int
+find_area(uint32_t address)
+{
+    int i;
+
+    for (i = 0; i < FLASH_NUM_AREAS; i++) {
+        if (native_flash_sectors[i] == address) {
+            return i;
+        }
+    }
+
+    return -1;
+}
+
+static int
+flash_sector_len(int sector)
+{
+    uint32_t end;
+
+    if (sector == FLASH_NUM_AREAS - 1) {
+        end = native_flash_dev.hf_size + native_flash_sectors[0];
+    } else {
+        end = native_flash_sectors[sector + 1];
+    }
+    return end - native_flash_sectors[sector];
+}
+
+static int
+native_flash_erase_sector(const struct hal_flash *dev, uint32_t sector_address)
+{
+    int area_id;
+    uint32_t len;
+
+    flash_native_ensure_file_open();
+
+    area_id = find_area(sector_address);
+    if (area_id == -1) {
+        return -1;
+    }
+    len = flash_sector_len(area_id);
+    flash_native_erase(sector_address, len);
+    return 0;
+}
+
+static int
+native_flash_sector_info(const struct hal_flash *dev, int idx,
+        uint32_t *address, uint32_t *size)
+{
+    assert(idx < FLASH_NUM_AREAS);
+
+    *address = native_flash_sectors[idx];
+    *size = flash_sector_len(idx);
+    return 0;
+}
+
+static int
+native_flash_init(const struct hal_flash *dev)
+{
+    //if (native_flash_file) {
+        flash_native_file_open(native_flash_file);
+    //}
+#if MYNEWT_VAL(MCU_FLASH_STYLE_NORDIC)
+    int i;
+
+    for (i = 0; i < FLASH_NUM_AREAS; i++) {
+        native_flash_sectors[i] = i * 2048;
+    }
+#endif
+    return 0;
+}

+ 73 - 0
babblesim/hw/mcu/nordic/nrf52_bsim/src/hal_hw_id.c

@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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.
+ */
+
+#include <inttypes.h>
+#include <string.h>
+
+#include "hal/hal_bsp.h"
+
+#include "hal_native_priv.h"
+
+#ifndef min
+#define min(a, b) ((a)<(b)?(a):(b))
+#endif
+
+static uint8_t hal_hw_id[HAL_BSP_MAX_ID_LEN];
+static uint8_t hal_hw_id_len;
+
+int
+hal_bsp_hw_id_len(void)
+{
+    if (hal_hw_id_len != 0) {
+        return hal_hw_id_len;
+    } else {
+        return HAL_BSP_MAX_ID_LEN;
+    }
+}
+
+/*
+ * This can be used as the unique hardware identifier for the platform, as
+ * it's supposed to be unique for this particular MCU.
+ */
+int
+hal_bsp_hw_id(uint8_t *id, int max_len)
+{
+    if (hal_hw_id_len) {
+        if (max_len > hal_hw_id_len) {
+            max_len = hal_hw_id_len;
+        }
+        memcpy(id, hal_hw_id, max_len);
+        return max_len;
+    }
+    if (max_len > HAL_BSP_MAX_ID_LEN) {
+        max_len = HAL_BSP_MAX_ID_LEN;
+    }
+    memset(id, 0x42, max_len);
+    return max_len;
+}
+
+void
+hal_bsp_set_hw_id(const uint8_t *id, int len)
+{
+    if (len > HAL_BSP_MAX_ID_LEN) {
+        len = HAL_BSP_MAX_ID_LEN;
+    }
+    hal_hw_id_len = len;
+    memcpy(hal_hw_id, id, len);
+}

+ 27 - 0
babblesim/hw/mcu/nordic/nrf52_bsim/src/hal_native_priv.h

@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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 __HAL_NATIVE_PRIV_H__
+#define __HAL_NATIVE_PRIV_H__
+
+#include <stdint.h>
+
+void hal_bsp_set_hw_id(const uint8_t *id, int len);
+
+#endif /*  __HAL_NATIVE_PRIV_H__ */

+ 226 - 0
babblesim/hw/mcu/nordic/nrf52_bsim/src/hal_os_tick.c

@@ -0,0 +1,226 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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.
+ */
+
+#include <assert.h>
+#include "os/mynewt.h"
+#include "hal/hal_os_tick.h"
+#include "nrf.h"
+#include "mcu/cmsis_nvic.h"
+#include "mcu/mcu_sim.h"
+#include <time_machine.h>
+#include <NRF_HWLowL.h>
+#include <NRF_HW_model_top.h>
+#include <NRF_RTC.h>
+#include <hal/nrf_rtc.h>
+
+/* The OS scheduler requires a low-frequency timer. */
+#if MYNEWT_VAL(OS_SCHEDULING) && !MYNEWT_VAL(MCU_LFCLK_SOURCE)
+    #error The OS scheduler requires a low-frequency timer; configure MCU_LFCLK_SOURCE
+#endif
+
+#define RTC_FREQ            32768       /* in Hz */
+#define OS_TICK_TIMER       NRF_RTC1
+#define OS_TICK_IRQ         RTC1_IRQn
+#define OS_TICK_CMPREG      3   /* generate timer interrupt */
+#define RTC_COMPARE_INT_MASK(ccreg) (1UL << ((ccreg) + 16))
+
+struct hal_os_tick
+{
+    int ticks_per_ostick;
+    os_time_t max_idle_ticks;
+    uint32_t lastocmp;
+};
+
+struct hal_os_tick g_hal_os_tick;
+
+/*
+ * Implement (x - y) where the range of both 'x' and 'y' is limited to 24-bits.
+ *
+ * For example:
+ *
+ * sub24(0, 0xffffff) = 1
+ * sub24(0xffffff, 0xfffffe) = 1
+ * sub24(0xffffff, 0) = -1
+ * sub24(0x7fffff, 0) = 8388607
+ * sub24(0x800000, 0) = -8388608
+ */
+static inline int
+sub24(uint32_t x, uint32_t y)
+{
+    int result;
+
+    assert(x <= 0xffffff);
+    assert(y <= 0xffffff);
+
+    result = x - y;
+    if (result & 0x800000) {
+        return (result | 0xff800000);
+    } else {
+        return (result & 0x007fffff);
+    }
+}
+
+static inline uint32_t
+nrf52_os_tick_counter(void)
+{
+    return nrf_rtc_counter_get(OS_TICK_TIMER);
+}
+
+static inline void
+nrf52_os_tick_set_ocmp(uint32_t ocmp)
+{
+    int delta;
+    uint32_t counter;
+
+    OS_ASSERT_CRITICAL();
+    while (1) {
+        ocmp &= 0xffffff;
+        nrf_rtc_cc_set(OS_TICK_TIMER, OS_TICK_CMPREG, ocmp);
+        counter = nrf52_os_tick_counter();
+        /*
+         * From nRF52 Product specification
+         *
+         * - If Counter is 'N' writing (N) or (N + 1) to CC register
+         *   may not trigger a compare event.
+         *
+         * - If Counter is 'N' writing (N + 2) to CC register is guaranteed
+         *   to trigger a compare event at 'N + 2'.
+         */
+        delta = sub24(ocmp, counter);
+        if (delta > 2) {
+            break;
+        }
+        ocmp += g_hal_os_tick.ticks_per_ostick;
+    }
+}
+
+static void
+nrf52_timer_handler(void)
+{
+    int delta;
+    int ticks;
+    os_sr_t sr;
+    uint32_t counter;
+
+    os_trace_isr_enter();
+    OS_ENTER_CRITICAL(sr);
+
+    /* Calculate elapsed ticks and advance OS time. */
+
+    counter = nrf52_os_tick_counter();
+    delta = sub24(counter, g_hal_os_tick.lastocmp);
+    ticks = delta / g_hal_os_tick.ticks_per_ostick;
+    os_time_advance(ticks);
+
+    /* Clear timer interrupt */
+    OS_TICK_TIMER->EVENTS_COMPARE[OS_TICK_CMPREG] = 0;
+
+    /* Update the time associated with the most recent tick */
+    g_hal_os_tick.lastocmp = (g_hal_os_tick.lastocmp +
+        (ticks * g_hal_os_tick.ticks_per_ostick)) & 0xffffff;
+
+    /* Update the output compare to interrupt at the next tick */
+    nrf52_os_tick_set_ocmp(g_hal_os_tick.lastocmp + g_hal_os_tick.ticks_per_ostick);
+
+    OS_EXIT_CRITICAL(sr);
+    os_trace_isr_exit();
+}
+
+/* Wait For Interrupt */
+void
+__WFI(void)
+{
+    while (hw_irq_ctrl_get_irq_status() == 0) {
+        tm_tick();
+    }
+}
+
+void
+os_tick_idle(os_time_t ticks)
+{
+    uint32_t ocmp;
+
+    OS_ASSERT_CRITICAL();
+
+    if (ticks > 0) {
+        /*
+         * Enter tickless regime during long idle durations.
+         */
+        if (ticks > g_hal_os_tick.max_idle_ticks) {
+            ticks = g_hal_os_tick.max_idle_ticks;
+        }
+        ocmp = g_hal_os_tick.lastocmp + (ticks*g_hal_os_tick.ticks_per_ostick);
+        nrf52_os_tick_set_ocmp(ocmp);
+    }
+
+    __WFI();
+
+    if (ticks > 0) {
+        /*
+         * Update OS time before anything else when coming out of
+         * the tickless regime.
+         */
+        nrf52_timer_handler();
+    }
+}
+
+extern void nrf_rtc_regw_sideeffects(int i);
+
+void
+os_tick_init(uint32_t os_ticks_per_sec, int prio)
+{
+    uint32_t sr;
+
+    assert(RTC_FREQ % os_ticks_per_sec == 0);
+
+    g_hal_os_tick.lastocmp = 0;
+    g_hal_os_tick.ticks_per_ostick = RTC_FREQ / os_ticks_per_sec;
+
+    /*
+     * The maximum number of OS ticks allowed to elapse during idle is
+     * limited to 1/4th the number of timer ticks before the 24-bit counter
+     * rolls over.
+     */
+    g_hal_os_tick.max_idle_ticks = (1UL << 22) / g_hal_os_tick.ticks_per_ostick;
+
+    /* disable interrupts */
+    OS_ENTER_CRITICAL(sr);
+
+    /* Set isr in vector table and enable interrupt */
+    NVIC_SetPriority(OS_TICK_IRQ, prio);
+    NVIC_SetVector(OS_TICK_IRQ, (uint32_t)nrf52_timer_handler);
+    NVIC_EnableIRQ(OS_TICK_IRQ);
+
+    /*
+     * Program the OS_TICK_TIMER to operate at 32KHz and trigger an output
+     * compare interrupt at a rate of 'os_ticks_per_sec'.
+     */
+    nrf_rtc_task_trigger(OS_TICK_TIMER, NRF_RTC_TASK_STOP);
+    nrf_rtc_task_trigger(OS_TICK_TIMER, NRF_RTC_TASK_CLEAR);
+    nrf_rtc_event_disable(OS_TICK_TIMER, 0xffffffff);
+    nrf_rtc_int_disable(OS_TICK_TIMER, 0xffffffff);
+    nrf_rtc_int_enable(OS_TICK_TIMER, RTC_COMPARE_INT_MASK(OS_TICK_CMPREG));
+
+    OS_TICK_TIMER->EVENTS_COMPARE[OS_TICK_CMPREG] = 0;
+    nrf_rtc_cc_set(OS_TICK_TIMER, OS_TICK_CMPREG, g_hal_os_tick.ticks_per_ostick);
+
+    nrf_rtc_task_trigger(OS_TICK_TIMER, NRF_RTC_TASK_START);
+
+    OS_EXIT_CRITICAL(sr);
+}

+ 47 - 0
babblesim/hw/mcu/nordic/nrf52_bsim/src/hal_reset_cause.c

@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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.
+ */
+
+#include <nrf.h>
+#include "hal/hal_system.h"
+
+enum hal_reset_reason
+hal_reset_cause(void)
+{
+    static enum hal_reset_reason reason;
+    uint32_t reg;
+
+    if (reason) {
+        return reason;
+    }
+    reg = NRF_POWER->RESETREAS;
+
+    if (reg & (POWER_RESETREAS_DOG_Msk | POWER_RESETREAS_LOCKUP_Msk)) {
+        reason = HAL_RESET_WATCHDOG;
+    } else if (reg & POWER_RESETREAS_SREQ_Msk) {
+        reason = HAL_RESET_SOFT;
+    } else if (reg & POWER_RESETREAS_RESETPIN_Msk) {
+        reason = HAL_RESET_PIN;
+    } else if (reg & POWER_RESETREAS_OFF_Msk) {
+        reason = HAL_RESET_SYS_OFF_INT;
+    } else {
+        reason = HAL_RESET_POR; /* could also be brownout */
+    }
+    NRF_POWER->RESETREAS = reg;
+    return reason;
+}

+ 128 - 0
babblesim/hw/mcu/nordic/nrf52_bsim/src/hal_system.c

@@ -0,0 +1,128 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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.
+ */
+
+#include "syscfg/syscfg.h"
+#include "hal/hal_system.h"
+#include "hal/hal_debug.h"
+#include "nrf.h"
+#include "cmsis.h"
+#include "mcu/mcu_sim.h"
+#include "hal/nrf_clock.h"
+
+/**
+ * Function called at startup. Called after BSS and .data initialized but
+ * prior to the _start function.
+ *
+ * NOTE: this function is called by both the bootloader and the application.
+ * If you add code here that you do not want executed in either case you need
+ * to conditionally compile it using the config variable BOOT_LOADER (will
+ * be set to 1 in case of bootloader build)
+ *
+ */
+void
+hal_system_init(void)
+{
+#if MYNEWT_VAL(MCU_DCDC_ENABLED)
+    NRF_POWER->DCDCEN = 1;
+#endif
+}
+
+void
+hal_system_reset(void)
+{
+
+#if MYNEWT_VAL(HAL_SYSTEM_RESET_CB)
+    hal_system_reset_cb();
+#endif
+
+    while (1) {
+        HAL_DEBUG_BREAK();
+        NVIC_SystemReset();
+    }
+}
+
+int
+hal_debugger_connected(void)
+{
+    return 0;
+}
+
+/**
+ * hal system clock start
+ *
+ * Makes sure the LFCLK and/or HFCLK is started.
+ */
+void
+hal_system_clock_start(void)
+{
+#if MYNEWT_VAL(MCU_LFCLK_SOURCE)
+    uint32_t regmsk;
+    uint32_t regval;
+    uint32_t clksrc;
+
+    regmsk = CLOCK_LFCLKSTAT_STATE_Msk | CLOCK_LFCLKSTAT_SRC_Msk;
+    regval = CLOCK_LFCLKSTAT_STATE_Running << CLOCK_LFCLKSTAT_STATE_Pos;
+
+#if MYNEWT_VAL_CHOICE(MCU_LFCLK_SOURCE, LFXO)
+    regval |= CLOCK_LFCLKSTAT_SRC_Xtal << CLOCK_LFCLKSTAT_SRC_Pos;
+    clksrc = CLOCK_LFCLKSRC_SRC_Xtal;
+#elif MYNEWT_VAL_CHOICE(MCU_LFCLK_SOURCE, LFSYNTH)
+    regval |= CLOCK_LFCLKSTAT_SRC_Synth << CLOCK_LFCLKSTAT_SRC_Pos;
+    clksrc = CLOCK_LFCLKSRC_SRC_Synth;
+#elif MYNEWT_VAL_CHOICE(MCU_LFCLK_SOURCE, LFRC)
+    regval |= CLOCK_LFCLKSTAT_SRC_RC << CLOCK_LFCLKSTAT_SRC_Pos;
+    clksrc = CLOCK_LFCLKSRC_SRC_RC;
+#else
+    #error Unknown LFCLK source selected
+#endif
+
+#if MYNEWT_VAL_CHOICE(MCU_LFCLK_SOURCE, LFSYNTH)
+    /* Must turn on HFLCK for synthesized 32768 crystal */
+    nrf52_clock_hfxo_request();
+#else
+    /* Make sure HFCLK is stopped */
+    nrf_clock_task_trigger(NRF_CLOCK, NRF_CLOCK_TASK_HFCLKSTOP);
+#endif
+
+    /* Check if this clock source is already running */
+    if ((NRF_CLOCK_regs.LFCLKSTAT & regmsk) != regval) {
+
+        nrf_clock_task_trigger(NRF_CLOCK, NRF_CLOCK_TASK_LFCLKSTOP);
+        NRF_CLOCK_regs.EVENTS_LFCLKSTARTED = 0;
+        NRF_CLOCK_regs.LFCLKSRC = clksrc;
+        nrf_clock_task_trigger(NRF_CLOCK, NRF_CLOCK_TASK_LFCLKSTART);
+
+        /* Wait here till started! */
+//        while (1) {
+//            if (NRF_CLOCK_regs.EVENTS_LFCLKSTARTED) {
+//                if ((NRF_CLOCK_regs.LFCLKSTAT & regmsk) == regval) {
+//                    break;
+//                }
+//            }
+//        }
+    }
+#endif
+}
+
+
+void*
+NRF_RADIO_BASE_FUN(void)
+{
+    return NULL;
+}

+ 949 - 0
babblesim/hw/mcu/nordic/nrf52_bsim/src/hal_timer.c

@@ -0,0 +1,949 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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.
+ */
+
+#include <string.h>
+#include <stdint.h>
+#include <assert.h>
+#include <errno.h>
+#include <hal/nrf_rtc.h>
+#include "os/mynewt.h"
+#include "mcu/cmsis_nvic.h"
+#include "hal/hal_timer.h"
+#include "nrf.h"
+#include "mcu/nrf52_hal.h"
+#include "mcu/nrf52_clock.h"
+#include "hal/nrf_timer.h"
+
+/* IRQ prototype */
+typedef void (*hal_timer_irq_handler_t)(void);
+
+/* User CC 2 for reading counter, CC 3 for timer isr */
+#define NRF_TIMER_CC_READ       (NRF_TIMER_CC_CHANNEL2)
+#define NRF_TIMER_CC_INT        (3)
+
+/* Output compare 2 used for RTC timers */
+#define NRF_RTC_TIMER_CC_INT    (2)
+
+/* Maximum number of hal timers used */
+#define NRF52_HAL_TIMER_MAX     (6)
+
+/* Maximum timer frequency */
+#define NRF52_MAX_TIMER_FREQ    (16000000)
+
+struct nrf52_hal_timer {
+    uint8_t tmr_enabled;
+    uint8_t tmr_irq_num;
+    uint8_t tmr_rtc;
+    uint8_t tmr_pad;
+    uint32_t tmr_cntr;
+    uint32_t timer_isrs;
+    uint32_t tmr_freq;
+    void *tmr_reg;
+    TAILQ_HEAD(hal_timer_qhead, hal_timer) hal_timer_q;
+};
+
+#if MYNEWT_VAL(TIMER_0)
+struct nrf52_hal_timer nrf52_hal_timer0;
+#endif
+#if MYNEWT_VAL(TIMER_1)
+struct nrf52_hal_timer nrf52_hal_timer1;
+#endif
+#if MYNEWT_VAL(TIMER_2)
+struct nrf52_hal_timer nrf52_hal_timer2;
+#endif
+#if MYNEWT_VAL(TIMER_3)
+struct nrf52_hal_timer nrf52_hal_timer3;
+#endif
+#if MYNEWT_VAL(TIMER_4)
+struct nrf52_hal_timer nrf52_hal_timer4;
+#endif
+#if MYNEWT_VAL(TIMER_5)
+struct nrf52_hal_timer nrf52_hal_timer5;
+#endif
+
+static const struct nrf52_hal_timer *nrf52_hal_timers[NRF52_HAL_TIMER_MAX] = {
+#if MYNEWT_VAL(TIMER_0)
+    &nrf52_hal_timer0,
+#else
+    NULL,
+#endif
+#if MYNEWT_VAL(TIMER_1)
+    &nrf52_hal_timer1,
+#else
+    NULL,
+#endif
+#if MYNEWT_VAL(TIMER_2)
+    &nrf52_hal_timer2,
+#else
+    NULL,
+#endif
+#if MYNEWT_VAL(TIMER_3)
+    &nrf52_hal_timer3,
+#else
+    NULL,
+#endif
+#if MYNEWT_VAL(TIMER_4)
+    &nrf52_hal_timer4,
+#else
+    NULL,
+#endif
+#if MYNEWT_VAL(TIMER_5)
+    &nrf52_hal_timer5
+#else
+    NULL
+#endif
+};
+
+/* Resolve timer number into timer structure */
+#define NRF52_HAL_TIMER_RESOLVE(__n, __v)       \
+    if ((__n) >= NRF52_HAL_TIMER_MAX) {         \
+        rc = EINVAL;                            \
+        goto err;                               \
+    }                                           \
+    (__v) = (struct nrf52_hal_timer *) nrf52_hal_timers[(__n)];            \
+    if ((__v) == NULL) {                        \
+        rc = EINVAL;                            \
+        goto err;                               \
+    }
+
+/* Interrupt mask for interrupt enable/clear */
+#define NRF_TIMER_INT_MASK(x)    ((1 << (uint32_t)(x)) << 16)
+
+static uint32_t
+nrf_read_timer_cntr(NRF_TIMER_Type *hwtimer)
+{
+    uint32_t tcntr;
+
+    /* Force a capture of the timer into 'cntr' capture channel; read it */
+    nrf_timer_task_trigger(hwtimer, NRF_TIMER_TASK_CAPTURE2);
+    tcntr = hwtimer->CC[NRF_TIMER_CC_READ];
+
+    return tcntr;
+}
+
+/**
+ * nrf timer set ocmp
+ *
+ * Set the OCMP used by the timer to the desired expiration tick
+ *
+ * NOTE: Must be called with interrupts disabled.
+ *
+ * @param timer Pointer to timer.
+ */
+static void
+nrf_timer_set_ocmp(struct nrf52_hal_timer *bsptimer, uint32_t expiry)
+{
+    int32_t delta_t;
+    uint32_t temp;
+    uint32_t cntr;
+    NRF_TIMER_Type *hwtimer;
+    NRF_RTC_Type *rtctimer;
+
+    if (bsptimer->tmr_rtc) {
+        rtctimer = (NRF_RTC_Type *)bsptimer->tmr_reg;
+        nrf_rtc_int_disable(rtctimer, NRF_TIMER_INT_MASK(NRF_RTC_TIMER_CC_INT));
+        temp = bsptimer->tmr_cntr;
+        cntr = nrf_rtc_counter_get(rtctimer);
+        if (rtctimer->EVENTS_OVRFLW) {
+            temp += (1UL << 24);
+            cntr = nrf_rtc_counter_get(rtctimer);
+        }
+        temp |= cntr;
+        delta_t = (int32_t)(expiry - temp);
+
+        /*
+         * The nRF52xxx documentation states that COMPARE event is guaranteed
+         * only if value written to CC register is at least 2 greater than the
+         * current counter value. We also need to account for possible extra
+         * tick during calculations so effectively any delta less than 3 needs
+         * to be handled differently. TICK event is used to have interrupt on
+         * each subsequent tick so we won't miss any and in case we detected
+         * mentioned extra tick during calculations, interrupt is triggered
+         * immediately. Delta 0 or less means we should always fire immediately.
+         */
+        if (delta_t < 1) {
+            nrf_rtc_int_disable(rtctimer, RTC_INTENCLR_TICK_Msk);
+            NVIC_SetPendingIRQ(bsptimer->tmr_irq_num);
+        } else if (delta_t < 3 && 0) {
+            nrf_rtc_int_enable(rtctimer, RTC_INTENSET_TICK_Msk);
+	    if (nrf_rtc_counter_get(rtctimer) != cntr) {
+                NVIC_SetPendingIRQ(bsptimer->tmr_irq_num);
+            }
+        } else {
+            nrf_rtc_int_disable(rtctimer, RTC_INTENCLR_TICK_Msk);
+
+            if (delta_t < (1UL << 24)) {
+                nrf_rtc_cc_set(rtctimer, NRF_RTC_TIMER_CC_INT, expiry & 0x00ffffff);
+            } else {
+                /* CC too far ahead. Just make sure we set compare far ahead */
+                nrf_rtc_cc_set(rtctimer, NRF_RTC_TIMER_CC_INT, cntr + (1UL << 23));
+            }
+            nrf_rtc_int_enable(rtctimer, NRF_TIMER_INT_MASK(NRF_RTC_TIMER_CC_INT));
+        }
+    } else {
+        hwtimer = bsptimer->tmr_reg;
+
+        /* Disable ocmp interrupt and set new value */
+        nrf_timer_int_disable(hwtimer, NRF_TIMER_INT_MASK(NRF_TIMER_CC_INT));
+
+        /* Set output compare register to timer expiration */
+        nrf_timer_cc_set(hwtimer, NRF_TIMER_CC_INT, expiry);
+
+        /* Clear interrupt flag */
+        hwtimer->EVENTS_COMPARE[NRF_TIMER_CC_INT] = 0;
+
+        /* Enable the output compare interrupt */
+        nrf_timer_int_enable(hwtimer, NRF_TIMER_INT_MASK(NRF_TIMER_CC_INT));
+
+        /* Force interrupt to occur as we may have missed it */
+        if ((int32_t)(nrf_read_timer_cntr(hwtimer) - expiry) >= 0) {
+            NVIC_SetPendingIRQ(bsptimer->tmr_irq_num);
+        }
+    }
+}
+
+/* Disable output compare used for timer */
+static void
+nrf_timer_disable_ocmp(NRF_TIMER_Type *hwtimer)
+{
+    nrf_timer_int_disable(hwtimer, NRF_TIMER_INT_MASK(NRF_TIMER_CC_INT));
+}
+
+static void
+nrf_rtc_disable_ocmp(NRF_RTC_Type *rtctimer)
+{
+    nrf_rtc_int_disable(rtctimer, NRF_TIMER_INT_MASK(NRF_RTC_TIMER_CC_INT));
+    nrf_rtc_int_disable(rtctimer, RTC_INTENCLR_TICK_Msk);
+}
+
+static uint32_t
+hal_timer_read_bsptimer(struct nrf52_hal_timer *bsptimer)
+{
+    uint32_t low32;
+    uint32_t ctx;
+    uint32_t tcntr;
+    NRF_RTC_Type *rtctimer;
+
+    rtctimer = (NRF_RTC_Type *)bsptimer->tmr_reg;
+    __HAL_DISABLE_INTERRUPTS(ctx);
+    tcntr = bsptimer->tmr_cntr;
+    low32 = nrf_rtc_counter_get(rtctimer);
+    if (rtctimer->EVENTS_OVRFLW) {
+        tcntr += (1UL << 24);
+        bsptimer->tmr_cntr = tcntr;
+        low32 = nrf_rtc_counter_get(rtctimer);
+        rtctimer->EVENTS_OVRFLW = 0;
+        NVIC_SetPendingIRQ(bsptimer->tmr_irq_num);
+    }
+    tcntr |= low32;
+    __HAL_ENABLE_INTERRUPTS(ctx);
+
+    return tcntr;
+}
+
+#if (MYNEWT_VAL(TIMER_0) || MYNEWT_VAL(TIMER_1) || MYNEWT_VAL(TIMER_2) || \
+     MYNEWT_VAL(TIMER_3) || MYNEWT_VAL(TIMER_4) || MYNEWT_VAL(TIMER_5))
+/**
+ * hal timer chk queue
+ *
+ *
+ * @param bsptimer
+ */
+static void
+hal_timer_chk_queue(struct nrf52_hal_timer *bsptimer)
+{
+    uint32_t tcntr;
+    uint32_t ctx;
+    struct hal_timer *timer;
+
+    /* disable interrupts */
+    __HAL_DISABLE_INTERRUPTS(ctx);
+    while ((timer = TAILQ_FIRST(&bsptimer->hal_timer_q)) != NULL) {
+        if (bsptimer->tmr_rtc) {
+            tcntr = hal_timer_read_bsptimer(bsptimer);
+        } else {
+            tcntr = nrf_read_timer_cntr(bsptimer->tmr_reg);
+        }
+        if ((int32_t)(tcntr - timer->expiry) >= 0) {
+            TAILQ_REMOVE(&bsptimer->hal_timer_q, timer, link);
+            timer->link.tqe_prev = NULL;
+            timer->cb_func(timer->cb_arg);
+        } else {
+            break;
+        }
+    }
+
+    /* Any timers left on queue? If so, we need to set OCMP */
+    timer = TAILQ_FIRST(&bsptimer->hal_timer_q);
+    if (timer) {
+        nrf_timer_set_ocmp(bsptimer, timer->expiry);
+    } else {
+        if (bsptimer->tmr_rtc) {
+            nrf_rtc_disable_ocmp((NRF_RTC_Type *)bsptimer->tmr_reg);
+        } else {
+            nrf_timer_disable_ocmp(bsptimer->tmr_reg);
+        }
+    }
+    __HAL_ENABLE_INTERRUPTS(ctx);
+}
+#endif
+
+/**
+ * hal timer irq handler
+ *
+ * Generic HAL timer irq handler.
+ *
+ * @param tmr
+ */
+/**
+ * hal timer irq handler
+ *
+ * This is the global timer interrupt routine.
+ *
+ */
+#if (MYNEWT_VAL(TIMER_0) || MYNEWT_VAL(TIMER_1) || MYNEWT_VAL(TIMER_2) || \
+     MYNEWT_VAL(TIMER_3) || MYNEWT_VAL(TIMER_4))
+
+static void
+hal_timer_irq_handler(struct nrf52_hal_timer *bsptimer)
+{
+    uint32_t compare;
+    NRF_TIMER_Type *hwtimer;
+
+    os_trace_isr_enter();
+
+    /* Check interrupt source. If set, clear them */
+    hwtimer = bsptimer->tmr_reg;
+    compare = hwtimer->EVENTS_COMPARE[NRF_TIMER_CC_INT];
+    if (compare) {
+        hwtimer->EVENTS_COMPARE[NRF_TIMER_CC_INT] = 0;
+    }
+
+    /* XXX: make these stats? */
+    /* Count # of timer isrs */
+    ++bsptimer->timer_isrs;
+
+    /*
+     * NOTE: we dont check the 'compare' variable here due to how the timer
+     * is implemented on this chip. There is no way to force an output
+     * compare, so if we are late setting the output compare (i.e. the timer
+     * counter is already passed the output compare value), we use the NVIC
+     * to set a pending interrupt. This means that there will be no compare
+     * flag set, so all we do is check to see if the compare interrupt is
+     * enabled.
+     */
+    if (hwtimer->INTENCLR & NRF_TIMER_INT_MASK(NRF_TIMER_CC_INT)) {
+        hal_timer_chk_queue(bsptimer);
+        /* XXX: Recommended by nordic to make sure interrupts are cleared */
+        compare = hwtimer->EVENTS_COMPARE[NRF_TIMER_CC_INT];
+    }
+
+    os_trace_isr_exit();
+}
+#endif
+
+#if MYNEWT_VAL(TIMER_5)
+static void
+hal_rtc_timer_irq_handler(struct nrf52_hal_timer *bsptimer)
+{
+    uint32_t overflow;
+    uint32_t compare;
+    uint32_t tick;
+    NRF_RTC_Type *rtctimer;
+
+    os_trace_isr_enter();
+
+    /* Check interrupt source. If set, clear them */
+    rtctimer = (NRF_RTC_Type *)bsptimer->tmr_reg;
+    compare = rtctimer->EVENTS_COMPARE[NRF_RTC_TIMER_CC_INT];
+    if (compare) {
+       rtctimer->EVENTS_COMPARE[NRF_RTC_TIMER_CC_INT] = 0;
+    }
+
+    tick = rtctimer->EVENTS_TICK;
+    if (tick) {
+        rtctimer->EVENTS_TICK = 0;
+    }
+
+    overflow = rtctimer->EVENTS_OVRFLW;
+    if (overflow) {
+        rtctimer->EVENTS_OVRFLW = 0;
+        bsptimer->tmr_cntr += (1UL << 24);
+    }
+
+    /* Count # of timer isrs */
+    ++bsptimer->timer_isrs;
+
+    /*
+     * NOTE: we dont check the 'compare' variable here due to how the timer
+     * is implemented on this chip. There is no way to force an output
+     * compare, so if we are late setting the output compare (i.e. the timer
+     * counter is already passed the output compare value), we use the NVIC
+     * to set a pending interrupt. This means that there will be no compare
+     * flag set, so all we do is check to see if the compare interrupt is
+     * enabled.
+     */
+    hal_timer_chk_queue(bsptimer);
+
+    /* Recommended by nordic to make sure interrupts are cleared */
+    compare = rtctimer->EVENTS_COMPARE[NRF_RTC_TIMER_CC_INT];
+
+    os_trace_isr_exit();
+}
+#endif
+
+#if MYNEWT_VAL(TIMER_0)
+void
+nrf52_timer0_irq_handler(void)
+{
+    hal_timer_irq_handler(&nrf52_hal_timer0);
+}
+#endif
+
+#if MYNEWT_VAL(TIMER_1)
+void
+nrf52_timer1_irq_handler(void)
+{
+    hal_timer_irq_handler(&nrf52_hal_timer1);
+}
+#endif
+
+#if MYNEWT_VAL(TIMER_2)
+void
+nrf52_timer2_irq_handler(void)
+{
+    hal_timer_irq_handler(&nrf52_hal_timer2);
+}
+#endif
+
+#if MYNEWT_VAL(TIMER_3)
+void
+nrf52_timer3_irq_handler(void)
+{
+    hal_timer_irq_handler(&nrf52_hal_timer3);
+}
+#endif
+
+#if MYNEWT_VAL(TIMER_4)
+void
+nrf52_timer4_irq_handler(void)
+{
+    hal_timer_irq_handler(&nrf52_hal_timer4);
+}
+#endif
+
+#if MYNEWT_VAL(TIMER_5)
+void
+nrf52_timer5_irq_handler(void)
+{
+    hal_rtc_timer_irq_handler(&nrf52_hal_timer5);
+}
+#endif
+
+/**
+ * hal timer init
+ *
+ * Initialize platform specific timer items
+ *
+ * @param timer_num     Timer number to initialize
+ * @param cfg           Pointer to platform specific configuration
+ *
+ * @return int          0: success; error code otherwise
+ */
+int
+hal_timer_init(int timer_num, void *cfg)
+{
+    int rc;
+    uint8_t irq_num;
+    struct nrf52_hal_timer *bsptimer;
+    void *hwtimer;
+    hal_timer_irq_handler_t irq_isr;
+
+    NRF52_HAL_TIMER_RESOLVE(timer_num, bsptimer);
+
+    /* If timer is enabled do not allow init */
+    if (bsptimer->tmr_enabled) {
+        rc = EINVAL;
+        goto err;
+    }
+
+    switch (timer_num) {
+#if MYNEWT_VAL(TIMER_0)
+    case 0:
+        irq_num = TIMER0_IRQn;
+        hwtimer = NRF_TIMER0;
+        irq_isr = nrf52_timer0_irq_handler;
+        break;
+#endif
+#if MYNEWT_VAL(TIMER_1)
+    case 1:
+        irq_num = TIMER1_IRQn;
+        hwtimer = NRF_TIMER1;
+        irq_isr = nrf52_timer1_irq_handler;
+        break;
+#endif
+#if MYNEWT_VAL(TIMER_2)
+    case 2:
+        irq_num = TIMER2_IRQn;
+        hwtimer = NRF_TIMER2;
+        irq_isr = nrf52_timer2_irq_handler;
+        break;
+#endif
+#if MYNEWT_VAL(TIMER_3)
+    case 3:
+        irq_num = TIMER3_IRQn;
+        hwtimer = NRF_TIMER3;
+        irq_isr = nrf52_timer3_irq_handler;
+        break;
+#endif
+#if MYNEWT_VAL(TIMER_4)
+    case 4:
+        irq_num = TIMER4_IRQn;
+        hwtimer = NRF_TIMER4;
+        irq_isr = nrf52_timer4_irq_handler;
+        break;
+#endif
+#if MYNEWT_VAL(TIMER_5)
+    case 5:
+        irq_num = RTC0_IRQn;
+        hwtimer = NRF_RTC0;
+        irq_isr = nrf52_timer5_irq_handler;
+        bsptimer->tmr_rtc = 1;
+        break;
+#endif
+    default:
+        hwtimer = NULL;
+        break;
+    }
+
+    if (hwtimer == NULL) {
+        rc = EINVAL;
+        goto err;
+    }
+
+    bsptimer->tmr_reg = hwtimer;
+    bsptimer->tmr_irq_num = irq_num;
+
+    /* Disable IRQ, set priority and set vector in table */
+    NVIC_DisableIRQ(irq_num);
+    NVIC_SetPriority(irq_num, (1 << __NVIC_PRIO_BITS) - 1);
+    NVIC_SetVector(irq_num, (uint32_t)irq_isr);
+
+    return 0;
+
+err:
+    return rc;
+}
+
+/**
+ * hal timer config
+ *
+ * Configure a timer to run at the desired frequency. This starts the timer.
+ *
+ * @param timer_num
+ * @param freq_hz
+ *
+ * @return int
+ */
+int
+hal_timer_config(int timer_num, uint32_t freq_hz)
+{
+    int rc;
+    uint8_t prescaler;
+    uint32_t ctx;
+    uint32_t div;
+    uint32_t min_delta;
+    uint32_t max_delta;
+    struct nrf52_hal_timer *bsptimer;
+    NRF_TIMER_Type *hwtimer;
+#if MYNEWT_VAL(TIMER_5)
+    NRF_RTC_Type *rtctimer;
+#endif
+
+    NRF52_HAL_TIMER_RESOLVE(timer_num, bsptimer);
+
+#if MYNEWT_VAL(TIMER_5)
+    if (timer_num == 5) {
+        /* NOTE: we only allow the RTC frequency to be set at 32768 */
+        if (bsptimer->tmr_enabled || (freq_hz != 32768) ||
+            (bsptimer->tmr_reg == NULL)) {
+            rc = EINVAL;
+            goto err;
+        }
+
+        bsptimer->tmr_freq = freq_hz;
+        bsptimer->tmr_enabled = 1;
+
+        __HAL_DISABLE_INTERRUPTS(ctx);
+
+        rtctimer = (NRF_RTC_Type *)bsptimer->tmr_reg;
+
+        /* Stop the timer first */
+        nrf_rtc_task_trigger(rtctimer, NRF_RTC_TASK_STOP);
+        nrf_rtc_task_trigger(rtctimer, NRF_RTC_TASK_CLEAR);
+
+        /* Always no prescaler */
+        rtctimer->PRESCALER = 0;
+
+        /* Clear overflow events and set overflow interrupt */
+        rtctimer->EVENTS_OVRFLW = 0;
+        nrf_rtc_int_enable(rtctimer, RTC_INTENSET_OVRFLW_Msk);
+
+        /* Start the timer */
+        nrf_rtc_task_trigger(rtctimer, NRF_RTC_TASK_START);
+        /* Set isr in vector table and enable interrupt */
+        NVIC_EnableIRQ(bsptimer->tmr_irq_num);
+
+        __HAL_ENABLE_INTERRUPTS(ctx);
+        return 0;
+    }
+#endif
+
+    /* Set timer to desired frequency */
+    div = NRF52_MAX_TIMER_FREQ / freq_hz;
+
+    /*
+     * Largest prescaler is 2^9 and must make sure frequency not too high.
+     * If hwtimer is NULL it means that the timer was not initialized prior
+     * to call.
+     */
+    if (bsptimer->tmr_enabled || (div == 0) || (div > 512) ||
+        (bsptimer->tmr_reg == NULL)) {
+        rc = EINVAL;
+        goto err;
+    }
+
+    if (div == 1) {
+        prescaler = 0;
+    } else {
+        /* Find closest prescaler */
+        for (prescaler = 1; prescaler < 10; ++prescaler) {
+            if (div <= (1 << prescaler)) {
+                min_delta = div - (1 << (prescaler - 1));
+                max_delta = (1 << prescaler) - div;
+                if (min_delta < max_delta) {
+                    prescaler -= 1;
+                }
+                break;
+            }
+        }
+    }
+
+    /* Now set the actual frequency */
+    bsptimer->tmr_freq = NRF52_MAX_TIMER_FREQ / (1 << prescaler);
+    bsptimer->tmr_enabled = 1;
+
+    /* disable interrupts */
+    __HAL_DISABLE_INTERRUPTS(ctx);
+
+#if MYNEWT_VAL_CHOICE(MCU_HFCLK_SOURCE, HFXO)
+    /* Make sure HFXO is started */
+    nrf52_clock_hfxo_request();
+#endif
+    hwtimer = bsptimer->tmr_reg;
+
+    /* Stop the timer first */
+    nrf_timer_task_trigger(hwtimer, NRF_TIMER_TASK_STOP);
+    nrf_timer_task_trigger(hwtimer, NRF_TIMER_TASK_CLEAR);
+
+    /* Put the timer in timer mode using 32 bits. */
+    nrf_timer_mode_set(hwtimer, NRF_TIMER_MODE_TIMER);
+    hwtimer->BITMODE = TIMER_BITMODE_BITMODE_32Bit;
+
+    /* Set the pre-scalar */
+    hwtimer->PRESCALER = prescaler;
+
+    /* Start the timer */
+    nrf_timer_task_trigger(hwtimer, NRF_TIMER_TASK_START);
+
+    NVIC_EnableIRQ(bsptimer->tmr_irq_num);
+
+    __HAL_ENABLE_INTERRUPTS(ctx);
+
+    return 0;
+
+err:
+    return rc;
+}
+
+/**
+ * hal timer deinit
+ *
+ * De-initialize a HW timer.
+ *
+ * @param timer_num
+ *
+ * @return int
+ */
+int
+hal_timer_deinit(int timer_num)
+{
+    int rc;
+    uint32_t ctx;
+    struct nrf52_hal_timer *bsptimer;
+    NRF_TIMER_Type *hwtimer;
+    NRF_RTC_Type *rtctimer;
+
+    rc = 0;
+    NRF52_HAL_TIMER_RESOLVE(timer_num, bsptimer);
+
+    __HAL_DISABLE_INTERRUPTS(ctx);
+    if (bsptimer->tmr_rtc) {
+        rtctimer = (NRF_RTC_Type *)bsptimer->tmr_reg;
+        nrf_rtc_int_disable(rtctimer, NRF_TIMER_INT_MASK(NRF_RTC_TIMER_CC_INT));
+	nrf_rtc_task_trigger(rtctimer, NRF_RTC_TASK_STOP);
+    } else {
+        hwtimer = (NRF_TIMER_Type *)bsptimer->tmr_reg;
+        nrf_timer_int_disable(hwtimer, NRF_TIMER_INT_MASK(NRF_TIMER_CC_INT));
+        hwtimer->TASKS_SHUTDOWN = 1;
+    }
+    bsptimer->tmr_enabled = 0;
+    bsptimer->tmr_reg = NULL;
+
+#if MYNEWT_VAL_CHOICE(MCU_HFCLK_SOURCE, HFXO)
+    if (timer_num != 5) {
+        nrf52_clock_hfxo_release();
+    }
+#endif
+    __HAL_ENABLE_INTERRUPTS(ctx);
+
+err:
+    return rc;
+}
+
+/**
+ * hal timer get resolution
+ *
+ * Get the resolution of the timer. This is the timer period, in nanoseconds
+ *
+ * @param timer_num
+ *
+ * @return uint32_t The
+ */
+uint32_t
+hal_timer_get_resolution(int timer_num)
+{
+    int rc;
+    uint32_t resolution;
+    struct nrf52_hal_timer *bsptimer;
+
+    NRF52_HAL_TIMER_RESOLVE(timer_num, bsptimer);
+
+    resolution = 1000000000 / bsptimer->tmr_freq;
+    return resolution;
+
+err:
+    rc = 0;
+    return rc;
+}
+
+/**
+ * hal timer read
+ *
+ * Returns the timer counter. NOTE: if the timer is a 16-bit timer, only
+ * the lower 16 bits are valid. If the timer is a 64-bit timer, only the
+ * low 32-bits are returned.
+ *
+ * @return uint32_t The timer counter register.
+ */
+uint32_t
+hal_timer_read(int timer_num)
+{
+    int rc;
+    uint32_t tcntr;
+    struct nrf52_hal_timer *bsptimer;
+
+    NRF52_HAL_TIMER_RESOLVE(timer_num, bsptimer);
+    if (bsptimer->tmr_rtc) {
+        tcntr = hal_timer_read_bsptimer(bsptimer);
+    } else {
+        tcntr = nrf_read_timer_cntr(bsptimer->tmr_reg);
+    }
+
+    return tcntr;
+
+    /* Assert here since there is no invalid return code */
+err:
+    assert(0);
+    rc = 0;
+    return rc;
+}
+
+/**
+ * hal timer delay
+ *
+ * Blocking delay for n ticks
+ *
+ * @param timer_num
+ * @param ticks
+ *
+ * @return int 0 on success; error code otherwise.
+ */
+int
+hal_timer_delay(int timer_num, uint32_t ticks)
+{
+    uint32_t until;
+
+    until = hal_timer_read(timer_num) + ticks;
+    while ((int32_t)(hal_timer_read(timer_num) - until) <= 0) {
+        /* Loop here till finished */
+    }
+
+    return 0;
+}
+
+/**
+ *
+ * Initialize the HAL timer structure with the callback and the callback
+ * argument. Also initializes the HW specific timer pointer.
+ *
+ * @param cb_func
+ *
+ * @return int
+ */
+int
+hal_timer_set_cb(int timer_num, struct hal_timer *timer, hal_timer_cb cb_func,
+                 void *arg)
+{
+    int rc;
+    struct nrf52_hal_timer *bsptimer;
+
+    NRF52_HAL_TIMER_RESOLVE(timer_num, bsptimer);
+
+    timer->cb_func = cb_func;
+    timer->cb_arg = arg;
+    timer->link.tqe_prev = NULL;
+    timer->bsp_timer = bsptimer;
+
+    rc = 0;
+
+err:
+    return rc;
+}
+
+int
+hal_timer_start(struct hal_timer *timer, uint32_t ticks)
+{
+    int rc;
+    uint32_t tick;
+    struct nrf52_hal_timer *bsptimer;
+
+    /* Set the tick value at which the timer should expire */
+    bsptimer = (struct nrf52_hal_timer *)timer->bsp_timer;
+    if (bsptimer->tmr_rtc) {
+        tick = hal_timer_read_bsptimer(bsptimer) + ticks;
+    } else {
+        tick = nrf_read_timer_cntr(bsptimer->tmr_reg) + ticks;
+    }
+    rc = hal_timer_start_at(timer, tick);
+    return rc;
+}
+
+int
+hal_timer_start_at(struct hal_timer *timer, uint32_t tick)
+{
+    uint32_t ctx;
+    struct hal_timer *entry;
+    struct nrf52_hal_timer *bsptimer;
+
+    if ((timer == NULL) || (timer->link.tqe_prev != NULL) ||
+        (timer->cb_func == NULL)) {
+        return EINVAL;
+    }
+    bsptimer = (struct nrf52_hal_timer *)timer->bsp_timer;
+    timer->expiry = tick;
+
+    __HAL_DISABLE_INTERRUPTS(ctx);
+
+    if (TAILQ_EMPTY(&bsptimer->hal_timer_q)) {
+        TAILQ_INSERT_HEAD(&bsptimer->hal_timer_q, timer, link);
+    } else {
+        TAILQ_FOREACH(entry, &bsptimer->hal_timer_q, link) {
+            if ((int32_t)(timer->expiry - entry->expiry) < 0) {
+                TAILQ_INSERT_BEFORE(entry, timer, link);
+                break;
+            }
+        }
+        if (!entry) {
+            TAILQ_INSERT_TAIL(&bsptimer->hal_timer_q, timer, link);
+        }
+    }
+
+    /* If this is the head, we need to set new OCMP */
+    if (timer == TAILQ_FIRST(&bsptimer->hal_timer_q)) {
+        nrf_timer_set_ocmp(bsptimer, timer->expiry);
+    }
+
+    __HAL_ENABLE_INTERRUPTS(ctx);
+
+    return 0;
+}
+
+/**
+ * hal timer stop
+ *
+ * Stop a timer.
+ *
+ * @param timer
+ *
+ * @return int
+ */
+int
+hal_timer_stop(struct hal_timer *timer)
+{
+    uint32_t ctx;
+    int reset_ocmp;
+    struct hal_timer *entry;
+    struct nrf52_hal_timer *bsptimer;
+
+    if (timer == NULL) {
+        return EINVAL;
+    }
+
+   bsptimer = (struct nrf52_hal_timer *)timer->bsp_timer;
+
+    __HAL_DISABLE_INTERRUPTS(ctx);
+
+    if (timer->link.tqe_prev != NULL) {
+        reset_ocmp = 0;
+        if (timer == TAILQ_FIRST(&bsptimer->hal_timer_q)) {
+            /* If first on queue, we will need to reset OCMP */
+            entry = TAILQ_NEXT(timer, link);
+            reset_ocmp = 1;
+        }
+        TAILQ_REMOVE(&bsptimer->hal_timer_q, timer, link);
+        timer->link.tqe_prev = NULL;
+        if (reset_ocmp) {
+            if (entry) {
+                nrf_timer_set_ocmp((struct nrf52_hal_timer *)entry->bsp_timer,
+                                   entry->expiry);
+            } else {
+                if (bsptimer->tmr_rtc) {
+                    nrf_rtc_disable_ocmp((NRF_RTC_Type *)bsptimer->tmr_reg);
+                } else {
+                    nrf_timer_disable_ocmp(bsptimer->tmr_reg);
+                }
+            }
+        }
+    }
+
+    __HAL_ENABLE_INTERRUPTS(ctx);
+
+    return 0;
+}

+ 478 - 0
babblesim/hw/mcu/nordic/nrf52_bsim/src/hal_uart.c

@@ -0,0 +1,478 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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.
+ */
+
+#include "os/mynewt.h"
+#include "hal/hal_uart.h"
+#include "bsp/bsp.h"
+
+#ifdef MN_LINUX
+#include <pty.h>
+#endif
+#ifdef MN_OSX
+#include <util.h>
+#endif
+#ifdef MN_FreeBSD
+#include <libutil.h>
+#endif
+#include <ctype.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <assert.h>
+#include <unistd.h>
+#include <string.h>
+#include <termios.h>
+#include <errno.h>
+
+#include "mcu/mcu_sim.h"
+#include "native_uart_cfg_priv.h"
+#include "syscfg/syscfg.h"
+
+#define UART_CNT                2
+
+#if MYNEWT_VAL(CONSOLE_UART_TX_BUF_SIZE)
+#define UART_MAX_BYTES_PER_POLL	MYNEWT_VAL(CONSOLE_UART_TX_BUF_SIZE) - 2
+#else
+#define UART_MAX_BYTES_PER_POLL	64
+#endif
+#define UART_POLLER_STACK_SZ	OS_STACK_ALIGN(1024)
+
+struct uart {
+    int u_open;
+    int u_fd;
+    int u_tx_run;
+    int u_rx_char;
+    hal_uart_rx_char u_rx_func;
+    hal_uart_tx_char u_tx_func;
+    hal_uart_tx_done u_tx_done;
+    void *u_func_arg;
+};
+
+const char *native_uart_dev_strs[UART_CNT];
+
+/*
+ * XXXX should try to use O_ASYNC/SIGIO for byte arrival notification,
+ * so we wouldn't need an OS for pseudo ttys.
+ */
+char *native_uart_log_file = NULL;
+static int uart_log_fd = -1;
+
+static struct uart uarts[UART_CNT];
+static int uart_poller_running;
+static struct os_task uart_poller_task;
+static os_stack_t uart_poller_stack[UART_POLLER_STACK_SZ];
+
+static void
+uart_open_log(void)
+{
+    if (native_uart_log_file && uart_log_fd < 0) {
+        uart_log_fd = open(native_uart_log_file, O_WRONLY | O_CREAT | O_TRUNC,
+                0666);
+        assert(uart_log_fd >= 0);
+    }
+}
+
+static void
+uart_log_data(struct uart *u, int istx, uint8_t data)
+{
+    static struct {
+        struct uart *uart;
+        int istx;
+        uint32_t time;
+        int chars_in_line;
+    } state = {
+            .uart = NULL,
+            .istx = 0
+    };
+    uint32_t now;
+    char tmpbuf[32];
+    int len;
+
+    if (uart_log_fd < 0) {
+        return;
+    }
+    now = os_time_get();
+    if (state.uart) {
+        if (u != state.uart || now != state.time || istx != state.istx) {
+            /*
+             * End current printout.
+             */
+            if (write(uart_log_fd, "\n", 1) != 1) {
+                assert(0);
+            }
+            state.uart = NULL;
+        } else {
+            if (state.chars_in_line == 8) {
+                if (write(uart_log_fd, "\n\t", 2) != 2) {
+                    assert(0);
+                }
+                state.chars_in_line = 0;
+            }
+            len = snprintf(tmpbuf, sizeof(tmpbuf), "%c (%02x) ",
+                    isalnum(data) ? data : '?', data);
+            if (write(uart_log_fd, tmpbuf, len) != len) {
+                assert(0);
+            }
+            state.chars_in_line++;
+        }
+    }
+    if (u && state.uart == NULL) {
+        len = snprintf(tmpbuf, sizeof(tmpbuf), "%u:uart%d %s\n\t%c (%02x) ",
+                now, u - uarts, istx ? "tx" : "rx", isalnum(data) ? data : '?', data);
+        if (write(uart_log_fd, tmpbuf, len) != len) {
+            assert(0);
+        }
+        state.chars_in_line = 1;
+        state.uart = u;
+        state.istx = istx;
+        state.time = now;
+    }
+}
+
+static int
+uart_transmit_char(struct uart *uart)
+{
+    int sr;
+    int rc;
+    char ch;
+
+    OS_ENTER_CRITICAL(sr);
+    rc = uart->u_tx_func(uart->u_func_arg);
+    if (rc < 0) {
+        /*
+         * No more data to send.
+         */
+        uart->u_tx_run = 0;
+        if (uart->u_tx_done) {
+            uart->u_tx_done(uart->u_func_arg);
+        }
+        OS_EXIT_CRITICAL(sr);
+        return 0;
+    }
+    ch = rc;
+    uart_log_data(uart, 1, ch);
+    OS_EXIT_CRITICAL(sr);
+    rc = write(uart->u_fd, &ch, 1);
+    if (rc <= 0) {
+        /* XXX EOF/error, what now? */
+        return -1;
+    }
+    return 0;
+}
+
+static void
+uart_poller(void *arg)
+{
+    int i;
+    int rc;
+    int bytes;
+    int sr;
+    int didwork;
+    unsigned char ch;
+    struct uart *uart;
+
+    while (1) {
+        for (i = 0; i < UART_CNT; i++) {
+            if (!uarts[i].u_open) {
+                continue;
+            }
+            uart = &uarts[i];
+
+            for (bytes = 0; bytes < UART_MAX_BYTES_PER_POLL; bytes++) {
+                didwork = 0;
+                if (uart->u_tx_run) {
+                    uart_transmit_char(uart);
+                    didwork = 1;
+                }
+                if (uart->u_rx_char < 0) {
+                    rc = read(uart->u_fd, &ch, 1);
+                    if (rc == 0) {
+                        /* XXX EOF, what now? */
+                        assert(0);
+                    } else if (rc > 0) {
+                        uart->u_rx_char = ch;
+                    }
+                }
+                if (uart->u_rx_char >= 0) {
+                    OS_ENTER_CRITICAL(sr);
+                    uart_log_data(uart, 0, uart->u_rx_char);
+                    rc = uart->u_rx_func(uart->u_func_arg, uart->u_rx_char);
+                    /* Delivered */
+                    if (rc >= 0) {
+                        uart->u_rx_char = -1;
+                        didwork = 1;
+                    }
+                    OS_EXIT_CRITICAL(sr);
+                }
+                if (!didwork) {
+                    break;
+                }
+            }
+        }
+        uart_log_data(NULL, 0, 0);
+        os_time_delay(OS_TICKS_PER_SEC / 100);
+    }
+}
+
+static void
+set_nonblock(int fd)
+{
+    int flags;
+
+    flags = fcntl(fd, F_GETFL);
+    if (flags == -1) {
+        const char msg[] = "fcntl(F_GETFL) fail";
+        write(1, msg, sizeof(msg));
+        return;
+    }
+    if (fcntl(fd, F_SETFL, flags | O_NONBLOCK) < 0) {
+        const char msg[] = "fcntl(F_SETFL) fail";
+        write(1, msg, sizeof(msg));
+        return;
+    }
+}
+
+static int
+uart_pty_set_attr(int fd)
+{
+    struct termios tios;
+
+    if (tcgetattr(fd, &tios)) {
+        const char msg[] = "tcgetattr() failed";
+        write(1, msg, sizeof(msg));
+        return -1;
+    }
+
+    tios.c_cflag &= ~(CSIZE | CSTOPB | PARENB);
+    tios.c_cflag |= CS8 | CREAD;
+    tios.c_iflag = IGNPAR;
+    tios.c_oflag = 0;
+    tios.c_lflag = 0;
+    if (tcsetattr(fd, TCSAFLUSH, &tios) < 0) {
+        const char msg[] = "tcsetattr() failed";
+        write(1, msg, sizeof(msg));
+        return -1;
+    }
+    return 0;
+}
+
+static int
+uart_pty(int port)
+{
+    int fd;
+    int loop_slave;
+    char pty_name[32];
+    char msg[64];
+
+    if (openpty(&fd, &loop_slave, pty_name, NULL, NULL) < 0) {
+        const char msg[] = "openpty() failed";
+        write(1, msg, sizeof(msg));
+        return -1;
+    }
+
+    if (uart_pty_set_attr(loop_slave)) {
+        goto err;
+    }
+
+    snprintf(msg, sizeof(msg), "uart%d at %s\n", port, pty_name);
+    write(1, msg, strlen(msg));
+    return fd;
+    err:
+    close(fd);
+    close(loop_slave);
+    return -1;
+}
+
+/**
+ * Opens an external device terminal (/dev/cu.<...>).
+ */
+static int
+uart_open_dev(int port, int32_t baudrate, uint8_t databits,
+              uint8_t stopbits, enum hal_uart_parity parity,
+              enum hal_uart_flow_ctl flow_ctl)
+{
+    const char *filename;
+    int fd;
+    int rc;
+
+    filename = native_uart_dev_strs[port];
+    assert(filename != NULL);
+
+    fd = open(filename, O_RDWR);
+    if (fd < 0) {
+        return -1;
+    }
+
+    rc = uart_dev_set_attr(fd, baudrate, databits,
+            stopbits, parity, flow_ctl);
+    if (rc != 0) {
+        close(fd);
+        return rc;
+    }
+
+    dprintf(1, "uart%d at %s\n", port, filename);
+
+    return fd;
+}
+
+void
+hal_uart_start_tx(int port)
+{
+    int sr;
+
+    if (port >= UART_CNT || uarts[port].u_open == 0) {
+        return;
+    }
+    OS_ENTER_CRITICAL(sr);
+    uarts[port].u_tx_run = 1;
+    if (!os_started()) {
+        /*
+         * XXX this is a hack.
+         */
+        uart_transmit_char(&uarts[port]);
+    }
+    OS_EXIT_CRITICAL(sr);
+}
+
+void
+hal_uart_start_rx(int port)
+{
+    /* nothing to do here */
+}
+
+void
+hal_uart_blocking_tx(int port, uint8_t data)
+{
+    if (port >= UART_CNT || uarts[port].u_open == 0) {
+        return;
+    }
+
+    /* XXX: Count statistics and add error checking here. */
+    (void) write(uarts[port].u_fd, &data, sizeof(data));
+}
+
+int
+hal_uart_init_cbs(int port, hal_uart_tx_char tx_func, hal_uart_tx_done tx_done,
+                  hal_uart_rx_char rx_func, void *arg)
+{
+    struct uart *uart;
+    int rc;
+
+    if (port >= UART_CNT) {
+        return -1;
+    }
+
+    uart = &uarts[port];
+    if (uart->u_open) {
+        return -1;
+    }
+    uart->u_tx_func = tx_func;
+    uart->u_tx_done = tx_done;
+    uart->u_rx_func = rx_func;
+    uart->u_func_arg = arg;
+    uart->u_rx_char = -1;
+
+    if (!uart_poller_running) {
+        uart_poller_running = 1;
+        rc = os_task_init(&uart_poller_task, "uartpoll", uart_poller, NULL,
+                MYNEWT_VAL(MCU_UART_POLLER_PRIO), OS_WAIT_FOREVER, uart_poller_stack,
+                UART_POLLER_STACK_SZ);
+        assert(rc == 0);
+    }
+    return 0;
+}
+
+int
+hal_uart_config(int port, int32_t baudrate, uint8_t databits, uint8_t stopbits,
+                enum hal_uart_parity parity, enum hal_uart_flow_ctl flow_ctl)
+{
+    struct uart *uart;
+
+    if (port >= UART_CNT) {
+        return -1;
+    }
+
+    uart = &uarts[port];
+    if (uart->u_open) {
+        return -1;
+    }
+
+    if (native_uart_dev_strs[port] == NULL) {
+        uart->u_fd = uart_pty(port);
+    } else {
+        uart->u_fd = uart_open_dev(port, baudrate, databits, stopbits,
+                parity, flow_ctl);
+    }
+
+    if (uart->u_fd < 0) {
+        return -1;
+    }
+    set_nonblock(uart->u_fd);
+
+
+    uart_open_log();
+    uart->u_open = 1;
+    return 0;
+}
+
+int
+hal_uart_close(int port)
+{
+    struct uart *uart;
+    int rc;
+
+    if (port >= UART_CNT) {
+        rc = -1;
+        goto err;
+    }
+
+    uart = &uarts[port];
+    if (!uart->u_open) {
+        rc = -1;
+        goto err;
+    }
+
+    close(uart->u_fd);
+
+    uart->u_open = 0;
+    return (0);
+    err:
+    return (rc);
+}
+
+int
+hal_uart_init(int port, void *arg)
+{
+    return (0);
+}
+
+int
+uart_set_dev(int port, const char *dev_str)
+{
+    if (port < 0 || port >= UART_CNT) {
+        return SYS_EINVAL;
+    }
+
+    if (uarts[port].u_open) {
+        return SYS_EBUSY;
+    }
+
+    native_uart_dev_strs[port] = dev_str;
+
+    return 0;
+}

+ 36 - 0
babblesim/hw/mcu/nordic/nrf52_bsim/src/hal_watchdog.c

@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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.
+ */
+
+#include "hal/hal_watchdog.h"
+
+int
+hal_watchdog_init(uint32_t expire_msecs)
+{
+    return (0);
+}
+
+void
+hal_watchdog_enable(void)
+{
+}
+
+void
+hal_watchdog_tickle(void)
+{
+}

+ 248 - 0
babblesim/hw/mcu/nordic/nrf52_bsim/src/native_uart_cfg.c

@@ -0,0 +1,248 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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.
+ */
+
+#include <assert.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <inttypes.h>
+#include <termios.h>
+
+/* B0 defined in bits/termios.h collides with nrfx/mdk/nrf52.h */
+#undef B0
+
+#include "os/mynewt.h"
+#include "native_uart_cfg_priv.h"
+
+/* uint64 is used here to accommodate speed_t, whatever that is. */
+static const uint64_t uart_baud_table[][2] = {
+#ifdef B50
+    { 50, B50 },
+#endif
+#ifdef B75
+    { 75, B75 },
+#endif
+#ifdef B110
+    { 110, B110 },
+#endif
+#ifdef B134
+    { 134, B134 },
+#endif
+#ifdef B150
+    { 150, B150 },
+#endif
+#ifdef B200
+    { 200, B200 },
+#endif
+#ifdef B300
+    { 300, B300 },
+#endif
+#ifdef B600
+    { 600, B600 },
+#endif
+#ifdef B1200
+    { 1200, B1200 },
+#endif
+#ifdef B1800
+    { 1800, B1800 },
+#endif
+#ifdef B2400
+    { 2400, B2400 },
+#endif
+#ifdef B4800
+    { 4800, B4800 },
+#endif
+#ifdef B9600
+    { 9600, B9600 },
+#endif
+#ifdef B19200
+    { 19200, B19200 },
+#endif
+#ifdef B38400
+    { 38400, B38400 },
+#endif
+#ifdef B57600
+    { 57600, B57600 },
+#endif
+#ifdef B115200
+    { 115200, B115200 },
+#endif
+#ifdef B230400
+    { 230400, B230400 },
+#endif
+#ifdef B460800
+    { 460800, B460800 },
+#endif
+#ifdef B500000
+    { 500000, B500000 },
+#endif
+#ifdef B576000
+    { 576000, B576000 },
+#endif
+#ifdef B921600
+    { 921600, B921600 },
+#endif
+#ifdef B1000000
+    { 1000000, B1000000 },
+#endif
+#ifdef B1152000
+    { 1152000, B1152000 },
+#endif
+#ifdef B1500000
+    { 1500000, B1500000 },
+#endif
+#ifdef B2000000
+    { 2000000, B2000000 },
+#endif
+#ifdef B2500000
+    { 2500000, B2500000 },
+#endif
+#ifdef B3000000
+    { 3000000, B3000000 },
+#endif
+#ifdef B3500000
+    { 3500000, B3500000 },
+#endif
+#ifdef B3710000
+    { 3710000, B3710000 },
+#endif
+#ifdef B4000000
+    { 4000000, B4000000 },
+#endif
+};
+#define UART_BAUD_TABLE_SZ (sizeof uart_baud_table / sizeof uart_baud_table[0])
+
+/**
+ * Returns 0 on failure.
+ */
+speed_t
+uart_baud_to_speed(int_least32_t baud)
+{
+    int i;
+
+    for (i = 0; i < UART_BAUD_TABLE_SZ; i++) {
+        if (uart_baud_table[i][0] == baud) {
+            return uart_baud_table[i][1];
+        }
+    }
+
+    return 0;
+}
+
+/**
+ * Configures an external device terminal (/dev/cu.<...>).
+ */
+int
+uart_dev_set_attr(int fd, int32_t baudrate, uint8_t databits,
+                  uint8_t stopbits, enum hal_uart_parity parity,
+                  enum hal_uart_flow_ctl flow_ctl)
+{
+    struct termios tty;
+    speed_t speed;
+    int rc;
+
+    assert(fd >= 0);
+
+    memset(&tty, 0, sizeof(tty));
+    cfmakeraw(&tty);
+
+    speed = uart_baud_to_speed(baudrate);
+    if (speed == 0) {
+        fprintf(stderr, "invalid baud rate: %d\n", (int)baudrate);
+        assert(0);
+    }
+
+    tty.c_cflag |= (speed | CLOCAL | CREAD);
+
+    /* Set flow control. */
+    switch (flow_ctl) {
+    case HAL_UART_FLOW_CTL_NONE:
+        tty.c_cflag &= ~CRTSCTS;
+        break;
+
+    case HAL_UART_FLOW_CTL_RTS_CTS:
+        tty.c_cflag |= CRTSCTS;
+        break;
+
+    default:
+        fprintf(stderr, "invalid flow control setting: %d\n", flow_ctl);
+        return -1;
+    }
+
+    errno = 0;
+    rc = cfsetospeed(&tty, speed);
+    if (rc != 0) {
+        fprintf(stderr, "cfsetospeed failed; %d (%s) baudrate=%d\n",
+                errno, strerror(errno), (int)baudrate);
+        return -1;
+    }
+
+    errno = 0;
+    rc = cfsetispeed(&tty, speed);
+    if (rc != 0) {
+        fprintf(stderr, "cfsetispeed failed; %d (%s) baudrate=%d\n",
+                errno, strerror(errno), (int)baudrate);
+        return -1;
+    }
+
+    switch (databits) {
+    case 7:
+        tty.c_cflag |= CS7;
+
+        switch (parity) {
+        case HAL_UART_PARITY_ODD:
+            tty.c_cflag |= PARENB;
+            tty.c_cflag |= PARODD;
+            tty.c_cflag &= ~CSTOPB;
+            tty.c_cflag &= ~CSIZE;
+            break;
+
+        case HAL_UART_PARITY_EVEN:
+            tty.c_cflag |= PARENB;
+            tty.c_cflag &= ~PARODD;
+            tty.c_cflag &= ~CSTOPB;
+            tty.c_cflag &= ~CSIZE;
+            break;
+
+        default:
+            return SYS_EINVAL;
+        }
+
+    case 8:
+        if (parity != HAL_UART_PARITY_NONE) {
+            return SYS_EINVAL;
+        }
+        tty.c_cflag |= CS8;
+        tty.c_cflag &= ~PARENB;
+        tty.c_cflag &= ~CSTOPB;
+        tty.c_cflag &= ~CSIZE;
+        break;
+
+    default:
+        return SYS_EINVAL;
+    }
+
+    rc = tcsetattr(fd, TCSANOW, &tty);
+    if (rc != 0) {
+        fprintf(stderr, "tcsetattr failed; %d (%s)\n", errno, strerror(errno));
+        return -1;
+    }
+
+    return 0;
+}

+ 31 - 0
babblesim/hw/mcu/nordic/nrf52_bsim/src/native_uart_cfg_priv.h

@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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 H_NATIVE_UART_CFG_PRIV_
+#define H_NATIVE_UART_CFG_PRIV_
+
+#include <termios.h>
+#include "hal/hal_uart.h"
+
+speed_t uart_baud_to_speed(int_least32_t baud);
+int uart_dev_set_attr(int fd, int32_t baudrate, uint8_t databits,
+                      uint8_t stopbits, enum hal_uart_parity parity,
+                      enum hal_uart_flow_ctl flow_ctl);
+
+#endif

+ 103 - 0
babblesim/hw/mcu/nordic/nrf52_bsim/src/nrf52_clock.c

@@ -0,0 +1,103 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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
+ *
+ *  http://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.
+ */
+#include <assert.h>
+#include <stdint.h>
+#include <hal/nrf_clock.h>
+#include <time_machine.h>
+#include "mcu/nrf52_hal.h"
+#include "nrfx.h"
+#include "syscfg/syscfg.h"
+#include "os/os.h"
+
+static uint8_t nrf52_clock_hfxo_refcnt;
+
+/**
+ * Request HFXO clock be turned on. Note that each request must have a
+ * corresponding release.
+ *
+ * @return int 0: hfxo was already on. 1: hfxo was turned on.
+ */
+int
+nrf52_clock_hfxo_request(void)
+{
+    int started;
+    uint32_t ctx;
+
+#if MYNEWT_VAL_CHOICE(MCU_HFCLK_SOURCE, HFINT)
+    /* Cannot enable/disable hfxo if it is not present */
+    assert(0);
+#endif
+
+    started = 0;
+    __HAL_DISABLE_INTERRUPTS(ctx);
+    assert(nrf52_clock_hfxo_refcnt < 0xff);
+    if (nrf52_clock_hfxo_refcnt == 0) {
+        /* Check the current STATE and SRC of HFCLK */
+        if ((NRF_CLOCK->HFCLKSTAT &
+             (CLOCK_HFCLKSTAT_SRC_Msk | CLOCK_HFCLKSTAT_STATE_Msk)) !=
+            (CLOCK_HFCLKSTAT_SRC_Xtal << CLOCK_HFCLKSTAT_SRC_Pos |
+             CLOCK_HFCLKSTAT_STATE_Running << CLOCK_HFCLKSTAT_STATE_Pos)) {
+            NRF_CLOCK->EVENTS_HFCLKSTARTED = 0;
+            nrf_clock_task_trigger(NRF_CLOCK, NRF_CLOCK_TASK_HFCLKSTART);
+            while (!NRF_CLOCK->EVENTS_HFCLKSTARTED) {
+#if BABBLESIM
+                tm_tick();
+#endif
+            }
+        }
+        started = 1;
+    }
+    ++nrf52_clock_hfxo_refcnt;
+    __HAL_ENABLE_INTERRUPTS(ctx);
+
+    return started;
+}
+
+/**
+ * Release the HFXO. This means that the caller no longer needs the HFXO to be
+ * turned on. Each call to release should have been preceeded by a corresponding
+ * call to request the HFXO
+ *
+ *
+ * @return int 0: HFXO not stopped by this call (others using it) 1: HFXO
+ *         stopped.
+ */
+int
+nrf52_clock_hfxo_release(void)
+{
+    int stopped;
+    uint32_t ctx;
+
+#if MYNEWT_VAL_CHOICE(MCU_HFCLK_SOURCE, HFINT)
+    /* Cannot enable/disable hfxo if it is not present */
+    assert(0);
+#endif
+
+    stopped = 0;
+    __HAL_DISABLE_INTERRUPTS(ctx);
+    assert(nrf52_clock_hfxo_refcnt != 0);
+    --nrf52_clock_hfxo_refcnt;
+    if (nrf52_clock_hfxo_refcnt == 0) {
+        nrf_clock_task_trigger(NRF_CLOCK, NRF_CLOCK_TASK_HFCLKSTOP);
+        stopped = 1;
+    }
+    __HAL_ENABLE_INTERRUPTS(ctx);
+
+    return stopped;
+}

+ 37 - 0
babblesim/hw/mcu/nordic/nrf52_bsim/src/system_nrf52.c

@@ -0,0 +1,37 @@
+/* Copyright (c) 2012 ARM LIMITED
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ *   * Redistributions of source code must retain the above copyright notice, this
+ *     list of conditions and the following disclaimer.
+ *
+ *   * Redistributions in binary form must reproduce the above copyright notice,
+ *     this list of conditions and the following disclaimer in the documentation
+ *     and/or other materials provided with the distribution.
+ *
+ *   * Neither the name of ARM nor the names of its contributors may be used to
+ *     endorse or promote products derived from this software without specific
+ *     prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include "mcu/cmsis_nvic.h"
+#include "nrf.h"
+
+
+void SystemInit(void)
+{
+}

+ 526 - 0
babblesim/hw/mcu/nordic/nrf52_bsim/syscfg.yml

@@ -0,0 +1,526 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+
+syscfg.defs:
+    MCU_TARGET:
+        description: >
+            Specifies target MCU, shall be set by BSP.
+        value:
+        restrictions:
+            - $notnull
+        choices:
+            - nRF52810
+            - nRF52811
+            - nRF52832
+            - nRF52840
+
+    MCU_FLASH_MIN_WRITE_SIZE:
+        description: >
+            Specifies the required alignment for internal flash writes.
+            Used internally by the newt tool.
+        value: 1
+
+    MCU_DCDC_ENABLED:
+        description: >
+            Specifies whether or not to enable DC/DC regulator. This requires
+            external circuitry so is defined to be zero by default and
+            expected to be overridden by the BSP.
+        value: 0
+
+    MCU_HFCLK_SOURCE:
+        description: >
+            Selected source for high frequency clock (HFCLK).
+            Selecting HFXO will still mostly use the HFINT but will switch to HFXO when requested (BLE, certain timers, etc...)
+            Selecting HFINT should only be used in the case where an external 32MHz crystal oscillator is not present.
+        value: HFXO
+        choices:
+            - HFXO
+            - HFINT
+        restrictions:
+            - '(MCU_HFCLK_SOURCE == "HFXO") || (MCU_LFCLK_SOURCE != "LFSYNTH")'
+
+    MCU_LFCLK_SOURCE:
+        description: >
+            Selected source for low frequency clock (LFCLK).
+        value:
+        choices:
+            - LFRC      # 32.768 kHz RC oscillator
+            - LFXO      # 32.768 kHz crystal oscillator
+            - LFSYNTH   # 32.768 kHz synthesized from HFCLK
+
+    MCU_I2C_RECOVERY_DELAY_USEC:
+        description: >
+            Time to wait for activity on SCL line after triggering start task
+            before restarting TWI controller. This is to recover from state
+            where controller is unresponsive due to glitch on I2C bus.
+            Note: Default value seems to work fine, but may need to be tuned.
+        value: 100
+
+    MCU_BUS_DRIVER_I2C_USE_TWIM:
+        description: >
+            Enables usage of i2c_nrf52_twim bus driver for I2C.
+            If disabled, standard i2c_hal driver is used.
+        value: 0
+
+    MCU_GPIO_USE_PORT_EVENT:
+        description: >
+            When enabled, hal_gpio will use GPIOTE PORT event instead of PIN
+            events for interrupts. This mode may be less accurate (i.e. pulse
+            length needs to be longer in order to be detected) but it reduces
+            power consumption since it does not require HFCLK to be running.
+            Refer to nRF52xxx Product Specification document for more details.
+        value: 0
+
+    MCU_DEBUG_IGNORE_BKPT:
+       description: >
+            When enabled, asm(bkpt) will be ignored. If not set, it will hit
+            the breakpoint wherever it gets called, For example, reset and crash
+       value: 0
+
+
+# MCU peripherals definitions
+    I2C_0:
+        description: 'Enable nRF52xxx I2C (TWI) 0'
+        value: 0
+        restrictions:
+            - '!(SPI_0_MASTER && ((MCU_TARGET == "nrf52832") || (MCU_TARGET == "nrf52840")))'
+            - '!(SPI_0_SLAVE  && ((MCU_TARGET == "nrf52832") || (MCU_TARGET == "nrf52840")))'
+            - '!(SPI_1_MASTER && (MCU_TARGET == "nrf52811"))'
+            - '!(SPI_1_SLAVE  && (MCU_TARGET == "nrf52811"))'
+    I2C_0_PIN_SCL:
+        description: 'SCL pin for I2C_0'
+        value: ''
+    I2C_0_PIN_SDA:
+        description: 'SDA pin for I2C_0'
+        value: ''
+    I2C_0_FREQ_KHZ:
+        description: 'Frequency [kHz] for I2C_0'
+        value: 100
+
+    I2C_1:
+        description: 'Enable nRF52xxx I2C (TWI) 1'
+        value: 0
+        restrictions:
+            - "!SPI_1_MASTER"
+            - "!SPI_1_SLAVE"
+    I2C_1_PIN_SCL:
+        description: 'SCL pin for I2C_1'
+        value: ''
+    I2C_1_PIN_SDA:
+        description: 'SDA pin for I2C_1'
+        value: ''
+    I2C_1_FREQ_KHZ:
+        description: 'Frequency [kHz] for I2C_1'
+        value: 100
+
+    SPI_0_MASTER:
+        description: 'Enable nRF52xxx SPI Master 0'
+        value: 0
+        restrictions:
+            - "!SPI_0_SLAVE"
+            - '!(I2C_0 && ((MCU_TARGET == "nrf52832") || (MCU_TARGET == "nrf52840")))'
+    SPI_0_MASTER_PIN_SCK:
+        description: 'SCK pin for SPI_0_MASTER'
+        value: ''
+    SPI_0_MASTER_PIN_MOSI:
+        description: 'MOSI pin for SPI_0_MASTER'
+        value: ''
+    SPI_0_MASTER_PIN_MISO:
+        description: 'MISO pin for SPI_0_MASTER'
+        value: ''
+
+    SPI_0_SLAVE:
+        description: 'Enable nRF52xxx SPI Slave 0'
+        value: 0
+        restrictions:
+            - "!SPI_0_MASTER"
+            - '!(I2C_0 && ((MCU_TARGET == "nrf52832") || (MCU_TARGET == "nrf52840")))'
+    SPI_0_SLAVE_PIN_SCK:
+        description: 'SCK pin for SPI_0_SLAVE'
+        value: ''
+    SPI_0_SLAVE_PIN_MOSI:
+        description: 'MOSI pin for SPI_0_SLAVE'
+        value: ''
+    SPI_0_SLAVE_PIN_MISO:
+        description: 'MISO pin for SPI_0_SLAVE'
+        value: ''
+    SPI_0_SLAVE_PIN_SS:
+        description: 'SS pin for SPI_0_SLAVE'
+        value: ''
+
+    SPI_1_MASTER:
+        description: 'Enable nRF52xxx SPI Master 1'
+        value: 0
+        restrictions:
+            - "!SPI_1_SLAVE"
+            - '!(I2C_1 && ((MCU_TARGET == "nrf52832") || (MCU_TARGET == "nrf52840")))'
+            - '!(I2C_0 && ((MCU_TARGET == "nrf52811")))'
+    SPI_1_MASTER_PIN_SCK:
+        description: 'SCK pin for SPI_1_MASTER'
+        value: ''
+    SPI_1_MASTER_PIN_MOSI:
+        description: 'MOSI pin for SPI_1_MASTER'
+        value: ''
+    SPI_1_MASTER_PIN_MISO:
+        description: 'MISO pin for SPI_1_MASTER'
+        value: ''
+
+    SPI_1_SLAVE:
+        description: 'Enable nRF52xxx SPI Slave 1'
+        value: 0
+        restrictions:
+            - "!SPI_1_MASTER"
+            - '!(I2C_1 && ((MCU_TARGET == "nrf52832") || (MCU_TARGET == "nrf52840")))'
+            - '!(I2C_0 && ((MCU_TARGET == "nrf52811")))'
+    SPI_1_SLAVE_PIN_SCK:
+        description: 'SCK pin for SPI_1_SLAVE'
+        value: ''
+    SPI_1_SLAVE_PIN_MOSI:
+        description: 'MOSI pin for SPI_1_SLAVE'
+        value: ''
+    SPI_1_SLAVE_PIN_MISO:
+        description: 'MISO pin for SPI_1_SLAVE'
+        value: ''
+    SPI_1_SLAVE_PIN_SS:
+        description: 'SS pin for SPI_1_SLAVE'
+        value: ''
+
+    SPI_2_MASTER:
+        description: 'Enable nRF52xxx SPI Master 2'
+        value: 0
+        restrictions:
+            - "!SPI_2_SLAVE"
+    SPI_2_MASTER_PIN_SCK:
+        description: 'SCK pin for SPI_2_MASTER'
+        value: ''
+    SPI_2_MASTER_PIN_MOSI:
+        description: 'MOSI pin for SPI_2_MASTER'
+        value: ''
+    SPI_2_MASTER_PIN_MISO:
+        description: 'MISO pin for SPI_2_MASTER'
+        value: ''
+
+    SPI_2_SLAVE:
+        description: 'Enable nRF52xxx SPI Slave 2'
+        value: 0
+        restrictions:
+            - "!SPI_2_MASTER"
+    SPI_2_SLAVE_PIN_SCK:
+        description: 'SCK pin for SPI_2_SLAVE'
+        value: ''
+    SPI_2_SLAVE_PIN_MOSI:
+        description: 'MOSI pin for SPI_2_SLAVE'
+        value: ''
+    SPI_2_SLAVE_PIN_MISO:
+        description: 'MISO pin for SPI_2_SLAVE'
+        value: ''
+    SPI_2_SLAVE_PIN_SS:
+        description: 'SS pin for SPI_2_SLAVE'
+        value: ''
+
+    SPI_3_MASTER:
+        description: 'Enable nRF52xxx SPI Master 3'
+        value: 0
+        restrictions:
+            - 'MCU_TARGET == "nRF52840" || !SPI_3_MASTER'
+    SPI_3_MASTER_PIN_SCK:
+        description: 'SCK pin for SPI_3_MASTER'
+        value: ''
+    SPI_3_MASTER_PIN_MOSI:
+        description: 'MOSI pin for SPI_3_MASTER'
+        value: ''
+    SPI_3_MASTER_PIN_MISO:
+        description: 'MISO pin for SPI_3_MASTER'
+        value: ''
+
+    ADC_0:
+        description: 'Enable nRF52xxx ADC 0'
+        value:  0
+
+    ADC_0_REFMV_0:
+        description: 'reference mV in AREF0 if used'
+        value: 0
+
+    PWM_0:
+        description: 'Enable nRF52xxx PWM 0'
+        value: 0
+    PWM_1:
+        description: 'Enable nRF52xxx PWM 1'
+        value: 0
+    PWM_2:
+        description: 'Enable nRF52xxx PWM 2'
+        value: 0
+    PWM_3:
+        description: 'Enable nRF52xxx PWM 3'
+        value: 0
+        restrictions:
+            - 'MCU_TARGET == "nRF52840" || !PWM_3'
+
+    TRNG:
+        description: 'Enable nRF52xxx TRNG'
+        value: 0
+
+    CRYPTO:
+        description: 'Enable nRF52xxx CRYPTO'
+        value: 0
+
+    UART_0:
+        description: 'Enable nRF52xxx UART0'
+        value: 1
+    UART_0_PIN_TX:
+        description: 'TX pin for UART0'
+        value: ''
+    UART_0_PIN_RX:
+        description: 'RX pin for UART0'
+        value: ''
+    UART_0_PIN_RTS:
+        description: 'RTS pin for UART0'
+        value: -1
+    UART_0_PIN_CTS:
+        description: 'CTS pin for UART0'
+        value: -1
+
+    UART_1:
+        description: 'Enable nRF52xxx UART1'
+        value: 0
+        restrictions:
+            - 'MCU_TARGET == "nRF52840" || !UART_1'
+    UART_1_PIN_TX:
+        description: 'TX pin for UART1'
+        value: ''
+    UART_1_PIN_RX:
+        description: 'RX pin for UART1'
+        value: ''
+    UART_1_PIN_RTS:
+        description: 'RTS pin for UART1'
+        value: -1
+    UART_1_PIN_CTS:
+        description: 'CTS pin for UART1'
+        value: -1
+
+    TEMP:
+        description: 'Enable nRF52xxx internal temperature mesurement'
+        value:  0
+
+    TIMER_0:
+        description: 'Enable nRF52xxx Timer 0'
+        value:  1
+    TIMER_1:
+        description: 'Enable nRF52xxx Timer 1'
+        value:  0
+    TIMER_2:
+        description: 'Enable nRF52xxx Timer 2'
+        value:  0
+    TIMER_3:
+        description: 'Enable nRF52xxx Timer 3'
+        value:  0
+    TIMER_4:
+        description: 'Enable nRF52xxx Timer 4'
+        value:  0
+    TIMER_5:
+        description: 'Enable nRF52xxx RTC 0'
+        value:  0
+
+    QSPI_ENABLE:
+        description: 'NRF52 QSPI'
+        value: 0
+
+    QSPI_READOC:
+        description: >
+            QSPI Command to use
+            0 - 0x09 Fast Read
+            1 - 0x3B Fast Read Dual Output
+            2 - 0xBB Fast Read Dual I/O
+            3 - 0x6B Fast Read Quad Output
+            4 - 0xEB Fast Read Quad I/O
+        value: 0
+    QSPI_WRITEOC:
+        description: >
+            QSPI Command to use
+            0 - 0x02 Page program
+            1 - 0xA2 Page program Dual Data
+            2 - 0x32 Page program Quad Data
+            3 - 0x38 Page program Quad I/O
+        value: 0
+    QSPI_ADDRMODE:
+        description: 'Address lentgh 0=24 bits, 1=32 bits'
+        value: 0
+    QSPI_DPMCONFIG:
+        description: 'Deep power mode enable'
+        value: 0
+    QSPI_SCK_DELAY:
+        description: >
+            Minimum amount of time that the CSN pin must stay high
+            before it can go low again. Value is specified in number of 16
+            MHz periods (62.5 ns).
+        value: 0
+    QSPI_SCK_FREQ:
+        description: '32MHz clock divider (0-31). Clock = 32MHz / (1+divider)'
+        value: 0
+    QSPI_SPI_MODE:
+        description: 'SPI 0=Mode0 or 1=Mode3'
+        value: 0
+
+    QSPI_FLASH_SECTOR_SIZE:
+        description: 'QSPI sector size. In most cases it should be 4096.'
+        value: 0
+    QSPI_FLASH_PAGE_SIZE:
+        description: >
+            QSPI page size. Writes can only be performed to one page at a time.
+            In most cases it should be 256.
+        value: 0
+
+    QSPI_FLASH_SECTOR_COUNT:
+        description: 'QSPI sector count'
+        value: -1
+    QSPI_PIN_CS:
+        description: 'CS pin for QSPI'
+        value: -1
+    QSPI_PIN_SCK:
+        description: 'SCK pin for QSPI'
+        value: -1
+    QSPI_PIN_DIO0:
+        description: 'DIO0 pin for QSPI'
+        value: -1
+    QSPI_PIN_DIO1:
+        description: 'DIO1 pin for QSPI'
+        value: -1
+    QSPI_PIN_DIO2:
+        description: 'DIO2 pin for QSPI'
+        value: -1
+    QSPI_PIN_DIO3:
+        description: 'DIO3 pin for QSPI'
+        value: -1
+
+    NFC_PINS_AS_GPIO:
+        description: 'Use NFC pins as GPIOs instead of NFC functionality'
+        value: 1
+
+    GPIO_AS_PIN_RESET:
+        description: 'Enable pin reset'
+        value: 0
+
+# Deprecated settings
+
+    MCU_NRF52832:
+        description: Use MCU_TARGET instead
+        value: 0
+        restrictions:
+            - "!MCU_NRF52840"
+        deprecated: 1
+    MCU_NRF52840:
+        description: Use MCU_TARGET instead
+        value: 0
+        restrictions:
+            - "!MCU_NRF52832"
+        deprecated: 1
+
+    XTAL_32768:
+        description: Use MCU_LFCLK_SOURCE instead
+        value: 0
+        restrictions:
+            - "!XTAL_RC"
+            - "!XTAL_32768_SYNTH"
+        deprecated: 1
+    XTAL_RC:
+        description: Use MCU_LFCLK_SOURCE instead
+        value: 0
+        restrictions:
+            - "!XTAL_32768"
+            - "!XTAL_32768_SYNTH"
+        deprecated: 1
+    XTAL_32768_SYNTH:
+        description: Use MCU_LFCLK_SOURCE instead
+        value: 0
+        restrictions:
+            - "!XTAL_32768"
+            - "!XTAL_RC"
+        deprecated: 1
+
+    MCU_NATIVE_USE_SIGNALS:
+        description: >
+            Whether to use POSIX signals to implement context switches.  Valid
+            values are as follows:
+                1: More correctness; less stability.  The OS tick timer will
+                   cause a high-priority task to preempt a low-priority task.
+                   This causes stability issues because a task can be preempted
+                   while it is in the middle of a system call, potentially
+                   causing deadlock or memory corruption.
+
+                0: Less correctness; more stability.  The OS tick timer only
+                   runs while the idle task is active.  Therefore, a sleeping
+                   high-priority task will not preempt a low-priority task due
+                   to a timing event (e.g., delay or callout expired).
+                   However, this version of sim does not suffer from the
+                   stability issues that affect the "signals" implementation.
+
+            Unit tests should use 1.  Long-running sim processes should use 0.
+
+        value: 1
+    MCU_NATIVE:
+        description: >
+            Set to indicate that we are using native mcu.
+        value: 1
+    MCU_FLASH_STYLE_ST:
+        description: Emulated flash layout is similar to one in STM32.
+        value: 0
+        restrictions:
+            - "!MCU_FLASH_STYLE_NORDIC"
+    MCU_FLASH_STYLE_NORDIC:
+        description: >
+            Emulated flash layout is similar to one in NRF51/2 and SAMD21.
+        value: 1
+        restrictions:
+            - "!MCU_FLASH_STYLE_ST"
+    MCU_UART_POLLER_PRIO:
+        description: 'Priority of native UART poller task.'
+        type: task_priority
+        value: 1
+    MCU_TIMER_POLLER_PRIO:
+        description: 'Priority of native HAL timer task.'
+        type: task_priority
+        value: 0
+
+syscfg.vals:
+    OS_TICKS_PER_SEC: 128
+
+syscfg.vals.MCU_NRF52832:
+    MCU_TARGET: nRF52832
+syscfg.vals.MCU_NRF52840:
+    MCU_TARGET: nRF52840
+
+syscfg.vals.XTAL_32768:
+    MCU_LFCLK_SOURCE: LFXO
+syscfg.vals.XTAL_RC:
+    MCU_LFCLK_SOURCE: LFRC
+syscfg.vals.XTAL_32768_SYNTH:
+    MCU_LFCLK_SOURCE: LFSYNTH
+
+syscfg.restrictions:
+    - "!I2C_0 || (I2C_0_PIN_SCL && I2C_0_PIN_SDA)"
+    - "!I2C_1 || (I2C_1_PIN_SCL && I2C_1_PIN_SDA)"
+    - "!SPI_0_MASTER || (SPI_0_MASTER_PIN_SCK && SPI_0_MASTER_PIN_MOSI && SPI_0_MASTER_PIN_MISO)"
+    - "!SPI_1_MASTER || (SPI_1_MASTER_PIN_SCK && SPI_1_MASTER_PIN_MOSI && SPI_1_MASTER_PIN_MISO)"
+    - "!SPI_2_MASTER || (SPI_2_MASTER_PIN_SCK && SPI_2_MASTER_PIN_MOSI && SPI_2_MASTER_PIN_MISO)"
+    - "!SPI_3_MASTER || (SPI_3_MASTER_PIN_SCK && SPI_3_MASTER_PIN_MOSI && SPI_3_MASTER_PIN_MISO)"
+    - "!SPI_0_SLAVE || (SPI_0_SLAVE_PIN_SCK && SPI_0_SLAVE_PIN_MOSI && SPI_0_SLAVE_PIN_MISO && SPI_0_SLAVE_PIN_SS)"
+    - "!SPI_1_SLAVE || (SPI_1_SLAVE_PIN_SCK && SPI_1_SLAVE_PIN_MOSI && SPI_1_SLAVE_PIN_MISO && SPI_1_SLAVE_PIN_SS)"
+    - "!SPI_2_SLAVE || (SPI_2_SLAVE_PIN_SCK && SPI_2_SLAVE_PIN_MOSI && SPI_2_SLAVE_PIN_MISO && SPI_2_SLAVE_PIN_SS)"
+    - "!UART_0 || (UART_0_PIN_TX && UART_0_PIN_RX)"
+    - "!UART_1 || (UART_1_PIN_TX && UART_1_PIN_RX)"
+    - "(OS_TICKS_PER_SEC == 128 || OS_TICKS_PER_SEC == 256 || OS_TICKS_PER_SEC == 512 || OS_TICKS_PER_SEC == 1024)"

+ 3 - 0
babblesim/sdk/.gitignore

@@ -0,0 +1,3 @@
+components
+nrfx
+src

+ 47 - 0
babblesim/sdk/pkg.yml

@@ -0,0 +1,47 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+
+pkg.name: babblesim/sdk
+pkg.type: sdk
+pkg.description: External files required to build BabbleSim
+pkg.author: "Apache Mynewt <dev@mynewt.apache.org>"
+pkg.homepage: "https://mynewt.apache.org/"
+
+pkg.cflags: -std=gnu99
+
+pkg.include_dirs:
+  - components/ext_NRF52_hw_models/src/nrfx_config
+  - components/ext_NRF52_hw_models/src/nrfx/nrfx_replacements
+  - components/ext_NRF52_hw_models/src/nrfx/mdk_replacements
+  - components/ext_NRF52_hw_models/src/HW_models
+  - components/libUtilv1/src
+  - components/libPhyComv1/src
+  - components/libRandv2/src
+  - components/ext_libCryptov1/src
+  - nrfx
+  - nrfx/drivers
+  - nrfx/hal
+  - nrfx/mdk
+
+pkg.pre_build_cmds:
+  scripts/link_babblesim.sh: 1
+  scripts/link_nrfx.sh: 2
+
+pkg.lflags:
+  - -ldl

+ 47 - 0
babblesim/sdk/scripts/link_babblesim.sh

@@ -0,0 +1,47 @@
+#!/bin/bash
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+
+if [ -z ${BSIM_COMPONENTS_PATH+x} ]; then
+  echo "This board requires the BabbleSim simulator. Please set" \
+        "the environment variable BSIM_COMPONENTS_PATH to point to its components" \
+        "folder. More information can be found in" \
+        "https://babblesim.github.io/folder_structure_and_env.html"
+  exit 1
+fi
+
+if [ -z ${BSIM_OUT_PATH+x} ]; then
+  echo "This board requires the BabbleSim simulator. Please set" \
+        "the environment variable BSIM_OUT_PATH to point to the folder where the" \
+        "simulator is compiled to. More information can be found in" \
+        "https://babblesim.github.io/folder_structure_and_env.html"
+  exit 1
+fi
+
+ln -sfn "${BSIM_COMPONENTS_PATH}" ./components
+
+mkdir -p ./src/
+cp "${BSIM_OUT_PATH}"/lib/*.32.a ./src/
+
+# XXX: Workaround for bad linking by newt. Sometimes newt will link
+# nrf weak functions from nrf_hal_originals.o instead of their BabbleSim
+# replacements inside libNRF52_hw_models.32.a. But as long as the other
+# weak functions, that do not have their replacements, are not used,
+# we can just remove the file from the .a library here.
+ar d ./src/libNRF52_hw_models.32.a nrf_hal_originals.o

+ 21 - 0
babblesim/sdk/scripts/link_nrfx.sh

@@ -0,0 +1,21 @@
+#!/bin/bash
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+
+ln -sfn ${NRFX_BASE} ./nrfx

+ 23 - 0
babblesim/targets/blecent/pkg.yml

@@ -0,0 +1,23 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+
+pkg.name: babblesim/targets/blecent
+pkg.type: target
+pkg.descrption: Sample target for running blecent on BabbleSim
+pkg.author: "Apache Mynewt <dev@mynewt.apache.org>"
+pkg.homepage: "https://mynewt.apache.org/"

+ 2 - 5
nimble/transport/da1469x/cmac_driver/syscfg.yml → babblesim/targets/blecent/syscfg.yml

@@ -16,8 +16,5 @@
 # under the License.
 #
 
-syscfg.defs:
-    CMAC_IMAGE_FILE_NAME:
-        description: >
-            Path to library with CMAC firmware. See README for details.
-        value: "libble_stack_da1469x.a"
+syscfg.vals:
+  BLE_LL_PUBLIC_DEV_ADDR: 0xbabb1e000002

+ 21 - 0
babblesim/targets/blecent/target.yml

@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+
+target.app: "@apache-mynewt-nimble/apps/blecent"
+target.bsp: "@apache-mynewt-nimble/babblesim/hw/bsp/nrf52_bsim"
+target.build_profile: debug

+ 23 - 0
babblesim/targets/blehci/pkg.yml

@@ -0,0 +1,23 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+
+pkg.name: babblesim/targets/blehci
+pkg.type: target
+pkg.descrption: Sample target for running blehci on BabbleSim
+pkg.author: "Apache Mynewt <dev@mynewt.apache.org>"
+pkg.homepage: "https://mynewt.apache.org/"

+ 21 - 0
babblesim/targets/blehci/syscfg.yml

@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+
+syscfg.vals:
+  BLE_LL_PUBLIC_DEV_ADDR: 0xbabb1e000001
+  BLE_HCI_TRANSPORT: uart

+ 21 - 0
babblesim/targets/blehci/target.yml

@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+
+target.app: "@apache-mynewt-nimble/apps/blehci"
+target.bsp: "@apache-mynewt-nimble/babblesim/hw/bsp/nrf52_bsim"
+target.build_profile: debug

+ 23 - 0
babblesim/targets/bleprph/pkg.yml

@@ -0,0 +1,23 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+
+pkg.name: babblesim/targets/bleprph
+pkg.type: target
+pkg.descrption: Sample target for running bleprph on BabbleSim
+pkg.author: "Apache Mynewt <dev@mynewt.apache.org>"
+pkg.homepage: "https://mynewt.apache.org/"

+ 20 - 0
babblesim/targets/bleprph/syscfg.yml

@@ -0,0 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+
+syscfg.vals:
+  BLE_LL_PUBLIC_DEV_ADDR: 0xbabb1e000003

+ 21 - 0
babblesim/targets/bleprph/target.yml

@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+
+target.app: "@apache-mynewt-nimble/apps/bleprph"
+target.bsp: "@apache-mynewt-nimble/babblesim/hw/bsp/nrf52_bsim"
+target.build_profile: debug

+ 23 - 0
babblesim/targets/btshell/pkg.yml

@@ -0,0 +1,23 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+
+pkg.name: babblesim/targets/btshell
+pkg.type: target
+pkg.descrption: Sample target for running btshell on BabbleSim
+pkg.author: "Apache Mynewt <dev@mynewt.apache.org>"
+pkg.homepage: "https://mynewt.apache.org/"

+ 20 - 0
babblesim/targets/btshell/syscfg.yml

@@ -0,0 +1,20 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+
+syscfg.vals:
+  BLE_LL_PUBLIC_DEV_ADDR: 0xbabb1e000004

+ 21 - 0
babblesim/targets/btshell/target.yml

@@ -0,0 +1,21 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+
+target.app: "@apache-mynewt-nimble/apps/btshell"
+target.bsp: "@apache-mynewt-nimble/babblesim/hw/bsp/nrf52_bsim"
+target.build_profile: debug

+ 3 - 6
nimble/transport/da1469x/cmac_driver/pkg.yml → babblesim/targets/edtthci/pkg.yml

@@ -17,11 +17,8 @@
 # under the License.
 #
 
-pkg.name: nimble/transport/da1469x/cmac_driver
-pkg.description: Driver for Dialog's BLE controller
+pkg.name: babblesim/targets/edtthci
+pkg.type: target
+pkg.description:
 pkg.author:
 pkg.homepage:
-pkg.keywords:
-
-pkg.pre_link_cmds.BLE_HOST:
-    scripts/build_libcmac.sh: 100

+ 55 - 0
babblesim/targets/edtthci/syscfg.yml

@@ -0,0 +1,55 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+
+syscfg.vals:
+  # EDTT requires 0x123456789ABC address for the first device
+  # and 0x456789ABCDEF for the second one
+  BLE_LL_PUBLIC_DEV_ADDR: 0x123456789ABC  # d=1
+  # BLE_LL_PUBLIC_DEV_ADDR: 0x456789ABCDEF # d=2
+
+  EDTT_HCI_LOG_FILE: ("hci_logs")
+  EDTT_HCI_LOGS: 1
+
+  BLE_LL_CFG_FEAT_LE_ENCRYPTION: 1
+  BLE_LL_CFG_FEAT_CONN_PARAM_REQ: 1
+  BLE_LL_CFG_FEAT_SLAVE_INIT_FEAT_XCHG: 1
+  BLE_LL_CFG_FEAT_LE_PING: 1
+  BLE_LL_CFG_FEAT_DATA_LEN_EXT: 1
+  BLE_LL_CFG_FEAT_LL_PRIVACY: 1
+  BLE_LL_CFG_FEAT_LE_CSA2: 1
+  BLE_LL_CFG_FEAT_LE_2M_PHY: 1
+#  BLE_LL_CFG_FEAT_LE_CODED_PHY: 1  # not modeled in bsim
+  BLE_LL_CFG_FEAT_LL_EXT_ADV: 1
+  BLE_LL_CFG_FEAT_LL_PERIODIC_ADV: 1
+  BLE_LL_CFG_FEAT_LL_PERIODIC_ADV_SYNC_TRANSFER: 1
+  BLE_LL_CFG_FEAT_CTRL_TO_HOST_FLOW_CONTROL: 1
+  BLE_LL_CFG_FEAT_LL_SCA_UPDATE: 1
+
+  BLE_ROLE_CENTRAL: 1
+  BLE_ROLE_PERIPHERAL: 1
+  BLE_ROLE_BROADCASTER: 1
+  BLE_ROLE_OBSERVER: 1
+
+  BLE_VERSION: 52
+  BLE_CONTROLLER: 1
+  BLE_LL_ROLE_CENTRAL: 1
+  BLE_LL_ROLE_PERIPHERAL: 1
+  BLE_LL_ROLE_BROADCASTER: 1
+  BLE_LL_ROLE_OBSERVER: 1
+  BLE_HW_WHITELIST_ENABLE: 1

+ 22 - 0
babblesim/targets/edtthci/target.yml

@@ -0,0 +1,22 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+#  http://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.
+#
+
+target.app: "@apache-mynewt-nimble/babblesim/edtt/hci_test"
+target.bsp: "@apache-mynewt-nimble/babblesim/hw/bsp/nrf52_bsim"
+target.build_profile: debug

+ 2 - 2
docs/btshell/btshell_api.rst

@@ -48,11 +48,11 @@ For example:
     set addr_type=public addr=01:02:03:04:05:06
     set addr_type=random addr=c1:aa:bb:cc:dd:ee
 
-The address configuration can be viewed with the ``gatt-show-addr`` command, as follows:
+The address configuration can be viewed with the ``show-addr`` command, as follows:
 
 ::
 
-    gatt-show-addr
+    show-addr
     public_id_addr=01:02:03:04:05:06 random_id_addr=c1:aa:bb:cc:dd:ee
 
 Initiate a direct connection to a device

+ 87 - 0
docs/firmwares/README.md

@@ -0,0 +1,87 @@
+# 蓝牙控制器固件
+
+目前在 qume 下运行此协议栈需要搭配蓝牙 Controller 芯片,以下固件都是在 Zephyr 环境下编译 hci 相关例程生成的,经实际使用测试,工作稳定。
+
+参考:[hci-uart](https://docs.zephyrproject.org/latest/samples/bluetooth/hci_uart/README.html) 和 [hci-usb](https://docs.zephyrproject.org/latest/samples/bluetooth/hci_usb/README.html)
+
+
+### hci_uart_nrf52840dk.hex
+
+<img src="./images/nrf52840dk.png" alt="nrf52840dk" style="zoom:67%;" />
+
+该固件使用的是 [nrf52840dk](https://www.nordicsemi.com/Products/Development-hardware/nrf52840-dk) 开发板,HCI 传输层为 H4 协议,波特率 115200,使用硬件控制流 CTS/RTS。
+
+**Windows** 平台下载该固件比较简单,将 nrf52840dk 插入电脑,电脑会自动识别一个 `JLINK` U 盘,用鼠标将固件拖入该 U 盘即可。
+
+![JLINK U 盘](./images/JLINK_U.png)
+
+**Linux** 平台下载该固件较为麻烦,需要使用工具 [J-Link Software and documentation pack](https://www.segger.com/downloads/jlink/) 和 [nRF Command Line Tools](https://www.nordicsemi.com/Products/Development-tools/nrf-command-line-tools)
+
+下载固件流程:
+
+1. 擦除芯片内程序
+
+```shell
+nrfjprog --eraseall -f nrf52
+```
+
+2. 写入固件
+
+```shell
+nrfjprog --program hci_uart_nrf52840dk.hex -f nrf52
+```
+
+3. 复位并启动
+
+```shell
+nrfjprog --reset -f nrf52
+```
+
+可参考:[nordic-segger](https://docs.zephyrproject.org/latest/develop/flash_debug/nordic_segger.html#nordic-segger)
+
+
+
+**qemu 环境下使用提示**
+
+使用 nrf52840dk 开发板 JLink 虚拟串口进行交互,当识别到 JLink 时,虚拟串口也可以被识别。
+
+```
+# 参考以下命令替换原有命令, /dev/ttyACM0 按照被识别的实际串口修改
+qemu-system-arm -M vexpress-a9 -smp cpus=2 -kernel rtthread.bin -nographic -sd sd.bin -serial mon:stdio -serial /dev/ttyACM0
+```
+
+
+
+### hci_usb_nrf52840dongle.hex
+
+<img src="./images/nrf52840dongle.png" alt="nrf52840dongle" style="zoom: 67%;" />
+
+该固件使用的是 [nrf52840dongle](https://www.nordicsemi.com/Products/Development-hardware/nrf52840-dongle) 开发板,HCI 传输层为 USB 协议。
+
+下载该固件需要使用 [nRF Util](https://www.nordicsemi.com/Products/Development-tools/nRF-Util),输入 `pip3 install nrfutil` 即可安装。
+
+下载固件:
+
+1. 按下 RESET 按钮进入 bootloader
+2. 利用 nrfutil 打包固件
+
+```shell
+nrfutil pkg generate --hw-version 52 --sd-req=0x00 \
+        --application hci_usb_nrf52840dongle.hex \
+        --application-version 1 hci_usb_nrf52840dongle.zip
+```
+
+3. 写入固件,注意 Linux 环境下使用 `/dev/ttyXXX` 设备,Windows 使用 `COMx`,macOS 也类似。
+
+```shell
+nrfutil dfu usb-serial -pkg hci_usb_nrf52840dongle.zip -p /dev/ttyACM0
+```
+
+可参考:[Zephyr-nrf52840dongle](https://docs.zephyrproject.org/latest/boards/arm/nrf52840dongle_nrf52840/doc/index.html)
+
+
+
+**qemu 环境下使用提示**
+
+此固件会被识别成 hci 设备, 具体使用可参考 [QEMU 运行 BLE](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/application-note/setup/qemu/qemu-ble/qemu_ble?id=qemu-运行-ble)
+

+ 5863 - 0
docs/firmwares/hci_uart_nrf52840dk.hex

@@ -0,0 +1,5863 @@
+:10000000005B0020154600003F4A01004546000005
+:10001000454600004546000045460000000000003F
+:10002000000000000000000000000000DD430000B0
+:10003000454600000000000089430000194A010005
+:10004000D545000091EC0000D5450000D5450000E5
+:10005000D5450000D5450000D5450000D545000038
+:10006000D5450000D5450000D5450000D545000028
+:10007000D5450000D5450000D5450000D545000018
+:10008000D5450000D5450000D5450000D545000008
+:10009000D5450000D5450000D5450000D5450000F8
+:1000A000D5450000D5450000D5450000D5450000E8
+:1000B000D5450000D5450000D5450000D5450000D8
+:1000C000D5450000D5450000D5450000D5450000C8
+:1000D000D5450000D5450000D5450000D5450000B8
+:1000E000D5450000D5450000D5450000D5450000A8
+:1000F000D5450000D5450000D5450000D545000098
+:1001000053B94AB9002908BF00281CBF4FF0FF317E
+:100110004FF0FF3000F06EB9ADF1080C6DE904CE80
+:1001200000F006F8DDF804E0DDE9022304B07047D2
+:100130002DE9F047089D0E4604468C46002B40F002
+:1001400081808A42174645D9B2FA82F24AB1C2F199
+:10015000200106FA02F320FA01F1974041EA030C6C
+:1001600094404FEA174E230CBCFBFEF6B9B20EFBCF
+:1001700016CC43EA0C4306FB01F0984209D9FB1860
+:1001800006F1FF3C80F01581984240F21281023E58
+:100190003B441B1AA4B2B3FBFEF00EFB103344EA3F
+:1001A000034400FB01F1A14209D93C1900F1FF33DE
+:1001B00080F00181A14240F2FE8002383C44641A82
+:1001C00040EA064000211DB1D4400023C5E90043A8
+:1001D000BDE8F08702B9FFDEB2FA82F2002A4FD101
+:1001E000CB1B4FEA174E1FFA87F80121B3FBFEFC29
+:1001F000260C0EFB1C3346EA034608FB0CF3B34205
+:1002000007D9BE190CF1FF3002D2B34200F2EB80E5
+:100210008446F61AA3B2B6FBFEF00EFB106643EA64
+:10022000064408FB00F8A04507D93C1900F1FF334C
+:1002300002D2A04500F2D2801846A4EB080440EA9E
+:100240000C40C0E78B4208D9002D00F0AF800021A0
+:10025000C5E900060846BDE8F087B3FA83F1002936
+:1002600049D1B34202D3824200F2BB80841A66EBCA
+:10027000030301209C46002DAAD0C5E9004CA7E746
+:10028000C2F120039740D8409140DE404FEA174E1C
+:1002900008434FEA104CB6FBFEF11FFA87F80EFB3D
+:1002A00011664CEA064601FB08F3B34204FA02F475
+:1002B00009D9BE1901F1FF3C80F08E80B34240F2B3
+:1002C0008B8002393E44F31A86B2B3FBFEF00EFB7C
+:1002D000103346EA034600FB08F3B34207D9BE19C0
+:1002E00000F1FF3C74D2B34272D902383E44F31A93
+:1002F00040EA01417AE7C1F1200703FA01F422FA4A
+:1003000007F31C4320FA07F906FA01F34FEA144CED
+:10031000FE4049EA03094FEA1943B6FBFCFE1FFA07
+:1003200084F80CFB1E6643EA06460EFB08FAB2454B
+:1003300002FA01F200FA01F308D9A6190EF1FF3012
+:1003400048D2B24546D9AEF1020E2644A6EB0A06C3
+:100350001FFA89F9B6FBFCF00CFB106649EA064669
+:1003600000FB08F8B04507D9A61900F1FF3C2DD2D3
+:10037000B0452BD90238264440EA0E40A6EB0806C9
+:10038000A0FB02894E45C446CE4618D315D075B39E
+:10039000B3EB0C0266EB0E0606FA07F722FA01F33E
+:1003A000CE401F43C5E90076002111E729462846C3
+:1003B0000EE76646EDE6184601E74345E7D2B8EB9F
+:1003C000020C69EB04040138A646E0E76046D3E777
+:1003D00060468CE78646B9E7614674E702383C44DC
+:1003E0002BE7084647E7ACF1020C3E4411E72946EB
+:1003F000EEE600BF704700BF2DE9F04FB34C94F814
+:10040000D6608FB006F00106002800F0C981CEBB8F
+:1004100094F87C7094F8290094F82C204FF0270968
+:100420002D2309FB074700F0030019FB0239FF23C6
+:1004300084F82A300DF0F2FD94F8D600410707F158
+:100440007D0704EB090800F12A8114F80900314600
+:10045000C0F3801006F074F906220146054608F143
+:10046000020014F019FB29460622B81C14F014FBF4
+:1004700014F809305A060AD413F00E0F40F0E78042
+:10048000636A93B10C2630460FB0BDE8F08F0621A9
+:1004900008F1020004F00EFC002800F02B8214F892
+:1004A000093013F00E0FEBD0D1E008F053FF824675
+:1004B000002800F03E8208F059FF8346002800F033
+:1004C0004A820AF071F90546002800F041824FF691
+:1004D000FF73806FAB8505F11C030B93002800F0C0
+:1004E000248205F16C0205F1680104F0EFFBB5F818
+:1004F0006420774995F840C095F83DE095F8DC0018
+:10050000744B2B660A4042F4887242F0010295F85F
+:100510002611A5F86420002262F3000C20F00300ED
+:1005200021F0030185F840C00EF03F0E4FF01B1C78
+:100530006EF07F0E85F8DC0085F826117F20664975
+:10054000C5F85CC04FF0060CC5E9132285F83F20C2
+:100550006A866A636A65A5F8C820A5F8CC20A5F864
+:10056000E82085F8EA20C5F80021A5F80421A5F8BF
+:100570001821C5F82021A5F8242185F82F2185F818
+:100580003DE085F8C100A5F8C4C0C5F81C11C5F848
+:1005900030A1AA6795F872E195F89AC195F87E00A6
+:1005A00095F85211A5F87C2062F3C30C62F3041E87
+:1005B00021F0070120F01F00A5F85021A5F87021B7
+:1005C000A5F89821A5F8A42185F89AC185F872E1CB
+:1005D00085F8521185F87E000AF044FCA5F8D60093
+:1005E0000AF046FCD5F8A8313C49A5F8D8001940D6
+:1005F000C5F8A8110AF042FC95F8AC1160F30201AD
+:1006000085F8AC110AF040FCC4E933AB0B9B636284
+:1006100095F8AC1195F820C0ED610301002203F0BC
+:10062000700321F078010B4362F3000CC5E96E22E0
+:10063000C5E96C22C5E90522C5F8C02185F8AC31B1
+:1006400085F820C00EF09EFE002840F05F8194F8EF
+:1006500028300121C3F342030DA88DF8343004F093
+:10066000ADFC002800F0958014F8093003F00F036A
+:10067000022B00F1FF3233D0012B00F04B81787850
+:100680001030C100002B00F03781062B00F068818C
+:100690004FF4DA704FF41B7100FB02102BE0C0F333
+:1006A000C000324604F1D7010DF0A6FEFF2884F801
+:1006B0002A0002D030460DF071FD414603480DF08E
+:1006C000F3FC024839460DF0EFFCD1E6081B002090
+:1006D00080F8FFFF48014801FF4901000000FFF6D4
+:1006E00098F801301033DB0000FB03F000F5AA702E
+:1006F000642303FB020094F82070A74AE4610025FC
+:10070000312365F30007A0FB0201236084F8207009
+:100710009FA3D3E90023C4E90555C4E90155FFF7B8
+:10072000EFFCB4F8D480E06006F004F80746B8F1B6
+:10073000000F08D114F8095005F00F05A5F10105C7
+:10074000B5FA85F56D0994F82820E36865F3000291
+:1007500012F0010584F8282076D0DFF848928F49FE
+:100760000493002002250DF1300801930591CDE995
+:1007700007980321CDE9020006942A4600903B46E3
+:100780000C9505F0C7FE414608F06CFE002800F00D
+:100790009E80636A002B3FF475AE09F005F971E69F
+:1007A000002E3FF46FAE204608F06AFE844204D06B
+:1007B0007B484FF4E56103F089F994F82830D807B5
+:1007C0000DAD0ED502220D920321764B009501222C
+:1007D000002005F00BFF294608F044FE002840F0F9
+:1007E000C980022203216F4B009500200D9205F075
+:1007F000FDFE294608F036FE002840F09C806A483D
+:1008000008F07AFE002840F08A80684808F044FE2C
+:10081000844204D0624840F24A7103F057F9636A97
+:100820000BB109F0C1F894F8D63000206FF3000343
+:1008300084F8D63009F010FC0646002844D0002683
+:1008400030460FB0BDE8F08F59485A4ADFF854E1FE
+:10085000DFF848C10694A8FB00014FF0910909FB9D
+:10086000081103F24718C2F800804FF00209049300
+:1008700009920DF1300846A3D3E900234FF6FF7A21
+:10088000CDE907E80295CDF83090CDF814C0CDF849
+:100890000CA0FFF735FC4A46CDE900503B46284600
+:1008A000032105F0E1FD414608F0DCFD00287FF45E
+:1008B00070AF94F8D63043F0010384F8D63009F0D5
+:1008C000CBFB0028BBD101200DF086FBDBE53A49CC
+:1008D00005914AF2D8320092CDE90798CDE903009C
+:1008E000CDE9010006943B46012203210C9505F059
+:1008F00011FED8E71226C6E598F801001030C000B6
+:1009000000F54D73194400F59A70C5E609F04CF8EE
+:100910000326B8E54FF4F2704FF47F71BCE620482F
+:1009200040F2477103F0D2F86FE705F17000A86755
+:10093000D7E50726A7E51D4808F0AEFD84423FF441
+:10094000A1AD174840F2417103F0C0F80C269AE5BA
+:10095000584608F011FD504608F002FD072692E5C2
+:1009600098F801301033DB0003F54D70014403F5B6
+:100970009A7091E60D4808F08FFD84423FF482ADF5
+:10098000074840F2337103F0A1F80C267BE500BF65
+:100990008D49FD1A0700000000CA9A3BB998000073
+:1009A000E85D010059940000241B0020081B002072
+:1009B000002AE784E81B002059980000000000008E
+:1009C000F8B5194E9DF8184096F8485015F00107F3
+:1009D00021D196F832C0DFF854E0A6F84210E400C6
+:1009E00004F018040CF0670C44EAC01463F34205E9
+:1009F000A2FB0E0144EA0C04912303FB021186F8CA
+:100A0000485007A3D3E9002386F83240FFF778FB6C
+:100A100070643846F8BD0C273846F8BDAFF3008047
+:100A20008D49FD1A070000000C1C0020002AE784F5
+:100A3000F8B59DF81840104E0546E400807DEA8424
+:100A400004F01804A3FB066700F06700912244EA53
+:100A5000C111014302FB0377A97505A3D3E9002364
+:100A600030463946FFF74CFBA862F8BDAFF3008073
+:100A70008D49FD1A07000000002AE78400000000ED
+:100A80002DE9F04F90F83230044600F1350190F82E
+:100A9000480003F0F903C0F3400060F386138DB003
+:100AA00084F8323005F04CFEB4F8426094F82030FF
+:100AB0004F48E4610025A6FB000165F30003912285
+:100AC00002FB0611C4E9055584F8203046A3D3E99A
+:100AD0000023FFF715FB636C656006460933A6F13A
+:100AE000310293424FF03101A56028BF6564216057
+:100AF00034BFE360E26005F01DFE656A80460DF1DB
+:100B00002C09002D4ED03B4DCDF82090B4F842A0DA
+:100B100039493748E268DFF8ECC00492651BAD083C
+:100B2000A1FB0535AAFB0001912303FB0A11334BFE
+:100B300005934FF0000A2CA3D3E900230227CDF838
+:100B40001CC006940B97CDF80CA0FFF7D9FA1046FD
+:100B500019464FF47A720023FFF7D2FA6D08043574
+:100B6000EDB22A46029043460321CDF800A050463C
+:100B7000019605F0CFFC494608F074FC054668B9BB
+:100B800094F8483043F0010384F8483009F07CF8C9
+:100B90000446F8B128460DB0BDE8F08F0C200DB02A
+:100BA000BDE8F08FE1680A954B460AAA03200B9531
+:100BB00002F0D6F90B990029A5D011480AA3D3E970
+:100BC0000023A1FB0001FFF79BFA0A9B20F07F485E
+:100BD000984498E738460DF0FFF920460DB0BDE87F
+:100BE000F08F00BFAFF300808D49FD1A07000000B1
+:100BF000002AE7840C1C0020BD86F21A519E0000DA
+:100C000000CA9A3B599400002DE9F04F0446808DAC
+:100C10004FF6FF7398428DB00E46154600F089805E
+:100C200094F8E93094F8E80083420ED0C01A00F03E
+:100C3000030002281BD094F82D2194F82C319A42FD
+:100C400030D100200DB0BDE8F08F94F8527117F04C
+:100C50000108F0D194F8051194F804218A4200F0BB
+:100C60006383981E012284F8E90084F8EA2094F84E
+:100C7000983194F899219A4206D094F89A2102F07A
+:100C80000601042900F0948394F8EA707B1E052B7A
+:100C900000F24483DFE813F06400DB0282024203C7
+:100CA0000503AC012C4803F0BBFF58B394F82C317A
+:100CB00084F82D310379022243F00303427103715A
+:100CC000C271D4F8B03194F82E2102722BB394F88B
+:100CD0005221910721D494F8AB21D2071DD4D4F826
+:100CE000BC21934204BF1A68C4F8BC21D4F8B421D3
+:100CF000B2B91A68026018600368C4E96D000BB9E4
+:100D0000C4F8C001B4F8CC0000289AD1B4F8C630B9
+:100D1000012B14D9A4F8CC3093E7D4F8B421A2B1B4
+:100D2000D4F8B8311A6802601860C4F8B8010368D2
+:100D3000E5E70A4840F2F32102F0C8FE70E701330C
+:100D4000A4F8CC300DB0BDE8F08F0360C4E96C00AE
+:100D5000C4F8B801D3E700BFF8390020685E01008D
+:100D6000DFF82C84D8F80030002B00F09884E78E50
+:100D7000628E94F8063117442F4413F00303BFB278
+:100D800040F06283B4F8EC90A7EB09021FFA82FAF4
+:100D900012043FF550AF94F8701194F8712194F853
+:100DA000040184F805018A4294F8E80084F8E90017
+:100DB00009D094F8722102F00702052A04BF84F8D2
+:100DC0007111A4F8CC30D8F800309C4204BF002345
+:100DD000C8F80030D4F80081B8F1000F00F0898520
+:100DE000D8F80000002800F08485B4F80831E18DBF
+:100DF0004268C4F800218B42B4F80A21B4F80CC14F
+:100E000000F08B86A18DA8F806104FF00C0E002183
+:100E1000A8F81E30A8F82020A8F822C088F804E01E
+:100E200088F81C10414608F0ADFA08F0B5FA2368BE
+:100E3000002B09DAD4E9011223F000438A422CBFC7
+:100E4000B61876182360F61AE38DB4F8088113FB00
+:100E50000AF39BB2B3FBF8F118FB01F292B2934292
+:100E60001FFA81FB80F03385D31AC14840F2E24279
+:100E700002FB03F3A3FB0001BBA3D3E90023FFF7AD
+:100E80003FF920F07F400644638EA9EB07071D441D
+:100E900094F93D305F442F4440F2E249002B6786CD
+:100EA00009FB08F5C0F26D86D4F81001B049AEA375
+:100EB000D3E90023A0FB0101FFF722F920F07F49CD
+:100EC00009F10109AA46B4F80C21B4F80A11A94B9A
+:100ED000A4F82E8042F2107000FB0252A648218630
+:100EE0002B442844B3FBF5F3013AB2FBF5F2B0FB17
+:100EF000F5F5A4F8C62098B28A1D9042A4F8D20055
+:100F0000A4F8CA5002DD401A063880B294F80631BF
+:100F1000A4F8CE005D0744BF0023A4F8C830022126
+:100F2000012010F051FE002202218046012003F032
+:100F30001BFF92494FF4E472204603F0A7FE451DC3
+:100F4000EDB28F4B00942A460121002005F04EFBA4
+:100F500030F0020304D08B4840F6581102F0B6FD81
+:100F6000834BAAFB03AB50467FA3D3E9002359462A
+:100F7000FFF7C6F8844A20F07F47A7FB022307212A
+:100F8000BAEB020001FB07336BEB03014FF47A72FB
+:100F90000023FFF7B5F8DFF8FCE17C49E268DFF8F1
+:100FA000F8C1034694F93D00049211EA200138BFCC
+:100FB00071460020029305913346019708940694E8
+:100FC000CDF800902A46CDF81CC00390012105F011
+:100FD000A1FA30F0020304D06A4840F6721102F020
+:100FE00075FDB8F1000F40F0B2856FF0470029E6BB
+:100FF000E38E628E94F8EC6013441D44F707ADB2A3
+:10100000B34600F10A83B4F8EE20AD1A2F043FF581
+:1010100012AE94F8DC2094F8648094F865A094F8FB
+:10102000E810B4F8627084F8E910D50708F00708F2
+:101030000AF0070A40F19485D4F81C21100540F10C
+:101040008F85B4F8D890B9F5296F28BF4FF4296976
+:10105000B9F5A47F4FF4296338BF4FF4A4790B93FB
+:1010600016F01C0F40F08786B4F8605016F0E00FC1
+:101070000CD094F8652094F85E00710961F30202C7
+:1010800084F865200B9A09F06BF8074694F8AC21B8
+:1010900094F86410D4F80061C2F3C00262F3C30193
+:1010A00084F86410002E00F06C873068002800F08F
+:1010B000688794F864E094F865104268C4F80021E9
+:1010C0001BF0020FCEF3020CC1F302020EF0070E6A
+:1010D00001F0070102D1F04500F0EA87A38DF3800B
+:1010E00010210023317186F81DC0B2773377314665
+:1010F00008F048F9D4F80061002E00F04C87306801
+:10110000002800F04887B4F860304268C4F8002135
+:10111000AB4209D34B4507D8B4F86230BB4203D386
+:101120000B9A934241F2E380A4F86050A4F86270F5
+:10113000337FA28DF28043F0030302210922317133
+:1011400033777277B4F85E30B4F85C2033841523BB
+:10115000B284F37731467784F58408F013F908F008
+:101160001BF968E5AFF300808D49FD1A0700000008
+:1011700000CA9A3B7FC3C901FF5962026C1C002060
+:1011800035A40000685E01008D49FD1AD1D200002F
+:10119000EC38002021D4000005A4000094F8EC30C5
+:1011A00013F003057FF447ADA54803F039FD06466B
+:1011B00000283FF440AD94F93D30002B80F2358596
+:1011C00094F8ED50002D00F02D83037994F8DC2085
+:1011D00043F00303D207037140F1CD86D4F81C31EC
+:1011E0005B0740F1C886112203234572C271037266
+:1011F0007771D4F8B031002284F8ED20002B00F094
+:101200005B8394F85221950700F1568394F8AB2143
+:10121000D00700F15183D4F8BC21934204BF1A686F
+:10122000C4F8BC21D4F8B421002A01F03D80D4F8E0
+:10123000B8311A6832601E60C4F8B8613368002B98
+:1012400000F0958694F8E83084F8E930F3E4E38E12
+:10125000618E94F8EC200B441D44D007ADB200F130
+:101260009181B4F8F230ED1A29043FF5E4AC94F81A
+:10127000E83084F8E93004F13805052204F1ED0185
+:10128000284613F009FC2846052103F097FE94F840
+:101290003D30012260F3050384F83D3084F8C42119
+:1012A000C9E4674803F0BCFC00283FF4C4AC94F8E0
+:1012B000E83084F8E930012302794371D4F8B03181
+:1012C00042F0030212210271C171002B00F09F82D3
+:1012D00094F85221910700F19A8294F8AB21D20739
+:1012E00000F19582D4F8BC21934204BF1A68C4F877
+:1012F000BC21D4F8B421002A00F0C487D4F8B83156
+:101300001A6802601860C4F8B8010368002B00F086
+:101310002E85B4F8CA30A4F8CC308CE4494840F2A9
+:10132000793102F0D3FB86E494F8192194F818C1BE
+:10133000624553D194F8252194F824C1624500F008
+:10134000E182A2EB0C02D1077FF575AC94F826314F
+:10135000DA0740F1F3869A0740F1E58608F040F895
+:10136000014600B394F8243184F82531037FA28D1F
+:10137000C28043F003030B77022006220C2308717E
+:101380004A77CB7794F82701B4F82821B4F82A31AA
+:10139000A1F8233081F82000A1F82120086807F087
+:1013A000F1FF07F0F9FF94F8E80094F8E9303DE424
+:1013B00002F00701062901F2E78001A050F821F0B0
+:1013C0003D170000890C0000890C0000890C00000A
+:1013D000A7160000A7160000890C0000A2EB0C0263
+:1013E000D3077FF528AC94F8DC1011F0010700F06A
+:1013F000638407F0F5FF07460028D4D094F818312D
+:1014000084F81931037FA28DC28043F003030922BF
+:10141000022041463B7738717A77FA7707F120004E
+:10142000082213F064FBD4F8203187F82030C3F38E
+:1014300007221B0C87F8212087F822303946ADE7B8
+:10144000F8390020685E0100012007F0ABFF8046FC
+:1014500000283FF4F0ABB54803F0E2FB0546002856
+:101460003FF4E9AB07F0BCFFD8F80030D4F8002116
+:101470005A6094F80631C4F8008103F00303012B8D
+:1014800000F0BC85022B00F0998540F68301A84846
+:1014900002F01CFB0021238E94F806C12A793B44FC
+:1014A000063398B26FF3010C0C23A4F8EC0084F817
+:1014B00006C142F003026B71D4F810319D4F2A71BE
+:1014C0000022EA71A7FB032394F8147122682F729B
+:1014D000B4F80871A5F80B70B4F80A71A5F80D708E
+:1014E000C3F38F23B4F80C71A5F80F70002AA5F888
+:1014F0001100A5F80930C4F8F4600ADAD4E9010350
+:1015000022F0004283422CBFF31833189A1AC4F811
+:10151000F420894B05F109000122C4F8F000D960DC
+:10152000104602219C6003F053FC002840F06985BE
+:10153000D4F8B031002B00F0198394F852219007B1
+:1015400000F1148394F8AB21D10700F10F83D4F894
+:10155000BC21934204BF1A68C4F8BC21D4F8B4215A
+:10156000002A00F0B186D4F8B8311A682A601D60EC
+:10157000C4F8B8512B68002B7FF45DABC4F8C051A0
+:10158000FFF759BB694803F04BFB064600283FF4C0
+:1015900052AB238E027994F8EC101D44AB1DA4F8D5
+:1015A000F2306FF30001012342F00302082084F8B7
+:1015B000EC1032717071F371052204F1ED013018F5
+:1015C00013F06AFAD4F8B031B4F8F220A6F80D207E
+:1015D000002B5AD094F85221910756D494F8AB219D
+:1015E000D20752D4D4F8BC21934204BF1A68C4F87D
+:1015F000BC21D4F8B421002A00F05E86D4F8B831BA
+:101600001A6832601E60C4F8B8613368002B7FF43A
+:1016100012ABC4F8C061FFF70EBB022007F0C2FE98
+:10162000074600283FF407AB404803F0F9FA0646A6
+:1016300000283FF400AB94F8EC306FF30003C3F3E1
+:101640008200C3F3421250EA020884F8EC30DBB2A5
+:1016500040F04B8594F8E820A4F8EE80980784F8D1
+:10166000E92000F1C385434641460522727186F8A0
+:10167000088032797372D4F8B031718142F003027C
+:1016800018213271F171002BA4D1D4F8B421002AB1
+:10169000B4D13360C4E96C66C4F8B861B6E7C8F881
+:1016A0000040FFF764BB02F00702B4F89CC1B4F835
+:1016B000A011B4F89E91B4F8A281A4F85EC0042AE7
+:1016C000A4F8621000F0A48494F89A31062262F320
+:1016D000020384F89A31D4F80071002F00F082845C
+:1016E0003868002800F07E843B7F4268B4F82CE024
+:1016F000C4F8002143F0030302223B774FF0090AAC
+:101700001523A7F806E0A7F820C079843A71FB7783
+:101710003946A7F82490A7F8268087F81DA007F07F
+:1017200031FE07F039FEFFF7AFBA00BFF8390020ED
+:10173000685E01005917B7D10C050020BC4803F0C2
+:101740006FFA00283FF4A0AA94F89A21B4F89E11E9
+:10175000B4F8A231A4F8D6100127A4F8D83067F362
+:10176000020284F89A2109270279477194F8DC7003
+:10177000D4F81CE1818142F0030202711B224FF078
+:10178000140C00210272FA0780F807C0417240F180
+:1017900018841EF4006F00F01484B3F5296F28BF7D
+:1017A0004FF42963B3F5A47F38BF4FF4A4734FF40B
+:1017B0002961D4F8B0214181C381002A00F0F3836C
+:1017C00094F852319B0700F1EE8394F8AB31DF07B8
+:1017D00000F1E983D4F8BC319A4204BF1368C4F81D
+:1017E000BC31D4F8B431002B00F09185D4F8B83175
+:1017F0001A6802601860C4F8B8010268002A00F094
+:10180000E884B4F8CA30A4F8CC30FFF73DBAD4F875
+:10181000B421002A7FF472AD0360C4E96C00C4F8FF
+:10182000B80173E504F17F073B462A4604F1EE0157
+:1018300004F25D100FF0F2FB3946102204F1A00013
+:1018400013F02AF9082204F1980104F1B90013F009
+:1018500023F994F8972094F8B81094F87E3084F81F
+:101860008F5042F0010265F3000143F008030120AC
+:1018700084F8972084F8B81084F87E3084F890506B
+:1018800084F8915084F8925084F8935084F89450DE
+:1018900084F8955084F89650C4F8B050C4F8B45009
+:1018A00032797071D4F8B03142F0030205213271FF
+:1018B000F171002B7FF4A5ACD4F8B421002A7FF499
+:1018C000B6AC3360C4E96C66C4F8B861B7E408FB31
+:1018D000113340F2E24257489BB202FB03F3A3FBF1
+:1018E000000151A3D3E90023FEF70AFC361AFFF7E3
+:1018F000CBBA514840F6B40102F0E8F8D8F800003D
+:10190000FFF773BA94F871C194F87021944500F010
+:101910005582DFF82881D8F80020002A00F087845B
+:1019200094427FF488A994F8722102F00702052AF4
+:1019300000F218860FF2040C5CF822F0411A000045
+:10194000A5190000551900002D0C00002D0C0000F9
+:101950002D0C0000BB073FF56EA907F041FD0146C5
+:1019600000283FF420AD037F94F87221032060F338
+:101970000202034384F87221A08D0B7702271823FB
+:101980000F714B77B4F87421B4F87631C880B4F88D
+:1019900078010A84B4F87A214B840F238884CA849E
+:1019A000CB77FBE494F87371002F40F0C28494F974
+:1019B0003D30002BC0F2EF8494F8723194F87C0132
+:1019C000C4F81071052262F30203012284F8723117
+:1019D00084F81421002800F0AE85B4F87431B3FB0C
+:1019E000F0F3134413FB00F39BB294F8722194F8C4
+:1019F0000601A4F80831C2F3C0039B0020F00702DF
+:101A000043F002031343B4F87801B4F87A2184F860
+:101A10000631013984F80511A4F80A01A4F80C2153
+:101A2000FFF709B9AFF300808D49FD1A07000000E8
+:101A3000F839002000CA9A3B685E0100EC380020AB
+:101A4000D748B4F83690B4F832A003F0E9F8074666
+:101A500000283FF4A8AC027994F87211042060F3D6
+:101A6000020142F00302182084F8721109EB0A0304
+:101A70003A717871B4F87401B4F87611B4F8782139
+:101A800038812B44B4F87A017981BA810F21002280
+:101A9000A7F811304FF0FF33F881F9713A74FA74F6
+:101AA0003A757B75BB75FB753B767B76BB76FB76B3
+:101AB0003B777B77BB773946204608F097FB226857
+:101AC000B4F8CA30C8F80040002AC4F89061A4F8FD
+:101AD000CC300ADAD4E9011322F000428B422CBF49
+:101AE000F31873189B1AC4F89031AE4B13370122C8
+:101AF000C4F88C71104602219C6003F069F900283B
+:101B00003FF451ACA84840F66B3101F0DFFF94F888
+:101B1000E80094F8E930FFF789B8218E91427FF40C
+:101B200071A940F2E24101FB03FB42F21071B4F8EB
+:101B3000C6E001FB0CB10139B1FBFBF189B28E4566
+:101B40007FF460A9032388F80430FFF76BB9012202
+:101B50001046022103F008F96FF04700FFF772B852
+:101B60004FF4A479CDF82C90FFF77ABAD4F8B421C9
+:101B7000002A7FF4F8AC2B60C4E96C55C4F8B85166
+:101B8000F9E4E26C636C894F03FB1A23E3640EF003
+:101B90003BFB804694F8DC00C0F382000EF036FB7D
+:101BA00008EB000305FB03F38148E26C94F8141181
+:101BB00003F5742303F23F23A0FB03034FEA934A88
+:101BC0000AFB0BF06B080244963B9A4209FB01FCAE
+:101BD00028BF1A464FF0000EC4E91232C4F844A0E0
+:101BE0006DA3D3E90023C4F854C0C4F8E4E0A0FB1B
+:101BF0000701FEF785FAD4F8103184466D48A0FB42
+:101C00000330800A09FB00F063A3D3E90023A0FBA3
+:101C10000701A6EB0C06FEF773FAA5EB0A0AB4F867
+:101C2000088120F07F49FFF74EB904F17F073B465A
+:101C30002A4604F1EE0104F25D100FF0EFF9394687
+:101C4000102204F1A00012F027FF082204F19801ED
+:101C500004F1B90012F020FF94F8971094F8B8201E
+:101C600094F87E3084F88F5043F0080365F3000148
+:101C700042F0010284F8971084F87E3084F8905086
+:101C800084F8915084F8925084F8935084F89450DA
+:101C900084F8955084F89650C4F8B050C4F8B45005
+:101CA00084F8B820311D204608F044FCD4F8B03147
+:101CB000002B7FF4A6AAFFE5394802F0B1FF804669
+:101CC00000283FF470AB94F819313B4AC4F81C214A
+:101CD000013B092284F81931427194F93D200379BE
+:101CE000002AACBF08220E2243F00303C27108226F
+:101CF00003713946104412F0FAFED4F81C3188F80A
+:101D00000830C3F307221B0C88F8092088F80A3032
+:101D1000D4F8B031002B00F0598194F85221970784
+:101D200000F1548194F8AB21D00700F14F81D4F831
+:101D3000BC21934204BF1A68C4F8BC21D4F8B42172
+:101D4000002A00F0EC82D4F8B8311A68C8F80020F4
+:101D5000C3F80080C4F8B881D8F80030002B00F038
+:101D60007D82B4F8CA30A4F8CC30FFF71CBBC4F8AD
+:101D7000C001FFF7CEBA94F8642094F85C00C6F373
+:101D8000820161F3020284F864204A4608F0E8F90F
+:101D90000546FFF76BB900BF8D49FD1A070000002B
+:101DA000F83900201C050020685E010000CA9A3B3B
+:101DB00083DE1B435917B7D1FF49010094F898718E
+:101DC00094F89921BA4200F02E8194F89A1101F00A
+:101DD0000702062A00F2D1830FF2040C5CF822F00D
+:101DE000891E00002D0C00002D0C00002D0C0000A1
+:101DF000FD1D0000FD1D00002D0C0000B4F89C31FD
+:101E0000A4F85E3001F00703B4F8A021B4F89E9165
+:101E1000B4F8A281A4F86220042B00F0AB820B4638
+:101E2000062262F3020384F89A31D4F80071002F7D
+:101E300000F066823868002800F062823B7F4268CA
+:101E4000B4F82CC0C4F8002143F003033B7702220E
+:101E500009237B773A71B4F85E10B4F862207A8473
+:101E60001523FB77A7F806C03984A7F824903946D4
+:101E7000A7F8268007F086FA07F08EFA94F8E800B3
+:101E800094F8E930FEF7D2BED44802F0C9FE01460C
+:101E900000283FF488AA94F89A21B4F89E01B4F877
+:101EA000A231A4F8D6000127A4F8D83067F30202C3
+:101EB000092784F89A210A794F7194F8DC70888197
+:101EC00042F0030214204FF0000C0A71FF07D4F80F
+:101ED0001C21C8714FF01B0081F809C0087240F145
+:101EE0005382100540F1EA82B3F5296F28BF4FF401
+:101EF0002963B3F5A47F38BF4FF4A4734FF429626C
+:101F0000D4F8B001CB81B2F5A47F38BF4FF4A472EE
+:101F10004A81002800F0E08194F852319B0700F1DB
+:101F2000DB8194F8AB31DF0700F1D681D4F8BC3106
+:101F3000984204BF0368C4F8BC31D4F8B431002B14
+:101F400000F00383D4F8B8311A680A601960C4F845
+:101F5000B8110B68002B00F01B82B4F8CA30A4F84B
+:101F6000CC3094F8E80094F8E930FEF75FBEC4F88E
+:101F7000C061FFF767B90D233572F3710227FFF7D0
+:101F800037B9974840F62D6101F0A0FD306894F80C
+:101F9000ECB0FFF78EB8924840F6596101F096FD1B
+:101FA0003068FFF7B0B8D4F8B431002B7FF41EAC22
+:101FB0000260C4E96C00C4F8B8011FE48949FFF766
+:101FC0006ABA4FF4A4731946FFF7F3BBD4F8B421EF
+:101FD000002A7FF4B8AEC8F80030C4E96C88C4F8B1
+:101FE000B881BBE67E4840F6FD4101F06FFD3868E0
+:101FF000B4F85EC0B4F86210FFF776BB7A49FFF719
+:102000004ABA774840F63E0101F060FDFFF790BA0A
+:10201000B4F8A421002A40F0248184F89931A4F86E
+:10202000CC20FFF758BB94F8A82194F8A91191424D
+:102030003EF401AE94F8AA1101F00300032800F069
+:10204000F48100287EF4F7AD644802F0E9FD014612
+:1020500000283FF4A8A994F8AA3194F8AC2194F888
+:10206000AB71012060F30103C3F3820060F302024D
+:10207000C3F3421060F30612C7F34007087984F8EF
+:10208000AA3167F3C30284F8AC21C3F3820C40F099
+:102090000300C3F34213032716220871CA7181F8A3
+:1020A00008C04B724F710022204608F09FF858E696
+:1020B0008A457FF413A803233371314607F062F990
+:1020C000D4F80051002D00F0F2812868002800F0BB
+:1020D000EE814368C4F8003103232B71294607F0D1
+:1020E00051F907F059F9FEF7A6BD238E1D44AB1D2B
+:1020F000A4F8EE3007F074F93B68D4F800215A6078
+:10210000C4F8007107F06CF90368D4F800215A6034
+:1021100094F8EC30B4F8EE10C4F80001C3F3820870
+:102120005B09FFF7A2BA2E4840F61C3101F0CEFC45
+:1021300094F8E80094F8E930FEF778BD274802F0FB
+:102140006FFD00283FF42FA994F8252194F826313B
+:10215000013A84F82521027943F00103062184F82D
+:10216000263142F003024171D4F8B03102710B21E3
+:102170006FF00E020C270172427205214FF0FF3200
+:10218000C7718172C2720273002B00F0838094F8D1
+:10219000522197077ED494F8AB21D1077AD4D4F892
+:1021A000BC21934204BF1A68C4F8BC21D4F8B421FE
+:1021B000002A00F0C481D4F8B8311A6802601860AF
+:1021C000C4F8B8010368002B7FF4C7AEC4F8C0019F
+:1021D000C3E6C4F8C001FFF714BB00BFF839002004
+:1021E000685E01001131000049DA000007F0F8F8DC
+:1021F0001023A28D87F81C803B7194F864303868F6
+:10220000FA80C3F302037B7794F86530C3F30203CB
+:10221000BB77394607F0B6F807F0BEF894F8EC3013
+:10222000B4F8EE10C3F382085B09FFF71EBA94F806
+:10223000723103F00703052B00F2948101A252F8DA
+:1022400023F000BF411A0000A51900005519000035
+:10225000370C0000370C0000370C0000C4F8C081B8
+:102260007FE594F89A01B4F8A671A4F89E210023A2
+:1022700063F3020084F89A01A4F8A431A4F8A271CF
+:10228000FFF729BA1A68026018600368C4E96D0094
+:10229000FFF73CB8D4F8B421002A8CD10360C4E91C
+:1022A0006C00C4F8B8018DE71A6832601E603368AC
+:1022B000C4E96D66FEF7C3BF1A6832601E603368FA
+:1022C000C4E96D66FFF7A2B91A682A601D602B6821
+:1022D000C4E96D55FFF74FB9D4F8B431002B7FF442
+:1022E00031AE0860C4E96C11C4F8B81131E60323BB
+:1022F0003371314607F046F807F04EF8FEF79BBC05
+:10230000A54840F6FD4101F0E1FB386896E5136809
+:10231000036010600268C4E96D00FFF76FBA1A68C5
+:10232000C8F80020C3F80080D8F80030C4E96D88F0
+:1023300014E59A4802F074FC014600283FF433A8E3
+:10234000037943F003030B71112003220F23C8719B
+:102350004A710B7294F873314B720022204607F0D9
+:1023600045FF94F8703184F871310023C8F80030CB
+:10237000FFF719B8B4F8A421002A40F0A58084F82A
+:102380009971A4F8CC2050E54FF4A4731A46B7E530
+:10239000C4F8C011E1E5814802F042FC0146002882
+:1023A0003FF401A80379182243F00303037142713B
+:1023B000B4F87421B4F87631B4F878010A81B4F82D
+:1023C0007A214B8110238881CA81CB7194F87C31AA
+:1023D0000B74B4F87E31B4F88001B4F88221A1F80E
+:1023E0001130B4F88431A1F81300B4F88601A1F8D3
+:1023F0001520B4F88821A1F81730B4F88A31A1F873
+:102400001D30A1F81900A1F81B2020463A4607F01C
+:10241000EDFE94F8703184F8713194F8E80094F886
+:10242000E930C8F80070FEF701BC080784F8A9215C
+:10243000C1F3820261D594F8AA21022161F38402DA
+:1024400084F8AA2194F8AA2157064FEA52114CD5D4
+:10245000022161F3471284F8AA2194F8AA1194F892
+:1024600064C094F8650094F8AB21C1F382070CF0C6
+:10247000070C00F00700C2F38002BC4508BF00272C
+:102480005200B0EB511F42F001024FEA511108BF58
+:10249000002142EA4112023B42EA8702062184F807
+:1024A000E93084F8EC2084F8EA10FEF7EDBB3A48F6
+:1024B00040F63C6101F00AFB28680AE6D2054FF4B9
+:1024C000A47310D5A8221BE500200B4660F302037D
+:1024D000A4F89E21B4F8A62184F89A31A4F8A401A6
+:1024E000A4F8A221A1E41A460AE5C8070FD50121E4
+:1024F00061F3471284F8AA21AFE7D10710D594F809
+:10250000AA21012161F3840284F8AA219AE711F03B
+:10251000040118BF042161F3471284F8AA219CE743
+:1025200012F0040217D094F8AA21042161F3840266
+:1025300084F8AA2186E7B4F87631FFF756BA1A680C
+:1025400002601860C4E96D003CE603680B6001603E
+:10255000C4E96D11FDE494F8AA1162F3840184F8D2
+:10256000AA116FE70C4840F6294101F0AFFA94F840
+:10257000E80094F8E930FEF759BB074840F62551CA
+:1025800001F0A4FAFEF70FBF034840F6255101F011
+:102590009DFAFEF779BB00BF685E0100F8390020A4
+:1025A0002DE9F04F9C4695B05CF80C6B1D46136806
+:1025B00086460C4660462E31174605F1080A03226E
+:1025C000D3F80090CDF828E005F11C0812F064FA69
+:1025D00004F12A010422504612F05EFA04F13A0195
+:1025E0000522404612F058FA4046052102F0E6FC6A
+:1025F00095F8213000F03F0060F30503012885F8CD
+:1026000021300AD994F83F3003F01F02053AC3F392
+:1026100004010B2A85F8221002D915B0BDE8F08F0D
+:102620003A6896F8DC1000209060B4F83480A5F881
+:10263000128094F8362094F837005B0942EA0022B1
+:1026400063F38401AA82638E86F8DC10ADF8303023
+:102650000DF0DAFD034696F8DC000B93C0F3820020
+:102660000DF0D4FD0B9BDFF818C394F83110AA8A43
+:1026700040F2E24B0BFB08F8184408FB00F000F5B1
+:10268000742000F23F20ACFB00C04FEA580C800CD5
+:102690000BFB01F1ACF1960CA862C5F82CC0E96304
+:1026A000218FAF4BADF8361042F2107C0CFB01814C
+:1026B000AC48434402F1060C0139B3FBF8F3B1FB1B
+:1026C000F8F1A6F8C61099B261454044A6F8D210B8
+:1026D000B0FBF8F0A6F8CA0002DD891A063989B203
+:1026E000A6F8CE100422514606F1E00012F0D4F90B
+:1026F000237F04F11E0A5146C3F38013062212A859
+:102700008DF8403012F0C8F9237F4FF48072A28315
+:1027100099F82A0097F812B0C3F340128DF83C20C4
+:102720000B920CF057F90146062204F12B00002908
+:1027300040F0E58012F0DBF904F12503BBF1FF0F57
+:102740000E9304F11F0300F0E3801A4651465846E9
+:102750000BF0A6FBA27F0E980232A27712A90622E6
+:1027600012F09AF996F8DC30698AAA8AA286C3F335
+:10277000820384F83830BDF83630E386618630460F
+:1027800008F01EF821462882E0807C680A9806F04E
+:10279000F9FD2B8AE3800F2323710B9B2068002B0C
+:1027A00000F0B28095F809E02B7A95F80BC0A97A71
+:1027B00095F8212041EA0C2143EA0E234B4042F0D8
+:1027C000400201216B8485F821202177214606F003
+:1027D000D9FD06F0E1FD95F84900012100F0070060
+:1027E0000CF03CFD604A4FF0000A8346312300F2B2
+:1027F0005240A0FB02013360C6E901AA56A3D3E907
+:102800000023FDF77DFCFC68BDF83020AD6A20F0A8
+:102810007F4040F2E24303FB023302215246F06064
+:10282000A4F5AE7401201C4402F09EFA484607F05D
+:1028300011FA821C4D4BCDF80090D2B250460121C6
+:1028400003F0D4FE0128A8EB0508A4EB0B0477D015
+:1028500099F82830DB076BD4304607F0B1FFDFF87A
+:1028600008B1A8FB0B893CA3D3E9002305464946E0
+:102870004046FDF745FC3E4A069620F07F4AAAFBFB
+:102880000223072101FB0A3340F23D11BF68089182
+:102890003849079138490591B8EB020069EB03010B
+:1028A000F368049300264FF47A7200230396FDF731
+:1028B00027FC29A3D3E900238446A4FB0B01CDE91F
+:1028C00001ACFDF71DFC053520F07F40EDB2313F36
+:1028D0003B4600902A463046012103F01BFE30F0B3
+:1028E000020304D025484FF49F7101F0EFF8012254
+:1028F0001046022102F038FA15B0BDE8F08F04F15D
+:10290000240112F0C9F817E79DF83C3023775DE702
+:102910000E9811930622002112F0E9F89DF840303C
+:10292000A377119B12A91846062212F0B5F819E7F1
+:102930000023012200931846114603F057FE8BE74F
+:1029400006F0B6FD814583D00C484FF4EC7101F0E0
+:10295000BDF87DE7AFF300808D49FD1A0700000048
+:102960007FC3C901FF59620200CA9A3B4DD30000E0
+:102970008D49FD1ABDD20000D1D20000B45E010025
+:1029800083DE1B43000000002DE9F041D0E90BC7B6
+:10299000D0F828800CEB07043034A0450E461546CD
+:1029A00018D81B4F18A3D3E90023ACFB0701FDF790
+:1029B000A7FBA4EB080420F07F40306012A3D3E90A
+:1029C0000023A4FB0701FDF79BFB20F07F4028605C
+:1029D000BDE8F0810E4C0CA3D3E90023A8FB040151
+:1029E000FDF78EFB20F07F4307F130003360A0FB42
+:1029F000040105A3D3E90023FDF782FB20F07F400B
+:102A00002860BDE8F08100BF8D49FD1A0700000075
+:102A100000CA9A3B000000002DE9F04F0E7F1746D8
+:102A2000126891B00C464FF0000A1D46C2F808A08B
+:102A3000C6F3C013D2F800908DF83430243106224A
+:102A400080460EA82E6812F027F8237FA4F81CA059
+:102A5000797C97F812A0C3F3401211F001018DF8B0
+:102A600030200B9204F12B004FF0060200F0E780BB
+:102A700004F11E0112F010F8BAF1FF0F04F1250362
+:102A800004F11F0B00F0E5805A46504604F11E0188
+:102A90000D930BF005FAA27F0D9B0232A2770EA9CF
+:102AA0001846062211F0F8FF6B8AAA8A6386B9F8E5
+:102AB0003030E386A2860DF0A5FB84F8380030465E
+:102AC00007F07EFE034628822146E38040467C686C
+:102AD00006F058FC2B8AE3800F2323710B9B2068A0
+:102AE000002B00F0A88095F809E02B7A95F80BC030
+:102AF000A97A95F8212041EA0C2143EA0E234B40A4
+:102B000042F0400201216B8485F821202177214683
+:102B100006F038FC06F040FC95F84800DFF868A1A4
+:102B2000C0F3C00100F007000CF096FB00248346C0
+:102B3000312300F252403360C6E901444CA3D3E98B
+:102B40000023A0FB0A01FDF7DBFAB5F812C0FB6811
+:102B500020F07F40F06022460221012040F2E2484E
+:102B600008FB0CF8A3F5877502F0FEF8484607F05D
+:102B700057FA021DD2B2404B00920121204603F0C9
+:102B800035FD2346032201210094204603F02EFD4B
+:102B9000304607F015FE069640F2C923BF68374A53
+:102BA0000893374B07920593F368049388FB0A89CF
+:102BB00000F1050C2EA3D3E90023404649465FFAF5
+:102BC0008CF60394FDF79CFA104619464FF47A727E
+:102BD0000023FDF795FA26A3D3E90023844649464E
+:102BE0004046CDF808C0FDF78BFAA5EB0B058446EF
+:102BF0001FA3D3E90023A5FB0A01CDF804C0FDF70C
+:102C00007FFA313F20F07F403B460090324620461D
+:102C1000012103F07FFC30F0020304D0194840F298
+:102C2000CA2100F053FF01221046022102F09CF855
+:102C300011B0BDE8F08F9DF83030237767E711F0D1
+:102C400056FFBAF1FF0F04F1250304F11F0B7FF4C7
+:102C50001BAF18460622002111F049FF9DF83430C1
+:102C6000A3770EA95846062211F016FF1CE700BFF5
+:102C70008D49FD1A0700000009D400000DD40000A2
+:102C800021D40000F85E010000CA9A3B0000000059
+:102C90002DE9F04F91B00446079090F93D00E468AB
+:102CA0000B940028B8BF1434CDE9091205934FF0F6
+:102CB000FF024FF00003B8BF0B94DDE91A7BCDE9AA
+:102CC0000D3390461E468DF8332006921C469A46D8
+:102CD00004931D4641E09DF83300FF2859D0B8F118
+:102CE000FF0F09D00E9B534506D099484FF4BB7196
+:102CF00000F0ECFE9DF83300831E122B00F29A8048
+:102D0000042840F2A480069BFF2B40F08F800538FA
+:102D100080B207F05DFD079B834200F08B8009992C
+:102D200090F93D203B78002940F09F80002A12DB7B
+:102D3000C268DDF83490DDF82480283208920A9ABF
+:102D400012684A45C0F0A080089ADDF838A09DF8C6
+:102D5000338004924D469C426FD20FAB02937D4B61
+:102D600001930DAB022100930DF133020EAB002055
+:102D70000F9103F081FC02286CD00F9B002BAAD08E
+:102D8000734840F26D1100F0A1FE9DF83300FF285A
+:102D9000A5D10A9B1A683B78954238BF1546A342D5
+:102DA00042D9049BDFF8B481EB18A3FB0801072686
+:102DB00006FB031164A3D3E90023FDF7A1F9664BD9
+:102DC000A3FB0020059AC0F38F218A424FEA90208E
+:102DD00040F2A9800FF2701ADAE9009A06930CE02B
+:102DE000FDF78EF9069BA3FB0030059BC0F38F21F6
+:102DF0008B424FEA902040F296800BEB440C0BF88C
+:102E00001400090A8CF80110049997F800C00134E5
+:102E1000283501EB050EE4B2AEFB0801A4454A4695
+:102E2000534606FB0E11DBD80A9B1D603C7011B0A7
+:102E3000BDE8F08F3B789C428FD39DF83330FF2B59
+:102E4000F4D10A9B1B689D4238BF1D46ECE73B78D6
+:102E5000069080E70F9B022B8FD10221002003F008
+:102E600051FC0F9B022BF8D087E7002AC168DDF8E0
+:102E700034904DDA01F13C0208920A9A12684A45F0
+:102E80004FF01408BFF460AF954238BF15469C421E
+:102E900037D2049B0B9A1A97134498441BE0FDF712
+:102EA0002FF92D4B059FA3FB0030C0F38F26BE42A8
+:102EB0000BEB440204F101034FEA16214FEA902084
+:102EC00005F1280533D20BF8140051701A9A1278C4
+:102ED000DCB2A24222D92946484603F02DFC049BCD
+:102EE0001E4A2B448446C445A3FB02014FF007024F
+:102EF00002FB03114FF0000A13A3D3E90023CED243
+:102F00001A9F0A9B1D60059BB34215D93B781BE7AE
+:102F100001F1280208924FF0000810E70A9B1A9F5F
+:102F20001D603B7810E70A9B00251D607EE70A9B29
+:102F30001A9FC3F800A055469DF83330FF2B7FF44D
+:102F400075AF26E7AFF3008000CA9A3B000000008F
+:102F50003C5F01002DDA00005917B7D18D49FD1AE9
+:102F60002DE9F04F8FB01C4609934FF0FF0A002364
+:102F70000431DFF8F890DFF8F8B0236004930446DA
+:102F8000089115460C9305938DF82FA00DF1340888
+:102F90000CAF0226CDE9019800972B460DF12F02C8
+:102FA000214600200D9603F067FB022830D00D9BD0
+:102FB000002B33D19DF82F00FF2837D00538C3B23E
+:102FC0000F2BE7D880B207F003FC0028E2D090F97D
+:102FD0003D30002BDEDBC3680C9ABAF1FF0F03F122
+:102FE00004030CD0059907931046069203F0A4FB46
+:102FF000049B089A99188842DDE9062319D8CDE97F
+:1030000004329DF82FA0C5E72146002003F07AFB8B
+:103010000D9B022BF8D00D9B002BCBD05846522194
+:1030200000F054FD9DF82F00FF28C7D1BAF1FF0F23
+:1030300010D0DDE904320C481344A3FB0001072241
+:1030400002FB031106A3D3E90023FDF759F8099BFE
+:10305000803018600FB0BDE8F08F00BFAFF3008084
+:1030600000CA9A3B000000008D49FD1A2DDA0000CD
+:103070003C5F01000000000070B51C4682B01546A0
+:10308000064601AA02200195FFF76AFF23680BB3E9
+:103090000198431B1B021FD4294603F04DFB1A4B1A
+:1030A0000246A0FB0301072303FB021114A3D3E98B
+:1030B0000023FDF725F8226802442260002A09DB7C
+:1030C00040F2E24101FB06F0904203D2121A904214
+:1030D000FCD3226002B070BD0146284603F02CFBF1
+:1030E000094B0246A0FB0301072303FB021104A3C3
+:1030F000D3E90023FDF704F82268121A2260DDE705
+:1031000000CA9A3B000000008D49FD1A0000000033
+:103110002DE9F041B0F8802188B0054640F2E24345
+:10312000454805AE03FB02F3002783FB000106249C
+:103130003FA3D3E9002377600597B7608DF80F4070
+:10314000FCF7DEFF0DF10F020196B5F87631009223
+:1031500004460121284604AA0494FFF799FD9DF82E
+:103160000FC00CF1FF34E4B20DF11603394603EB46
+:1031700044042F4605F10C0E4FF6FF7097F881318D
+:1031800097F8802142EA03220FFA82F8BCF1000F7F
+:1031900009D03346824203D01988914217D00121C9
+:1031A00002339C42F6D10237BE45E7D1F1B9BDF8F2
+:1031B0001430D5F8F01040F2E24202FB03F2180A94
+:1031C000C5F810210B70487008B0BDE8F081D5F843
+:1031D000F01040F2E24303FB02F3120AC5F810318B
+:1031E00081F800804A7008B0BDE8F08195F8E820C9
+:1031F00095F8703185F8E92085F871310AF058F8B2
+:10320000D5F8F03013F8052C03252A4311240F209C
+:10321000202103F8052C03F8045C03F8024C03F8A2
+:10322000010C197008B0BDE8F08100BFAFF3008059
+:103230008D49FD1A0700000000CA9A3B00000000FB
+:103240002DE9F04F83B004460EF094F910F0FF0F13
+:103250000AD10CF017F8A04821460EF041F803B04F
+:10326000BDE8F04F0EF058B90EF0A4F95FFA80F8FF
+:103270000EF02AFAC6B20EF031FA07460EF07CFCC8
+:10328000C5B20EF067FC82460EF0E6F981460BF0FF
+:10329000F9FF002E40F0AB80002D40F0BA80FF27F0
+:1032A000B8F1000FD7D0A37D190700F1A880002E38
+:1032B00040F0E781012006F051F98046002800F037
+:1032C000F781A3685FFA89F6002B00F0D680A37D12
+:1032D0001A0740F1E28198F81C0010F00F0340F04B
+:1032E0009E8098F81D30252B00F2A481042006F062
+:1032F00035F90028AFD00EF033FBA36A814643B9FD
+:10330000E28C40F2712303FB02F3B0FBF3F203FB08
+:10331000120923687148DB680722A3FB000102FB46
+:1033200003116BA3D3E90023FCF7EAFEA0F24233BA
+:103330004B4590D30EF06AF9D4F808A00EF048F986
+:1033400098F81C200178C2F38012D20101F05001DC
+:1033500042F025020A43222102704170834638461A
+:103360000BF046FBE27D0090D20701460BF1020014
+:1033700040F1AD81002900F0AA819BF8002042F0C5
+:1033800040028BF80020062211F086FB062208F18D
+:103390001E010BF1080011F07FFB04220AF1080165
+:1033A0000BF10E0011F078FB03220AF10C010BF176
+:1033B000120011F071FB0122BAF812308BF81520BF
+:1033C00001930EF0CDFAD4F8109000F5DB62B9F15C
+:1033D000000F00F0A281019B40F2E24101FB03F1EA
+:1033E000B9F1000F01DB4A457AD98944F8E7A07D9D
+:1033F000F9B2C0F3C0000BF019FB074650E7002EEE
+:103400007FF458AF38460BF083FB00287FF452AFAF
+:1034100021E75FFA8AF00BF049FB074640E7012BF2
+:1034200040F0E08098F81D300C2B7FF414AF08F1C9
+:103430002409C00949463A460BF000FC00287FF4F5
+:1034400055AFE37DDB0700F1CE81A37D98F81C002A
+:10345000C3F38012B2EBD01F00F0FF81C3F3C103AE
+:1034600098070AD598F91C30002B06DA98F829300D
+:1034700003F0C003402B3FF439AF98F81C0010F064
+:103480000F0340F0AF8098F81D30252B3FF6E3AED8
+:1034900094F91620002A03DAA268002A00F0548169
+:1034A000252B98BF4FF0000900F2C480002B3FF499
+:1034B000D2AEA368002B7FF4CEAE002D14BF3946E8
+:1034C000FF214A4630460CF0DBFDC4E6AFF3008036
+:1034D00000CA9A3B000000004DFE00008D49FD1A15
+:1034E000CF489BF81510A9EB0202A0FB0232C2F3F1
+:1034F0008F220131ABF816208BF81510BAF81200A4
+:10350000BAF81410A28AABF81C20ABF81800ABF87C
+:103510001A1005220AF11C010BF11E0011F0BCFA71
+:103520009AF822109BF8232061F304028BF82320E1
+:103530000CF068FE9BF8232060F347128BF82320E1
+:1035400058460DF0BBFF0EF00BF8002840F0EB8062
+:10355000B44821460DF0C4FE002E40F0F0802279E0
+:1035600042F00101D307217100F1E38006F014F865
+:103570000A22064602714FF6FF7298F81C80C2803C
+:10358000594624221C3011F087FA337FB460C8F307
+:10359000401868F3451333770EF086F90021306147
+:1035A00008460DF09BFF002D08BFFF27B776E27D90
+:1035B000A9EB000012F00102706103D0009B1A1EFB
+:1035C00018BF0122737E62F30003737605F0E4FFF7
+:1035D0003146F060306805F0F7FF03B0BDE8F04F0A
+:1035E00006F002B8062B69D0022B6DD0012B21D139
+:1035F00098F81D300C2B7FF42EAE08F1240AC00978
+:1036000051463A460BF01AFB8146A8BBA37D98F8B9
+:103610001C00C3F38012B2EBD01F00F0EB80C3F3A9
+:10362000C103980704D598F91C30002BC0F2EB8039
+:1036300098F81C0000F00F0004287FF40CAE98F8F6
+:103640001D30252B3FF607AEA37DDA077FF503AECD
+:103650000DF0BEFF98F81C300278C3F38013B3EB73
+:10366000D21F7FF4F8AD0830062208F11E0111F0D8
+:1036700003FA00287FF4EFAD98F81D304FF00009F1
+:1036800014E7394628460BF073FA00287FF412AE8F
+:10369000A37D1B077FF5DFAD0CE6FF2F26D0237E31
+:1036A000DB1BB3FA83F35B09002B7FF414AEE4E673
+:1036B0005D4840F2972100F009FA02E698F81D30C3
+:1036C000252B7FF6E5AEB5E798F81D30E8E6A27D3C
+:1036D0009BF80010C2F3801262F386118BF8001081
+:1036E000062204F1190111F0D7F94FE698F81C00F1
+:1036F000C3F34013C0F3801293427FF4C0AE06229E
+:1037000008F11E0104F11F0011F0B6F9B0FA80F3C0
+:103710005B09002B7FF4DFADAFE68BF816908BF8DA
+:1037200017909146EAE640484FF4447100F0CEF914
+:103730000EE73D4840F2363100F0C8F916E70DF0CB
+:103740007DFF8AF8A5000AE796200DF0DDFF002036
+:103750000DF042FF002D14BF3946FF2130460022F4
+:103760000CF08EFC00287FF476AD0DF031FF98F858
+:103770001C300278C3F38013DB01054602F07002AF
+:1037800043F0030313430C222B7038466A700BF08E
+:103790002FF9E37DDE0701464AD5002848D02B7873
+:1037A000284643F0400300F8023B062211F074F96A
+:1037B00008F11E01062205F1080011F06DF92846F6
+:1037C0000DF07CFE0DF0CCFE002840D10EF0C0F8CC
+:1037D000A37D164843F001032146A37503B0BDE85D
+:1037E000F04F0DF07DBD38460BF002F900287FF454
+:1037F00044AE2AE65146062204F1190011F03CF9C4
+:10380000B0B3A37D0BE798F8293003F0C003402B39
+:103810007FF40EAF98F81D304FF0010946E600BF67
+:103820005917B7D1210001005C60010069FE00005A
+:10383000A37D2A78C3F38013284663F3861200F829
+:10384000022B04F11901062211F026F9B0E70A480B
+:1038500040F2913100F03AF9B8E74946062204F106
+:10386000190011F009F900283FF440ADA37DF5E5FA
+:1038700098F81D301AE600BF5C60010038B5094DAC
+:103880004FF0FF324FF0FF33284611F0E7F90446BE
+:1038900001F084F910B120460EF0DCFB10F0C0F806
+:1038A000EEE700BFE006002010B50F480F4C0FF008
+:1038B000C7FC206098B110F0B6FC206810F0A8FC9E
+:1038C0002068836823B19B6C13B109490022984793
+:1038D000206883689B6A2BB19847002010BD6FF069
+:1038E0001500FBE71846F9E7E8650100F00A00203B
+:1038F000F53800002DE9F04F6B4D286883685B6B4D
+:103900008DB043BB286810F088FC286810F085FC57
+:1039100068B1664E336834460BBB6548002200230D
+:1039200011F09CF93060D0B9286810F071FC28685B
+:1039300083685B6B002B60D0984700285DD0DFF870
+:1039400084A15C4E57469AF80030032B55D8DFE827
+:1039500003F01D30799B98470028D6D1D2E728681C
+:1039600083685B6983B121688A89896898470146C1
+:103970002068083011F0B5F920688689002ED6D16C
+:103980000EF068FB2660D2E71946F1E74A4C28683A
+:103990000122214610F036FC78B323785A1E012A02
+:1039A000D1D8012B0CBF03230423336001233B70C8
+:1039B000C9E7DFF80491326899F80030DFF8FC803D
+:1039C0002868012B0CBF03210421891A414410F0FF
+:1039D00019FC33681B1A04463360002B50D10123B5
+:1039E000CDE9009300220023062001F07BF8DFF8E8
+:1039F000D8B0CBF8000018B938700DB0BDE8F08F22
+:103A000099F80030CBB998F802203260012B0CBF36
+:103A1000032204222949083011F051F9DBF8000093
+:103A2000083011F06EF93368984209D2DBF80000D3
+:103A30000EF010FB03233B7022E0B8F80220E4E70D
+:103A40000223F8E7DFF880803268D8F80030286871
+:103A500099899B68194410F0D5FBD8F800108B8920
+:103A600003448B813368A3EB00080446C6F800804A
+:103A7000B8F1000F04D1124811F00EF987F8008058
+:103A8000002C7FF460AFB8E732682868212A28BF8D
+:103A9000212203A910F0B6FB33681B1A04463360D9
+:103AA000002BEDD1C7E700BFF00A0020EC0A002090
+:103AB000F8060020F40A0020974A0020924A0020CD
+:103AC000E0060020964A0020E80A0020F8B50546E6
+:103AD0000F464FF02002EFF3118382F31188BFF3FA
+:103AE0006F8F234C206810F09EFB206810F090FB35
+:103AF000002D36D12E462068042110F099FB206855
+:103B0000FF2110F095FBB11D2068C9B210F090FBA9
+:103B10002068AA2110F08CFB36B1013D15F8011F79
+:103B2000206809BB10F084FB2068F9B210F080FB1C
+:103B30002068C7F3072110F07BFB2068C7F307411B
+:103B400010F076FB2068390E10F072FBFEE70133AF
+:103B50002F2A08BF1E46EA5C002AF8D135449E1B76
+:103B6000C9E700263346F6E710F062FBD6E700BF50
+:103B7000F00A002070B5184888B001F015F800224E
+:103B80000023CDE9062300236FF00802CDE90323CB
+:103B9000CDE9013300931149114B12484FF4806273
+:103BA00010F04CF810490F480B4D104E104C11F00E
+:103BB00005FD4FF0FF324FF0FF33284611F04EF86D
+:103BC0000146304611F068F820688368DB69002BF5
+:103BD000EFD09847EDE700BFC8060020E04E002078
+:103BE0007D38000088070020EF650100F8060020FE
+:103BF000F00A00202DE9F84FB0F8189019F00808E5
+:103C0000044693460DD001290CBF49F0100949F034
+:103C10002009A0F818908BF31188BFF36F8FBDE8CF
+:103C2000F88F09F00709022907D1204610F030FB70
+:103C30000028F0D00128238B50D16769218B002FF9
+:103C400015DA256821F00701C4E9008841F0010177
+:103C500021830026218B01F0070ACA4502D0A36800
+:103C6000002B5CD10DB9002E74D0002358E001F078
+:103C700007035A1F012A20D821F00701062B2568C7
+:103C800089B2C4E900880CD1002D2B4638BF00232F
+:103C90002BB1628B1B6801326283002BF8D141F09B
+:103CA00002012183204610F0F3FA06460028D1D005
+:103CB000238B43F020032383CBE7042B0CD121F08B
+:103CC000070189B22183204610F0E2FA0546002858
+:103CD000BFD041F0200121830025BAE7032809D194
+:103CE000226923F00703166843F0060323830025A7
+:103CF0002F46AFE7042806D1226923F00703566850
+:103D000043F00403F2E7052806D1226923F00703F4
+:103D1000966843F00503E9E700252E46E8E701230E
+:103D200041F0080121838BF31188BFF36F8F03BB30
+:103D3000002D33D116B121492046B0474FF0200362
+:103D4000EFF3118B83F31188BFF36F8F238B23F075
+:103D500008032383238BDA0628D523F0100323835B
+:103D60000121B4F8189009F0070900297FF45BAF2E
+:103D700051E7A1680029DBD00B68D1F804B0002B13
+:103D800038BF0023994652463B462046D847B9F1F2
+:103D9000000FCDD0D9F800304946EEE729463B4622
+:103DA000524620462D6810F08FFAC1E713F020012B
+:103DB0001EBF23F0200323830221D2E7F542010036
+:103DC0000E4A70B5841AA3100D4C5C430546E4B24C
+:103DD0000C2000FB04200E464021084410F08EFD0C
+:103DE000011E05DB074B03EBC40463689847002101
+:103DF00028463346BDE87040184700BF080B002036
+:103E0000B76DDBB62C5C01002DE9F041104E841B30
+:103E1000A310104C5C43E4B20C256543804605F1C9
+:103E200040000F463044402110F081FD011E09DBA7
+:103E3000094A7319C3E90E27084B53F83430BDE81B
+:103E4000F041184740463B46BDE8F041184700BFE7
+:103E5000080B0020B76DDBB6914901002C5C010016
+:103E6000002270B501210446104600F0F9FA002046
+:103E700000F0C4FA0F480FF0E9F80F4B984215D143
+:103E800011F031F9E6680D49304610F050FA00287B
+:103E90000BDB01253564E468084904F11C0010F0CF
+:103EA00046FA002801DBE564002070BD6FF00400D5
+:103EB000FBE700BFF53E00000000AD0B3C5C0100DD
+:103EC00001460C2309484B4370B5C418D4E90E567B
+:103ED00000224033A263184410F047FD2DB1324652
+:103EE0002B460348BDE87040184770BD080B002002
+:103EF0001406002010B1012804D07047034B1B6C3E
+:103F00005B0701D1FFF7DCBF704700BF080B002043
+:103F100008B54FF02003EFF3118183F31188BFF34D
+:103F20006F8F124A136843F0020013F00103106010
+:103F30000CD04FF08042D2F80C34D2F80C2413F09D
+:103F4000010303D00A4810F010FD012381F311880A
+:103F5000BFF36F8F23B1BDE808400020FFF7B0BF6B
+:103F6000BDE8084001200FF081B800BF580B0020C9
+:103F7000480B0020094BBFF35B8F53E8002F22F062
+:103F8000020143E800100028F7D1BFF35B8FD3078D
+:103F900002D401200FF09CB8704700BF580B0020DE
+:103FA00010B58AB000230122CDE90632019308AA98
+:103FB0000A4BCDE9082204AC01AACDE90444CDE9BD
+:103FC000023410F00BFD002805DB4FF48042002383
+:103FD00020460FF0BFFD0AB010BD00BFA34901008D
+:103FE000024AC3B21C2003FB00207047080B0020CC
+:103FF000094BBFF35B8F53E8002F42F0010143E808
+:1040000000100028F7D1BFF35B8F930702D4012083
+:104010000FF02CB8704700BF580B0020094BBFF3BE
+:104020005B8F53E8002F22F0010143E800100028C5
+:10403000F7D1BFF35B8F930702D401200FF048B88C
+:10404000704700BF580B00202DE9F8433A49BFF3F1
+:104050005B8F0646012251E8003F41E8002000281E
+:10406000F9D1BFF35B8F33B9344935484B60CB602E
+:104070008A6010F06FF9731E012B32D8012E07D120
+:104080004FF08043D3F81C3403F00303012B28D0F6
+:1040900011F08CFA044618B92A4B1B78002B44D136
+:1040A0004FF02003EFF3118583F31188BFF36F8F77
+:1040B0000124254FDFF89480DFF894904FF0804280
+:1040C000D2F81834D2F81824D2030CD503F0030325
+:1040D000012B01D0012E06D10CB385F31188BFF35B
+:1040E0006F8FBDE8F883ACB1284600F043FA4FF07B
+:1040F0008042D2F81835002BE0D139680029DDD094
+:104100003B603B680123C2F81835C8F88031C9F814
+:104110000030D3E7002121200FF0D0FCE7E74FF07B
+:1041200080430222C3F80423DBE74FF080430222DE
+:10413000C3F808230546BCE75C0B0020F80A002002
+:10414000240B0020DC4E00200401004000E100E0D0
+:1041500008000040821C084B22F07F42C3F8402533
+:10416000D3F80425904200D17047D3F80405821C8F
+:1041700022F07F42F2E700BF00100140074B00220F
+:104180001A601B68064A074BD3F840051368C01A2B
+:1041900020F07F40034413600FF014BF4011014032
+:1041A000600B00200010014038B5104D104B00246A
+:1041B000C5F808451C601B680E4B4FF40032C3F86D
+:1041C00080214FF48033C5F80433224601211120A9
+:1041D00000F046F9112000F011F9074A012313609D
+:1041E00002202B60FFF730FF204638BD0010014051
+:1041F0004011014000E100E008100140F8B52B4BF0
+:104200002B4C1968D4F804252A4D521AB0F1FF3FFF
+:1042100008BF284622F07F43120236D4013820EA34
+:10422000E070A842A8BF284601331844A84294BFB2
+:104230000D184D194FF48031C4F80813D4F8042533
+:10424000D4F840351C4E00279B1A376023F07F437B
+:104250003068012B22F07F40C4F84005C4F84413B5
+:1042600004D10F2011F0A8F937603368134B4FF4D5
+:104270000032C3F88021D4F804052B1A23F07F43C1
+:10428000012B04D1FFF766FF0BE00020CCE725F0FF
+:104290007F43C4F84035D4F804052D1A023D2B02A3
+:1042A000F0D44FF48033C4F80433F8BD600B002021
+:1042B00000100140FFFF7F004011014000E100E0DD
+:1042C0004FF02002EFF3118382F31188BFF36F8F59
+:1042D000064AD2F80405064A1268801A20F07F4088
+:1042E00083F31188BFF36F8F704700BF0010014048
+:1042F000600B002010B5114C114AA2610323C4E9E0
+:104300000433104BE36122664FF480630E4A0F4979
+:104310002362626600231022E01DA3626362E362EF
+:104320002367E3666367A26610F090FB08492046A6
+:1043300010F08CFB2023A37110BD00BF640B002084
+:1043400014660100A84A0020984A00201D6601005A
+:1043500021660100094A0A4993680968D967094931
+:1043600098674B6843F080534B60002383F31188B8
+:10437000BFF36F8F9368D86F704700BF484A002023
+:10438000E465010000ED00E012498A684FF0380052
+:104390001044EFF3098C80E8F01F202080F311888F
+:1043A000BFF36F8F0C4F4FF000664A6A8A603E6021
+:1043B000906F0023936780F3118804B5104600F0D6
+:1043C0008DFABDE8044002F1380090E8F01F8CF34C
+:1043D00009887047484A002004ED00E01EF0040FF1
+:1043E0000CBFEFF30880EFF30980816911F8021C1C
+:1043F0000229FFD001B510F01EFB01BD43B2002B16
+:1044000008DB012200F01F0002FA00F05B09024AFB
+:1044100042F82300704700BF00E100E043B2002BE8
+:104420000DDB01225B0900F01F0002FA00F02033CF
+:10443000034A42F82300BFF34F8FBFF36F8F7047DB
+:1044400000E100E0054B420900F01F0053F8222074
+:10445000012303FA00F01040704700BF00E100E0C4
+:1044600043B2002BA8BF03F1604301F10101B8BFC3
+:10447000064B4FEA4111ACBF03F5614300F00F005A
+:10448000C9B2B4BF195483F80013704714ED00E0AB
+:1044900008B572B6044B186A18B100221A6210F0FF
+:1044A00055FE62B608BD00BF484A002042F8203CD5
+:1044B000009B42F81C3C0A49019B42F8183C029BB5
+:1044C00042F8143C21F001014FF0807342F8043CA3
+:1044D00042F8081C0023203A82658367704700BFBA
+:1044E000314401000B4A0346906890B113F1160F56
+:1044F000806E05D0A0F120029A4206D8834204D2F1
+:1045000081422CBF0021012100E00021002908BFC9
+:1045100000207047484A002008B504460E4615465C
+:1045200000F0C0F9084B20469C6000F0D7F92846FF
+:1045300086F30988002163B681F31188BFF36F8F7A
+:10454000002200230FF074FF484A00200149102286
+:104550000A60704710ED00E072B6404080F31188A9
+:10456000BFF36F8FBFF34F8F30BF62B6BFF36F8F54
+:10457000704700BF72B6494081F3118820BF80F3B5
+:10458000118862B6704700BF30BFFFF7FDBF00BFA4
+:104590000E4A08B50E4B22F07F029A60BFF34F8F90
+:1045A000BFF36F8FD3F8882022F47002C3F88820FD
+:1045B000EFF3148323F0040383F314880EF082FED8
+:1045C0000EF08AFE00F036F90EF0B8FE0000000092
+:1045D00000ED00E001B572B60B4A106A00281EBF5C
+:1045E0000021116210F0B2FD62B6EFF30580A0F178
+:1045F00010004FEAC0000549014409C99847BDE8C9
+:104600000140034908470000484A0020785A010049
+:104610001948000010F08EFA202080F31188084815
+:104620004FF40261401880F30988EFF314800221EF
+:10463000084380F31488BFF36F8FFFF7A9FF0000D2
+:10464000805C0020EFF30880EFF3098101B572462A
+:1046500000F064F801BD00BF38B5174B14469A6AE4
+:104660009A6A9A6A0546900716D5586B9A6A120696
+:1046700004D519B19A6A22F080029A629A6A9A6AFB
+:104680009A6AD2060BD400200B4A936A43F0FF03C8
+:1046900093620023237038BD6FF01500EEE75B686E
+:1046A0001B05F0D52946FFF71DFF0028EBD080F34E
+:1046B00009880220E8E700BF00ED00E00D4B9A6A90
+:1046C0009A6A9A6A920508D59A6B9A6A120404D576
+:1046D00018B19A6A22F400429A62064B9A6A9A6A60
+:1046E000D20558BF9A6A9A6A002042F47F429A62C1
+:1046F0000870704700ED00E0074B9A6A9A6A9A6A60
+:104700009A6A9A6A9A6A9A6A6FEA02426FEA12424F
+:104710009A620020704700BF00ED00E070B5374B93
+:104720005B688AB00E46C3F30803002585F3118841
+:10473000BFF36F8F02F07F41B1F17F4F11D102F0D3
+:104740000C0108290DD0110701D4064601250022CD
+:10475000033B8DF80720032B48D8DFE803F0043F24
+:10476000433C2E46F3E7254BDA6A92073ED4DC6AD7
+:1047700014F0804409D028331B78F3B10DF10702FF
+:1047800001213046FFF768FF04469DF8073093B9D2
+:104790002022314602A810F07FF9099B45B3C3F3EC
+:1047A000080222B96FEA53236FEA4323099302A94F
+:1047B000204610F03EF90AB070BD114B1B782BB1AA
+:1047C0000DF107010120FFF779FFDDE70D4B188898
+:1047D00084B2002CD9D0FFF78FFFD5E70DF1070287
+:1047E0000021CEE70DF107010020ECE70024CCE723
+:1047F00023F4FF7323F00103D8E700BF00ED00E0CE
+:1048000029ED00E02AED00E0024A536943F010036D
+:104810005361704700ED00E0044B9968586A884284
+:1048200003D003494FF080520A607047484A002085
+:1048300004ED00E0044800232021C2180133302B8E
+:1048400082F80013F9D1704700E100E010B504468A
+:104850000EF0FCFF114B9B68A34207D1EFF30583D9
+:1048600083B10F4A536843F0805353604FF02003E5
+:10487000EFF3118083F31188BFF36F8FBDE8104011
+:1048800010F0B2BD4FF02003EFF3118083F31188D5
+:10489000BFF36F8FFFF75EFDE8E700BF484A0020D7
+:1048A00000ED00E01FB5084B0193084B0293084B45
+:1048B000039301AB0093074A074B0121684600F0C0
+:1048C000A7F805B05DF804FB000000200000000020
+:1048D00000000B0600000020000004201FB5836EBE
+:1048E000203B0193064B2022CDE90223012101AB9D
+:1048F0006846009300F096F805B05DF804FB00BF31
+:1049000000000B15DFF884C0F0B5064600271046FE
+:104910008F4200DBF0BD56F827E0DEF8044094B388
+:1049200043B1651E2C4219D11F2C17D9DEF8002087
+:10493000154213D1202CC2B2DEF80050DEF8080078
+:104940000FD9B4F1004F0ED8013CB4FA84F4C4F18D
+:104950001F046400072A44EA000406D96FF015001A
+:10496000D8E70824F6E73E24F4E725F01F051543B1
+:1049700045F0100544F00104CCF80820501CCCF898
+:104980000C50CCF810400137C2E700BF90ED00E0BA
+:10499000034B05225A60BFF34F8FBFF36F8F7047F1
+:1049A00090ED00E0BFF35F8F014B00225A6070472B
+:1049B00090ED00E013490868082810B51ED8FFF7ED
+:1049C000F1FF114C49680022904201F10C0105D120
+:1049D0000E4B1870FFF7DCFF002010BDA26051F8ED
+:1049E0000C3C23F01F03134343F01003E36051F822
+:1049F000043C43F0010323610132E5E74FF0FF304F
+:104A0000EBE700BF485C010090ED00E0A84E0020FD
+:104A100010B5034C01232278FFF774FF207010BDFE
+:104A2000A84E002008B5084A00231278FFF76AFF55
+:104A300010F1160F03D0054B0022072800DD08BD3A
+:104A400098601A610130F8E7A84E002090ED00E070
+:104A50004FF02003EFF3118283F31188BFF36F8FC0
+:104A600006490123C1F840354FF08041C1F878353F
+:104A700082F31188BFF36F8F0020704700E0014080
+:104A800020B1034B800143F001031847704700BF7A
+:104A9000105C0100074A0346106828B9D96831B193
+:104AA000196921B1136070476FF0440070476FF0CF
+:104AB000150070470C0C002070B500F0FD06012EAB
+:104AC00005460BD1064810F0C4F8044620B1314623
+:104AD000083010F0DDF82575204670BD0024FBE796
+:104AE000600700202DE9F0410228DDE90667044651
+:104AF00029D0062802D040B300251EE014490978C9
+:104B00000129F9D13478012C1AD0022CF4D11148A2
+:104B10000136013F10F09DF805460028ECD000F169
+:104B200008080121404610F0B3F82C752EB127B1CA
+:104B30003A463146404610F0C2F82846BDE8F081BA
+:104B400005480024E4E70348E4E70348E2E700BF40
+:104B500010060020100700203807002010B50D4B6C
+:104B60001B78012B04460CD1037D012B04D0032BB1
+:104B70000ED06FF0150010BD042104F1080010F0F4
+:104B8000A7F8054B2146186810F086F80020F2E7D8
+:104B90000221F2E710060020100C0020014B1B68D8
+:104BA0001B6918470C0C0020044B054A1B68106059
+:104BB0000BB1DB6818476FF0120070470C0C002037
+:104BC000100C00202DE9F0411446C21D22F0030212
+:104BD000671EBFB2186082B005460E4601FB070093
+:104BE0001480002104220FF082FFB7B1023CA4B26E
+:104BF00004FB066304FB06F71D44FF1A4FF6FF781B
+:104C00000422013CE8190DEB0201A4B201950FF05A
+:104C100043FF4445A5EB0605F2D102B0BDE8F081A3
+:104C200070B5056882B095B1EB1D23F00303042233
+:104C3000044629460DEB02001E880FF02DFF019B54
+:104C400023B1DA1D22F00302013E168023602846BC
+:104C500002B070BD0B6870B50C46054683B10733D2
+:104C600023F003031E880136B6B2042221462846EB
+:104C70000FF012FFEB1D23F003031E80256070BDB3
+:104C80000126F2E702FB0100704700BF401A80B224
+:104C9000B0FBF2F0704700BF531E11449BB242B10B
+:104CA000DB43CA18013811F8013D00F8013F914279
+:104CB000F9D17047014402E010F8013B1BB988426A
+:104CC000FAD1002070470120704700BF10600860D3
+:104CD000704700BF0A6803460068904205BF002283
+:104CE0000A6000201A60704710B4146820601468CD
+:104CF000616010BC10607047884203D01AB14368ED
+:104D000013607047002070470B68834209D02AB1B6
+:104D1000586810601A680A6018467047002BF9D16D
+:104D2000FAE70023F8E700BF2DE9F041DFF834800F
+:104D30000B4E0C2706F130044546221D214628461D
+:104D40000C3CFFF7C3FFB442A5F10805F5D1043FC1
+:104D50003B1DA8F12008A4F13006EBD1BDE8F0819D
+:104D60001C0D00208C0C002030B403460C469AB178
+:104D700001EB41010801144D03EB430100EB8101FC
+:104D80002944487A0D7AA84204BF013008722146AE
+:104D9000184630BC0CF004BF01EB41020A4D120171
+:104DA00000EB400302EB83032B449D7ADA7AAA429C
+:104DB00001D030BC7047054D01329A7201236B540B
+:104DC00030BC0CF033BF00BF980C0020940C0020C6
+:104DD00070B51C4606460D4622B363782278D21A77
+:104DE00012F0030205D0012A40D00133DBB2237058
+:104DF0000FE03022042112FB05110C2212FB0612D7
+:104E000001331B496068DBB20A4423702146FFF777
+:104E10006BFF184B3046012229465A550CF006FF0D
+:104E2000002070BD0CF0E4FE0028D6D029463046A4
+:104E30000CF0CAFE0028D0D005EB450211010C4849
+:104E4000637806EB460201EB82020244917AD27A41
+:104E50009142C3D12278D21A920702D00233DBB238
+:104E60002370D4E902039847002070BD104670BD3E
+:104E7000980C0020940C00204E490B5C002B00F095
+:104E800098802DE9F04F4C4B4FF03C0B87B000223F
+:104E90000BFB003B0A5400EB40070BF104010392AB
+:104EA00003EB071701924FF0030988460290002395
+:104EB000D7E9090105AA0593FFF71EFF07F12406AC
+:104EC0008346002834D0059C25786378ED1A05F0D8
+:104ED0000305012D06D1013B6370D4E90203984715
+:104EE000059C637894F800C0B86AACEB030303F048
+:104EF0000303012B4FF0000231465FFA8CFA0DD00C
+:104F0000FFF702FF62782378C4F804B09B1A03F01D
+:104F10000303012B84F801A044D0B86A014605AA16
+:104F2000786AFFF7E9FE012D834629D00028CAD10F
+:104F300097F82E3097F82F209A4203D087F82F3019
+:104F40000123019397F82C3097F82D209A4203D033
+:104F500087F82D300123039309F1FF395FFA89F9AE
+:104F6000B9F1FF0FA7F10C07A1D1DDE9013AB3B107
+:104F7000039BA3B91A46514650460CF011FE0EE0B1
+:104F8000B9F1000F01D10028D2D0DDF808A0094AFC
+:104F900001235146504602F80A300CF047FE07B094
+:104FA000BDE8F08F6270214658464246FFF79CFEEE
+:104FB000B3E77047940C0020980C0020A1B14B1E61
+:104FC000DBB210B4411EC418002011F8013F3BB100
+:104FD0005BB25A1E1340013013F0FF03C0B2F7D189
+:104FE000A142F2D110BC7047084670472DE9F04F3E
+:104FF000AD4D83B00446032701260421204609F065
+:10500000FBFF6378E27894F802C020784CEA022C27
+:1050100040EA03204FF0000840EA0C40C3464FEA44
+:10502000DC3CC1461E234FF0010A1AE008F10101E1
+:105030000E2BC9B25FFA83FC40F28A80CAB3944651
+:10504000CE461C2B40F21D811B2B40F2F08019290B
+:1050500039D088469246BEF10C0FF14633D0013B61
+:1050600039D320FA03F202F001026245DED10AF1DF
+:105070000102072BD2B240F2C480062A77D906FA81
+:1050800003F2BCF1000F51D020EA0200CE464FF0EF
+:10509000000C08F101010E2BC9B288BF0122D6D83D
+:1050A000F14500F0A18019290DD088464FF0010A82
+:1050B000D5E7CE460122052B75D9062A54D11929E8
+:1050C0004FF0000CC5D1013306FA03F3BCF1000F19
+:1050D00053D05B42184080EA050301930DF1040CA4
+:1050E0000DF1080E00221CF8013B3BB15BB2591ECA
+:1050F0000B40013213F0FF03D2B2F7D1F445F2D1E5
+:10510000012A09D983B2B3EB104F4FEA104237D1CD
+:10511000C3B2B3EB106F33D1013F17F0FF077FF439
+:105120006CAF6FF00D0003B0BDE8F08F1043414647
+:10513000CE464FF0010C8845ABD00E2B8BD8CE4518
+:105140008DD141460EF1010E5FFA8EFE52467EE78A
+:1051500009F1010EBCF1070F5FFA8EFE40F2948058
+:10516000002A40F09A8001224FF0000C69E7BCF160
+:10517000000F10D14146CE469FE7013B1843AAE7F6
+:10518000C0F30721130A207000206170A270E37041
+:1051900003B0BDE8F08F062A02D14146CE4658E75B
+:1051A0004146CE464DE7BBF1000F0CD0BCF1040FD9
+:1051B00083D8BBF1010F06D9BCF1030F3FF67DAFD9
+:1051C000BBF1020F09D806FA03F210430BF1010BF1
+:1051D0005FFA8BFB4FF0010CADE7062A3FF46FAF8F
+:1051E00029B14FF0000C2FE74FF0010AAAE706FAA9
+:1051F00003F2072B40EA020088BF4FF0010C9AD857
+:10520000E4E7BCF1000F2AD00BF1010B062A5FFA8C
+:105210008BFB1DD906FA03F220EA02004146CE4676
+:105220000BF1FF3B5FFA8BFB4FF0000C83E701298A
+:105230003FF60DAF06FA03F2BCF1000FD9D0072BF1
+:1052400020EA020088BF4FF0000C3FF674AFE7E79A
+:10525000A3D0B8F1000F0AD04146CE46F4E6062AA4
+:105260000AD906FA03F210434146CE46AEE706FAE3
+:1052700003F24146CE46E2E74146CE465FFA83FC62
+:1052800019E70029D6D0DFE6002A3FF413AF0BF16F
+:10529000010B5FFA8BFB9446D6E6012901D09446B8
+:1052A000D5E601FA03F2CAE7D6BE898E2DE9F04FA2
+:1052B000827F8DB001230492C377002A5BD1437FA4
+:1052C000FF2B814656D00BF071FED9F8142099F8C7
+:1052D0001C3099F81D60801AFF2B20F07F4B00F0E6
+:1052E0003A81D9F818305B4594BF0023012301931C
+:1052F000FF2ED9F800704FF0000866D0CDF8089066
+:1053000006EB460607EB06143601A2685A455AD842
+:1053100094F802A06378BE5DA3EB0A03DBB2012B15
+:10532000ABEB020B90444CD1A06968B3019B002BFE
+:1053300000F08D80E38B0393A36A3BB11A681AB126
+:105340001A7A002A00F0F48000221A72039A94F864
+:105350002C10013292B2E283002932D0A18B91420B
+:105360002FD2002B00F0FA801A7A012A29D04FF0B0
+:10537000010C0EE0C2770DB0BDE8F08FDDE909B891
+:10538000DDF820A00B9E4C46A36A002B40D04FF0C6
+:10539000000C00221A72E5685A600AF1FF33A3700C
+:1053A0007DB1029B62695869616A2369A8EB0202B8
+:1053B000104420F07F40BCF1000F39D04FF6FF724F
+:1053C000A847FF2E9CD1DDF8089099F80B3099F88A
+:1053D0000A209A420AD10132D2B2022A1CBF1346D5
+:1053E0000493049A89F80B2008BF002309EB830378
+:1053F000D9F82440C3F80C80002289F81F204B46BE
+:10540000012204210320A4460DB0BDE8F04F6047FF
+:10541000E5680AF1FF33A370002DD2D0029B6269C8
+:105420005869616A2369A8EB0202104420F07F40AA
+:10543000E28BA847A26900239A42019AE38318BF2E
+:105440000122FF2E0192E3707FF45AAFBBE794F97B
+:105450002D300593803397D0FF2E95D0E38BA28B10
+:105460000393934228BF9B1A05996268CDF820A048
+:10547000591A03FB02230693CDE909B80791334675
+:105480000025A1460B9600922CE0009CAAEB080890
+:10549000002C48D0069C0AFB0C8844458CBF4FF07A
+:1054A00001084FF0000834BF4FF0010A4FF0000A26
+:1054B000B14292F803B099F803200FD3934543D833
+:1054C0001EF1800F40D0079AACEB0E0C944502DD24
+:1054D000B8F1000F38D0059A724532D0FB5CFF2B33
+:1054E0003FF44CAF1BB203EB430307EB03121B016A
+:1054F000D2F808804544A842FFF440AF91690029E2
+:10550000ECD0D18B968BD2F804A092F92DE0B14269
+:105510008C4628BFA1EB060CBAF1000FB5D1009C58
+:10552000D046002CB6D1DDF800A04FF00108BFE74F
+:10553000A28B03998A423FF607AF4FF001021A721D
+:1055400004E7BAF1000FC9D0DDE909B8DDF820A001
+:105550000B9E4C46F0E6049B0193C9E6E5680AF110
+:10556000FF33A370002D3FF42CAF029B60695A6992
+:10557000616A2369A8EB0000104420F07F401DE71A
+:10558000C27F002A40F01F862DE9F04F837AC17A4E
+:105590008FB083464069059099424FF001008BF827
+:1055A0001E0000F096800344DBB2022B08BF1346B6
+:1055B0000BEB83028BF80A30D368059A0293D31859
+:1055C00023F07F43CBF8143001230D939BF809306F
+:1055D0009BF81D200692DBF80020DBF804100793EF
+:1055E00004921A46013B0C91DBB2002A00F01583AD
+:1055F00001EBC30600230893FF2301933746D946E6
+:105600007B68079397F803C0BB78BA46079998461A
+:1056100003EB430203EB8202581C634501EB820556
+:10562000C3B200F082819AF80000984208BF0023BC
+:105630008AF8023011F82220042A40F27481072AE5
+:1056400000F286806978049C01EB410004EB0014B1
+:105650000001A7780A906078C01B10F0FF0077D097
+:10566000052A65D0012837D199F81DC0D9F8006006
+:10567000BCF1FF0F17D00CEB4C00614506EB00109E
+:1056800000F09080002301E0614570D0E64690F87C
+:1056900000C0D0F80880BCF1FF0F0CEB4C00434475
+:1056A00006EB0010F0D10026052AA66000F0268146
+:1056B000677099F81C308B4222D0EB6A002028706A
+:1056C000A8620BB1296B98479AF803C09AF8023088
+:1056D0009CE70D92029279E704214B460122D9F80A
+:1056E00024400846A0470C9A8AF8028057460123B6
+:1056F000BA420893A7F1080300F01E811F467FE716
+:10570000FF23072A89F81C3040F0DD816868D9F84A
+:105710001430C21A140200F1CD8122F07F43029AA4
+:105720001344D9F818209A4288BFC9F81830C4E742
+:105730006E68002E96D1AE68002E93D1EE68002ED2
+:1057400090D12E69002E8DD16E6936F07F4689D1B9
+:10575000EA6A002101202970A862002A3FF456AFAE
+:10576000296B90479AF803C09AF802304EE70EEB87
+:105770004E07714506EB071716D00178D0F808C020
+:105780003970FF2906D001EB410106EB0111886851
+:10579000604488600CEB0306052AA66009D0A77850
+:1057A000697885E707460023027889F81D202A7862
+:1057B000E3E7D9F8147003970BF0F8FB029BA0EB1A
+:1057C000070C2CF07F473B449E42804640F2A2806B
+:1057D0006269F31A6668002E53D0A88A002850D058
+:1057E000013880B29E42E18BA88225D206F1010BDE
+:1057F0000B9211E000F1E87000F5D43000F5A570CF
+:10580000DE46099A0139A3EB0E0389B2801A9E4243
+:10581000E18360620ED2A88A884280F0B281D4E926
+:105820000820DFF8D0E20992B14A86449645E1D8D3
+:10583000B646E6E70B9AA88A884221D9206A0990E1
+:1058400006F1010E0B9207E06062B346A88A0131AF
+:1058500089B281425B4411D2099A606ADFF894B23E
+:105860001044A34A83449345EED8A0F1E870A0F514
+:10587000D430A0F5A5706062F346E7E70B9AE183A8
+:10588000A083D5E9010EA66A03447244A360626155
+:1058900036B1316821B1A0EB0E007060A368626977
+:1058A0001CF4000F21D13B4493421BD99B1A0022C8
+:1058B000A3606261E968A3692A690B44934288BFC7
+:1058C0009B1AAA7D98BF0023A36102B1E270049BDA
+:1058D0000A9A1946019B8B5463786A7801920133C6
+:1058E0006370EAE6D21A0023E2E70399A1EB080706
+:1058F00027F07F479F4213D2DB1BD5E7D9F81470FE
+:1059000003970BF053FB029BA0EB070C2CF07F4797
+:1059100080463B4461690B449A1B6261002359E74E
+:105920003A44D21ADFE7984672E60C9A5746BA42D2
+:10593000A7F108037FF4E2AE99F81D70069BDB1B0C
+:1059400018BF012307930D9BCB46002B40F06D81C0
+:1059500099F80920D9F80030D9F804100493531E9F
+:105960000991DBB2002A00F0108101EBC3080D9B06
+:105970000393D8F8043098F801600593019BFF2B3E
+:105980005ED0DDF804A0049B0FFA8AF404EB440413
+:105990004FEA041C03EB041413F80C3001930025A8
+:1059A000FF222270DBF800709BF81D3007EB0C0023
+:1059B0009342816818BF029211D193E0B1EB0C01C0
+:1059C00006D1BEF81EE0B0F81E90F14500F2D68078
+:1059D00017F802C00293BCF1FF0F77D0634603EBC8
+:1059E000430C07EB0C1E4FEA0C12DEF808C08C4586
+:1059F000E4D9029A8160FF2A03706CD18BF81DA054
+:105A0000FF2B06D003EB430307EB0317BB68591AC0
+:105A1000B960A37801336370002DAFD0EB6A039AAD
+:105A20002A70AA6213B1296B002098476368002B83
+:105A3000A4D1D5E90B23C4E90823019BFF2BA0D1F6
+:105A400098F80230B3422ED0059F98F8000006EB7C
+:105A5000460206EB8202013617F82210F6B2B04277
+:105A600008BF0026042907EB82051AD195F801A08A
+:105A7000049B0AEB4A0C03EB0C144FEA0C1C6178F4
+:105A8000A378C91A11F0FF0136D0039B07F8223022
+:105A9000EB6A0122AA6210460BB1296B984798F86D
+:105AA0000230B342D1D1099A4245A8F108036AD025
+:105AB00098465EE7029A1B1A23F07F439A428CBFF6
+:105AC000D31A00232DE60BF071FA20E61A46816006
+:105AD00080F800C0634612B202EB4202120107F8DE
+:105AE00002A08DE707F80C308BF81DA091E700BFEE
+:105AF000592B177F5A2B17FFAF8ADBF814E0686A1F
+:105B00004FF6FF794F45D5E903232ED084F82C10AA
+:105B1000A06262602362D5E906236868A2612A6AEE
+:105B2000A783A0EB0E07C4E903323A02AB680CD49A
+:105B300027F07F473B448BB1A360039B6362E38301
+:105B40004FF001036161E3702AE7AEEB000222F03F
+:105B50007F42934205D99B1A002BEDD119460023B1
+:105B6000EAE7D31A19460023E6E74FF0010784F865
+:105B70002C70A062626023620F46CCE7029A6146F5
+:105B800038E70B9A58E69BF81D70069BBB4200F065
+:105B90002483089B002B00F0468300239BF81D7094
+:105BA0008BF81E30FF2F00F0CC83069BFF2B00F0FC
+:105BB000E683DBF80030B94D07EB470703EB07132B
+:105BC0000A279E680BF0F2F9DBF81430DBF8282086
+:105BD000C41A24F07F440334B4422CBF1B199B1910
+:105BE00023F07F448046204690470BF0DFF9A0EB7E
+:105BF0000800A4EB080420F07F4024F07F44033029
+:105C0000A04207F1FF3740F2F382002FDAD140F6CD
+:105C10009A012846FDF75AFFD4E70D9B002B00F0B0
+:105C2000F582079B0893FF2301930BF0BFF9DBF884
+:105C300000309BF81D500393059BFF2DA0EB030044
+:105C400020F07F4854D0DDF808A04FF000094B4603
+:105C5000D146C2469846039B05EB450403EB04146A
+:105C6000A3684B4500F2D88294F82C10A9EB0309E5
+:105C70009844AAEB030A002900F03481E68B003E29
+:105C800018BF0126DBF81820934225BF4FF0FF33E1
+:105C90008BF81C30D31A0023A769CBF81830A26AFE
+:105CA000606894F800C047B1637894F802E0A3EB11
+:105CB0000E03DBB2022B00F043810023A3608BF8BC
+:105CC0001DC0002840F0D6801AB1137A012B00F0D5
+:105CD0001181A2786078801AC0B2012800F0C280D9
+:105CE00062709BF81D50FF2DB5D1DBF80030039397
+:105CF000DDE906409BF80920DBF804100991531EEA
+:105D0000AC4218BF01200790DBB2002A00F0868168
+:105D100001EBC308D8F8043098F801600593019BA3
+:105D2000FF2B62D0DDF804A0039B0FFA8AF404EB8A
+:105D300044044FEA041C03EB041413F80C300193E1
+:105D40000025FF222270DBF800709BF81D3007EB66
+:105D50000C009342816818BF049212D156E1B1EB56
+:105D60000C0106D1BEF81EE0B0F81E90F14500F21D
+:105D7000088117F802C00493BCF1FF0F00F0F58012
+:105D8000634603EB430C07EB0C1E4FEA0C12DEF8E4
+:105D900008C08C45E3D9049A8160FF2A037040F063
+:105DA000E9808BF81DA0FF2B06D003EB430307EB24
+:105DB0000317BB68591AB960A37801336370002DCB
+:105DC000ADD04FF00002EB6A2A700022AA6213B134
+:105DD000296B104698476368002BA0D1D5E90B23A7
+:105DE000C4E90823019BFF2B9CD198F80230B342F1
+:105DF00030D0059F98F8000006EB460206EB8202C1
+:105E0000013617F82210F6B2B04208BF0026042966
+:105E100007EB82051CD195F801A0039B0AEB4A0C05
+:105E200003EB0C144FEA0C1C6178A378C91A11F02B
+:105E3000FF0100F0A9804FF0000307F82230EB6A61
+:105E40000122AA6210460BB1296B984798F80230DC
+:105E5000B342CFD1099A4245A8F1080300F0DB8094
+:105E6000984657E7236A002B3FF43AAF616A984798
+:105E7000A27835E712B1137A012B3BD0E38B0A935A
+:105E8000002B6CD1A38B667804939E46471C099720
+:105E9000D4E908C200230B91774606E0985C010024
+:105EA000013F8646791C734412D0DFF8D8E2B4492A
+:105EB000624496448E45F3D8DDF824E0A2F1E872FE
+:105EC000013FA2F5D432791CA2F5A5727344ECD13E
+:105ED0000B996262002900F04B810A9A04990A44E6
+:105EE000E28309E00E46CDE6A6608BF81DC00028CF
+:105EF0003FF4EBAEA6784B460598DBF814206169B9
+:105F000000EB0807B81A10F4000F0ED120F07F4004
+:105F10000344994211D25B1A0021019A2270013682
+:105F20006670A36061610195DBE6D21B22F07F42BF
+:105F30009A4211D29B1A9942EDD3C91A0023ECE779
+:105F4000002E7FF4BAAE12B1137A012BCCD08BF8AD
+:105F50001C50CBF81870B0E61144C91AEEE74FF0A8
+:105F6000000EA678CDF810E090E71A46816080F820
+:105F700000C0634612B202EB4202120107F802A00F
+:105F800011E7049A614607E7AF8ADBF814E0686A14
+:105F90004FF6FF794F45D5E903232ED084F82C1016
+:105FA000A06262602362D5E906236868A2612A6A5A
+:105FB000A783A0EB0E07C4E903323A02AB680CD406
+:105FC00027F07F473B448BB1A36000236362E383E8
+:105FD0004FF001036161E370B3E6AEEB000222F023
+:105FE0007F42934205D99B1A002BEDD1194600231D
+:105FF000EAE7D31A19460023E6E74FF0010784F8D1
+:106000002C70A062626023620F46CCE707F80C3068
+:106010008BF81DA0D0E6DBF8003003939BF81D70D1
+:10602000039E0023BA46BAF1FF0F10D0D1460FFAF3
+:1060300089F202EB420206EB0212976A17B1397A33
+:10604000012914D092F80090B9F1FF0FEFD1574613
+:10605000002B3FF49AAD069ABA427FF49AAD089AA3
+:10606000002A00F07C8100238BF81E309AE59BF813
+:106070001C30FF2B71D0DBF81800029B83426CD2DE
+:10608000C01AD7E90043A34292F800C06DD2BCF118
+:10609000FF0FA4EB030468D09569AC424FF00003F6
+:1060A00033D39E460195614603921DE0D1F80880E6
+:1060B000A8F10403B8F1040F734409D9A342019A6B
+:1060C00028BF2346934203D95B1B01D083421BD2D6
+:1060D00088690978C6444044631B0EEB0502FF291A
+:1060E000019211D094420FD301EB410106EB011153
+:1060F000D1F82880B8F1000FD8D098F80880B8F10E
+:10610000010FD3D10978E8E7039A936064464FF012
+:10611000FF0E00E0044621B201EB410006EB00183F
+:106120000001D8F808509D424ED25B1B9360305C52
+:10613000FF28A646EED101EB410109018BF81DC0F5
+:10614000735C137006F80190E246D38B013BD38356
+:106150004FF0020201233A7265E7D7E90043A342F8
+:1061600092F800C04FF0000091D300239360ECE759
+:106170009A457FF6B2AE00F1010E09940AE000BF25
+:10618000592B177F5A2B17FF07463B4401319A457D
+:1061900089B211D9804F814C6244D719A742F3D8F4
+:1061A0007746A2F1E8723B44A2F5D43201319A4518
+:1061B000A2F5A57289B2EDD80498099C084481B271
+:1061C0000491626289E67047EB1ABEF1FF0FC8F8CE
+:1061D0000830BAD00FFA8EF1ADE7089B002B00F023
+:1061E000A68000238BF81E30079B002B40F0C48054
+:1061F0009BF81F206AB1DBF824405B460122032193
+:106200000420A4460FB0BDE8F04F60470D9B8BF80B
+:106210001E300FB0BDE8F08FA3EB0903A360DBF8DD
+:106220000030039364E59BF80930DBF804605C1EE2
+:10623000E4B2002B3FF4B1AC0123079306EBC40496
+:106240004FF000096378E178656899420CD160E00D
+:10625000012B5AD0637822780133DBB29A4208BF0F
+:1062600000239942637054D01BB203EB430203EB4B
+:10627000820305EB830215F82330022B1BD0032B7E
+:10628000E6D153789BF80810994211D9DBF8001039
+:10629000107903EB430301EB031383F82D00C2F8DD
+:1062A0002890D36A13B1116B906A9847E178D1E7CF
+:1062B00001239362F5E7D2E9017097F800E0D2F884
+:1062C0000CC0DBF80010DBF81480BEF1FF0F02D029
+:1062D0000368434524D09BF81D30C0F800804FF080
+:1062E000000E0DE003EB430001EB00180001D8F8AD
+:1062F00008A0D8F81880D644B8F1000F02D10B5C82
+:10630000FF2BEFD13B70CCF800E0D36AC2F82890A5
+:10631000C8E7A642A4F108033FF463AF1C4691E727
+:106320000EEB4E031B01DCF800E0CB5CE8E79BF8CA
+:106330000930DBF804605C1EE4B2002B7FF47EAF12
+:106340004FE70AF019FE00287FF452AFCBF818008F
+:106350000AF02CFE9BF81F20CBF814004AE79BF8AC
+:106360000920DBF80460541EE4B2002A7FF465AF14
+:10637000089B8BF81E3015E49BF81D7012E40AF0A0
+:1063800015FE04460AF0E8FD9BF81D7000287FF416
+:1063900010ACCBF814400CE45A2B17FF592B177F85
+:1063A000F0B4049F9DF81440069E00283ED1DFF80B
+:1063B00084C04D1E8CF80810CCF80020EDB249B115
+:1063C00005EB450502EB0511914281F82D00A1F185
+:1063D0003001F9D15A1E8CF80930CCF80470D2B2D1
+:1063E0007BB107EBC2025660114612F8083903EB85
+:1063F0004300E41A8F4203EB8003E4B206EB83060A
+:10640000F1D19CB9079ACCF82020089ACCF8242026
+:106410004FF6FF73099AACF80A402046CCE90544D0
+:10642000F0BCCCF82820ACF81C3070470120F0BC40
+:10643000704700BF580D00200A4B2C2202FB00328F
+:1064400010B4546A5CB100EB800200EB420003EB35
+:106450008003A446012210BC03210220604710BC27
+:10646000704700BF580D00202DE9F843DFF8A080E9
+:10647000BDF82CE02C2707FB008704467D6805EB60
+:10648000C10C15F831909CF8036004EB840504EB13
+:106490004504751C0846EDB29CF80110A94598BF4B
+:1064A0000025A94208EB84082FD0DCF8041006EB85
+:1064B000460406EB840601EB86044FF0040901F85C
+:1064C00026906360089BA360099BE3600A9B23619D
+:1064D0000C9BA361119B63620D9BE3610E9B236286
+:1064E0000F9BE3620221109B6270A4F814E0236307
+:1064F000A1628CF80350D7E90835984743464946CE
+:106500000022A847A06ABDE8F8830120BDE8F8830F
+:10651000580D002030B58BB0DDE90E540095109D6C
+:1065200001940295BDF84440129D03940495139C78
+:10653000149D05940695159C169D07940024CDE99D
+:106540000854FFF791FF0BB030BD00BFDFF898C0D3
+:106550002DE9F0472C2707FB00C704467D68BDF8EE
+:106560002C809DF830E0084605EBC10115F830A0FD
+:10657000CE7891F8019004EB840504EB4504751C7A
+:10658000EDB2AA4598BF0025A9450CEB840A28D096
+:10659000D1F804C006EB460406EB84060CEB860437
+:1065A0004FF005090CF826906360089BA360099BD7
+:1065B000E3600A9B23610D9BE36202260E9B6270DF
+:1065C00084F816E02363A4F81480A662CD70D7E99E
+:1065D00008359847534600220421A847A06ABDE821
+:1065E000F0870120BDE8F087580D0020DFF884C057
+:1065F0002DE9F0412C2707FB00C704467D680846BB
+:1066000005EBC10115F83080CE7891F801E004EB7C
+:10661000840504EB4504751CEDB2A84598BF002520
+:10662000AE450CEB840421D0D1F804C006EB460E35
+:1066300006EB8E060CEB86084FF0060E0CF826E0F3
+:10664000C8F82C300226069B88F80120C8F83030A4
+:10665000C8F82860CD70D7E908359847234600224E
+:106660000421A847D8F82800BDE8F0810120BDE842
+:10667000F08100BF580D00202DE9F041204F4FF070
+:106680002C0C0CFB007C0446DCF80450084605EB9F
+:10669000C10115F83080CE7891F801E004EB840553
+:1066A00004EB4504751CEDB2A84598BF0025AE4526
+:1066B00007EB840420D0D1F804E006EB460706EB94
+:1066C00087060EEB86074FF602782EF82680C7E97C
+:1066D0000123069BFB60079BFB620226089B3B6332
+:1066E000BE62CD70DCE908359847234600220421BC
+:1066F000A847B86ABDE8F0810120BDE8F08100BF7D
+:10670000580D002070B50A4D2C2202FB0052D2E930
+:10671000083604460846984704EB840304EB430319
+:1067200005EB8303B4460022BDE8704004216047B6
+:10673000580D00200AF03ABC401A20F07F40704704
+:10674000012813D808B548B931B1084606220949CD
+:106750000EF0A2F9074808BD064808BD41B1084639
+:10676000062205490EF098F9034808BD002070473D
+:10677000014808BD840D00208C0D002070B5044632
+:1067800000200D4603F08EFA88B903F07FFC10F06C
+:1067900006060CD12946062224B106480EF07CF9E3
+:1067A000304670BD04480EF077F9204670BD0C20CD
+:1067B00070BD00BF8C0D0020840D0020022801D088
+:1067C0000120704738B5044608461D4604F008F815
+:1067D00010B10020287038BD204638BD002303705A
+:1067E0000B70704708B50248FEF754F9002008BD49
+:1067F000385D010030B5838983B023B1037D044641
+:10680000C3B1022B04D06FF01505284603B030BD8C
+:1068100001A901F02BF9019B054613B118460EF0B2
+:10682000D5F9002DF1D120460BF014FC00252846A7
+:1068300003B030BD01A9019300F0E0FB0028F2D0C5
+:106840000EF0C4F9019D002DEDD0284601F0F2FDB7
+:106850006871019901480EF078FDE4E7B006002068
+:106860002DE9F041DFF8B4802B4F82B00CE00EF040
+:10687000AAF92246BDF80210044601F0C3FD2046E5
+:106880000EF0A4F90DF0CCF80DF1020101A802F010
+:10689000D9FA04464FF0FF324FF0FF3300211320A6
+:1068A000002CE4D1019B93B102F09AFB019E30468B
+:1068B00001F0C0FD019D70716B79032B02D12B7922
+:1068C0000B2B0CD0294638460EF03FFDDCE74FF08D
+:1068D000FF324FF0FF3340460DF03CF9D4E721463C
+:1068E0004FF0FF334FF0FF320520EE880EF06BF9CA
+:1068F0000446224605F11C00314601F01DF93046E0
+:1069000001F02AF9204624B10EF060F920460BF080
+:10691000A1FB019DD6E700BFB0060020980600202D
+:10692000D0B51B4888B001F0DFFF044600282CD109
+:10693000184801F095FD002600276FF00903039326
+:10694000CDE90667CDE90144134B14490494009442
+:106950004FF4E07212480DF071F9124910480EF030
+:106960002DFE6FF007030393CDE90667CDE90144DF
+:106970000D4B0E49049400944FF400720C480DF036
+:106980005DF90C490A480EF019FE204608B0D0BD4A
+:1069900098060020380000206168000000530020A5
+:1069A00008080020D85C0100B9690000E05400200C
+:1069B00088080020E45C01002DE9F04FB04CB14F95
+:1069C000DFF8D492DFF8D482DFF8D4A285B0AC48E7
+:1069D0004FF0FF324FF0FF3302210DF079FB00281A
+:1069E00040F0A080E36803F4F833B3F5805F00F073
+:1069F0009580236A03F4F833B3F5804F00F0E0800C
+:106A00000025E268236AA0496FF31032D1F800B084
+:106A1000E2606FF310339D4A2362BFF35B8F52E84D
+:106A2000003F23F0010142E800100028F7D1BFF336
+:106A30005B8FDB0744BF0023C7E90033BBF1000FC6
+:106A400040F3C580D9F80030D8F800203E68ABEBA1
+:106A5000030313448E4A1360002E00F0E480727921
+:106A6000002D68D1042A39D8022A00F2908040F221
+:106A70003D1150460192FDF729F8019A0396002A2C
+:106A800040F08B805046CF21FDF720F8039800237B
+:106A9000036003A802F032FBD9F80030D8F80010E8
+:106AA0003A68ABEB03030B4479490B602AB1527986
+:106AB000D11E01290DD9052A09D02DB1AB8928464F
+:106AC000002B35D0FEF74AF80CF0AAFF7FE7002B29
+:106AD000F3D000216F480DF05BFBEEE7052A16D1DD
+:106AE000002BF1D07A6833683B60964200F0B980A1
+:106AF0004FF0FF324FF0FF3303200396FDF7DCFF2A
+:106B000001460546039801F049F80398BFE740F2B3
+:106B10003D115046FCF7DAFF0396B3E723690025E1
+:106B20009D606EE740F275115046FCF7CFFF59E7C4
+:106B30000BF090FAC8E7D11E012963D9052A75D058
+:106B400001336A794BD03E68042A62D8022A00F2E7
+:106B50009080531E012B00F286800395022A00F0DC
+:106B6000AD804FF0FF324FF0FF330120FDF7A4FF5F
+:106B700005460398002D00F09C80294601F064F83A
+:106B8000039A0023136003A802F0B8FA95E7796826
+:106B900033683B608E4255D00396022A4AD04FF0AC
+:106BA000FF324FF0FF330120FDF786FF05460398C3
+:106BB000002D3FF46CAF294601F046F8039866E7D4
+:106BC000606A002200230CF04DFC054619E7304AAC
+:106BD0004FF0FF331360002D3FF476AF6A790395D1
+:106BE000042A31D9052A31D14FF0FF324FF0FF335B
+:106BF0000320FDF761FF01460546039800F0CEFF34
+:106C0000039ABEE7234800210DF0C2FA204B1B680F
+:106C100096E7052A27D1002E44D11D4B1B68002B77
+:106C200040D00395E0E7002D8AD14DE7002BE9D154
+:106C30006A7989E700220023012100200DF0C3FFBB
+:106C40000546B4E77B60A7E7002A87D15046CF21ED
+:106C5000FCF73CFF039B00221A6003A802F04EFAE7
+:106C600032E77B6044E7F4215046FCF72FFF0395A1
+:106C7000ECE7074A01231360A6B9039571E700BF4B
+:106C800010000020980D0020580E00205C0E0020FF
+:106C9000940D002038000020540E0020300E0020FB
+:106CA000EC5C01007B6800222A607BB11D607D6086
+:106CB0000AE7056003A802F021FA05E70022002395
+:106CC000012100200DF07FFF054652E7C7E900557E
+:106CD000FAE600BF38B5074B0546012118880DF0CC
+:106CE00093FF0121044608300DF0E3FF03462046E0
+:106CF0001D7038BD884A002070B500F108040E46AA
+:106D00002046022115460DF0D4FF6B1C3E22027076
+:106D10004370012120460DF0CCFF06702946204625
+:106D2000BDE870400DF0C5BF70B502F1080504461E
+:106D30000E46284602210DF0BCFF0346082204211E
+:106D40001A70597028460DF0B4FFB4FA84F35B0949
+:106D50000470C370A0F8016070BD00BF2DE9F84356
+:106D6000174C66684FF000094C4606F00055174670
+:106D700054EA050209D0134A12680646884602F012
+:106D80000800494650EA010201D1BDE8F8831846DF
+:106D90000B220421FFF7B0FF0670A0F801703EB986
+:106DA00008F104010330BDE8F84308220DF074BE79
+:106DB00049460330BDE8F84308220DF098BE00BFF5
+:106DC0000000002008000020F8B5274E274D284A73
+:106DD000284B4FF0FF3737604FF0FF3641F6FF7713
+:106DE000C5E9006700260027C2E900671F260027C3
+:106DF000C3E9006740B30C4601F0C8FE0020FFF76E
+:106E000069FF1D4A20601D4B1D4E1E4D1E4800246B
+:106E10001460214620221C6034602C600DF067FE57
+:106E2000BFF35B8F194B53E8002F42F0010243E898
+:106E300000210029F7D1BFF35B8F154B186821465D
+:106E4000BDE8F8400DF0A4B90B4D0D4A0D4C0B4BAD
+:106E5000014629601160216019600B48BDE8F840C7
+:106E600020220DF044BE00BFA40D00200000002031
+:106E70000809002008000020A00D0020300E00208E
+:106E8000580E0020540E0020340E00205C0E00200E
+:106E90002C0E002070B502F1080405460E4620466F
+:106EA00002210DF006FF0346052204211A705970D5
+:106EB00020460DF0FEFE0023A0F8016003702B7841
+:106EC000C37070BD38B5064B054618880C460DF0EA
+:106ED0009BFE21462860BDE8384008300DF0E9BE31
+:106EE000884A002070B5431E86B01446092B06D888
+:106EF000DFE803F0092037050545055064736FF09E
+:106F0000150006B070BD20460D21FFF7DBFF0346DC
+:106F1000022200200421D9711870987018715871DC
+:106F2000187258729872D87218735A70DA709A710F
+:106F300006B070BD20464121FFF7C4FF002405467E
+:106F4000214600F8014B40220DF0D1FD6A78AB7864
+:106F500062F0580243F0030320466A70AB7006B03B
+:106F600070BD20460921FFF7ADFF002400F8014B5A
+:106F7000214608220DF0BBFD204606B070BD896891
+:106F80000020FFF7FBFB0020FFF7A4FE206000209D
+:106F900006B070BD184E0FCE01AD0FC533682B7013
+:106FA00020461221FFF78EFF002400F8014B11222A
+:106FB00001A90DF071FD204606B070BD20461821D4
+:106FC000FFF780FF00240546012100F8024B0AF07C
+:106FD000D3FE6870204606B070BD20462121FFF721
+:106FE00071FF0146002401F8114B01300AF036FF11
+:106FF000204606B070BD00BF4C5D0100F0B583892E
+:107000008FB00022022B099240F2918004460E4676
+:10701000083003210DF06DFEA28983789A42C0F0FA
+:1070200086800588834FB5F5105FA8B23D80C5F313
+:1070300009034FEA95226BD2002A73D0013A072A3E
+:1070400070D8DFE802F0906F9E57776F6F04013BB6
+:107050004D2B67D8DFE813F0E1030504A9026600B1
+:10706000A202850287037F037703A104440431044D
+:1070700018041204EE030004FA037B04680462049B
+:10708000520497048204D503C703C103B903A503BF
+:107090009B0390036202530247023702210212024D
+:1070A0006600660009021B02E701FD01EC016603B0
+:1070B0005F0329030803E002C5023103BB02EB03AF
+:1070C0006600660066006600660066006600660090
+:1070D0006600660066006600660066006600660080
+:1070E000660066006600660066006600780266005C
+:1070F00066007102013B082B14D8DFE813F083000F
+:107100009F00070113001300130013001300FB007E
+:107110003F2A07D12146184609AAFFF7E3FE163099
+:107120001FD1388801210DF081FD0FB0F0BD002086
+:107130000FB0F0BD052BF5D1A368042109A81D8867
+:10714000FFF7C0FE0446E11CA8B203F0C3FDA4F89B
+:1071500001502070002840F02884E3785B425BB245
+:10716000E3700998E1E7062B00F026841D2BD9D1A6
+:10717000A368188803F0A4FC014638880DF056FD7A
+:10718000D3E7352B24D82C2B0AD8012B00F01184FF
+:10719000032BC7D1204609A9FFF716FE0998C4E7BB
+:1071A0002D3B082BBED801A252F823F0B373000088
+:1071B000257100002571000025710000D9730000C1
+:1071C000257100008D730000257100002B730000F5
+:1071D0007B2B00F004847C2B0FD1A3681D88598879
+:1071E000284603F0B7FD0321044609A8FFF76AFE0D
+:1071F0000470A0F80150099897E7632B92D1A26818
+:107200000D4B0CE3092109A8FFF75CFE03460022A1
+:107210000B204FF0FF316FF00E0505241A705870E7
+:1072200018715D7109989C719A70DA70D971197230
+:107230007BE700BF884A002008090020412109A8F7
+:10724000FFF740FE00210446402200F8011B0DF02C
+:107250004EFC227CA779E67AE57BE07DA17E63780F
+:1072600094F803C042F0220267F03F0766F01B0665
+:1072700045F0280540F0040061F0080143F02003C8
+:107280002274627FA771E67294F8217094F82260EC
+:10729000E573E07594F8255094F82300A1766370A7
+:1072A00094F8281094F8273042F07F0260F006002E
+:1072B00062776CF07F0CFF2247F0300766F00F0614
+:1072C00045F0010541F0040163F07F0384F82300D9
+:1072D00084F803C084F8217084F8226084F8255073
+:1072E00084F82810E276227784F8242084F8273066
+:1072F00009981AE7072109A8FFF7E4FD01460020D5
+:1073000001F8010BFFF71CFA09980EE7092109A8FB
+:10731000FFF7D8FD00210446082200F8011B0DF0FC
+:10732000E6FB602309986371FFE6B64B1B68002BF0
+:1073300040F34D83B44B1B6803B3A76897F800C0B4
+:107340006446BCF1000F00F05F830024AF4D22467D
+:107350000AE035F811008342A0EB03060ED862451F
+:1073600025F8116000F0508307EB82030132B3F877
+:107370000110B3F803300F291C44EAD9012109A8F0
+:10738000FFF7A0FD122303700998CEE6A368012140
+:1073900009A8B3F803401D88FFF794FD994B1A68BC
+:1073A000002A40F018831A2DECD9644209981C6019
+:1073B000BBE6A368042109A81D889E78FFF782FD1B
+:1073C000A9B20446C31C32460220FFF7F7F9207029
+:1073D0000998A4F80150A8E6A3688A4C1D780121F9
+:1073E00009A8FFF76FFD2368002B00F0F482864A9E
+:1073F0001268002A40F0EF820270002D00F0108326
+:10740000012DBFD1002B3FF7ACAE814A814B7F48A5
+:1074100000211160202219600DF069FB2368099892
+:107420005B42236081E606F06BFDFFF753FC7CE6D0
+:10743000A16807220AA80DF02FFB072109A8FFF772
+:1074400041FD0446611C0AA807F0D8F9207009988C
+:107450006BE6022109A8FFF735FD044606F04EFD54
+:1074600000236070237009985FE6A06800F117029E
+:10747000C11D07F05FF8FFF72DFC56E6A368598899
+:10748000188803F095FBC0B2FFF724FC4DE6A06816
+:1074900007F00EF9FFF71EFC47E6052109A8FFF7E4
+:1074A00011FD0AA904460DF1220003F075FBBDF899
+:1074B0002230A4F801300022BDF82830227009984B
+:1074C000A4F8033031E6A3681D889A8859882846B5
+:1074D00003F016FB0446032109A8FFF7F3FC047030
+:1074E000A0F801503DE6A3681D889A780023CDE9F5
+:1074F000013328460093022103F0F6F9EAE7A26877
+:107500001189158853880291D1880191928800923F
+:1075100028460022022103F0E7F9DBE70AA809F078
+:10752000C5FC032109A8FFF7CDFC00220270BDF8BD
+:107530002820A0F801200998F7E5A068C17907F094
+:107540009BF9FFF7C7FBF0E5032109A8FFF7BAFC99
+:1075500001460023013001F8023BFFF73FF909988B
+:10756000E3E5A4682179208801290AD0638898423C
+:1075700000F260821F2840F25D82B3F5804F00F276
+:107580005982A57BA37962790295657B01950734C1
+:10759000009402F039FAFFF79DFBC6E5A1680120CF
+:1075A000FFF7ECF8FFF796FBBFE5092109A8FFF705
+:1075B00089FC00210446082200F8011B0DF097FA0F
+:1075C000FF21492201236170A270E370C9E5A3681D
+:1075D0009A785978187809F03FFCC0B2FFF77AFB27
+:1075E000A3E5A3681A78D10744BF0721597097070C
+:1075F00044BF07229A709978587803F00FFBFFF781
+:1076000069FB92E5580E0020A00D0020340E0020EA
+:10761000540E0020300E0020A368052109A81D8803
+:10762000FFF750FC0446221DA8B2E11C03F0D4FA77
+:10763000E27823792070002A92FAA2F2B2FA82F25A
+:1076400008BF4FF0FF32002B93FAA3F3B3FA83F392
+:1076500002F1010208BF4FF0FF33E27001330998D5
+:10766000A4F80150237160E5092109A8FFF72AFC5D
+:107670000AAB04460DF122020DF11E0008A903F029
+:10768000A1FABDF82030BDF81E20A4F80120A4F80E
+:107690000330BDF82230A4F805300022BDF82830B0
+:1076A00022700998A4F807303FE5A368188806F00F
+:1076B00089FC0020FFF70EFB37E5A36899781D8849
+:1076C000B3F80540CE0703D5DA7842F00702DA7046
+:1076D0008A0703D51A7942F007021A71D9781B7903
+:1076E00041EA030212F0F80F40F0AE814E0700F0BD
+:1076F000A6815A0700F0A38114F003021CBF04F115
+:10770000FF3404F00102284603F092FA014638885B
+:107710000DF08CFA09E5A368187806F037FCFFF73E
+:10772000D9FA02E5A16807220AA80DF0B5F90721E8
+:1077300009A8FFF7C7FB0446611C0AA807F080F8F8
+:1077400020700998F1E4A16811F8010B02F078FBB0
+:10775000FFF7C0FAE9E4A16811F8010B02F01CFB85
+:10776000FFF7B8FAE1E4022109A8FFF7ABFB00221A
+:10777000027042700998D8E4A068012382784178A9
+:10778000007809F0F9FAC0B2FFF7A4FACDE4A368D3
+:1077900000221878012109F05FFBC0B2FFF79AFAC6
+:1077A000C3E4092109A8FFF78DFB0346FF2200214E
+:1077B0003F20D870197003205A709A709871D9714F
+:1077C000099819721A715A71AFE4A3681D880022D2
+:1077D0002846062105F0CEFD7CE6A26832F8025B61
+:1077E00000212846F6E7A268114602F10C0331F8A1
+:1077F000020B0A3206F0A8F8014638880DF016FA96
+:1078000093E4092109A8FFF75DFB002300F8013B81
+:10781000082107F0F1FB099887E4A2688D4B1168F5
+:1078200052685A6019600020FFF754FA7DE4A0689E
+:10783000C378A3E7022109A8FFF744FB00230370E4
+:10784000044606F0C3FA607009986EE4A06806F07A
+:107850000FFEFFF73FFA68E406F0BAFAFFF73AFACC
+:1078600063E4042109A8FFF72DFB07210022C17062
+:1078700002701B2141708270099856E4304605F071
+:10788000F5FFFFF727FA50E4A468B4F813506188B5
+:107890006379227920880495B4F811500395B4F8DF
+:1078A0000F500295257B01950634009405F0FEFDEE
+:1078B000014638880DF0BAF937E4A3681878002833
+:1078C00000F0B3805B78002B00F0AF806249634A20
+:1078D00000230B60136002F059FBFFF7FBF924E46F
+:1078E000A4686379B4F80320B4F801102078A4796F
+:1078F0000094F9F765F8FFF7EDF916E4A36808219D
+:1079000009A81D88FFF7DEFA0446E11CA8B203F0BF
+:1079100075F820700998A4F8015006E4A06805F0F5
+:10792000E1FFFFF7D7F900E4A268118953881088B6
+:107930000291D1880191928800920022114602F0B2
+:10794000D3FF014638880DF071F9FFF7EEBBA06850
+:1079500006F06CFAFFF7BEF9FFF7E7BBA0680AAACA
+:1079600000F11001002309F059FB112109A8FFF7CC
+:10797000A9FA002300F8013B0AA910220DF08CF8A7
+:107980000998FFF7D2BBA368188803F079F801467D
+:1079900038880DF04BF9FFF7C8BBA3681878F8F7E3
+:1079A0002BFDFFF797F9FFF7C0BB7F23E370FFF7CD
+:1079B000D8BBA2682A4B32E7A3689978188803F0ED
+:1079C00041F8014638880DF031F9FFF7AEBB0121CF
+:1079D00009A8FFF777FA0C230370FFF7C2BBA3686F
+:1079E0001D880AA9284603F08FF90521044609A835
+:1079F000FFF768FA0470A0F80150BDF82830A0F82D
+:107A000003300998FFF791BB164A174913680868B5
+:107A10002344136000210CF0BBFB0998FFF785BBE2
+:107A2000002BBFF6F2ACFFF79CBB0B4B4FF0FF32C5
+:107A30001A6050E71220FFF74DF9FFF776BB1221CD
+:107A40000DF0F4F8FFF771BB11210DF0EFF8FFF71F
+:107A50006CBB00BF08000020A40D0020A80D002072
+:107A600000000020300E00202C0E00208389002210
+:107A7000032B0A6041D92DE9F04105460E46083036
+:107A800004210DF036F9AB894788B0F80080BB427D
+:107A90000AD302F0B9FE4FEA1833044618B39A0825
+:107AA00002D1D3B1012B03D06FF01500BDE8F081F6
+:107AB000027963F3010202716771A9683A46E01D19
+:107AC0000CF0EAFF2146C8F30B0002F0A9FE0028E3
+:107AD000ECD0204602F09EFEE6E70379022262F334
+:107AE00001030371E8E7134B1968034601F00072C4
+:107AF000134305D16FF03600D8E76FF015007047DB
+:107B00004FF0FF334FF0FF320120FCF7D5FF022189
+:107B1000306008300DF0CDF801241A220270447054
+:107B20003068214608300DF0C4F803466FF0360087
+:107B30001C70BBE700000020064B1B6830B403F04C
+:107B40001004002554EA050301D130BC704730BC55
+:107B5000FFF7A0B9000000200F2870B504460ED82A
+:107B60000A4D0B480B492E6830F814200B6832443C
+:107B7000013B2A60002220F814200B6070BD0648EB
+:107B800040F64C71FBF7A2FFEAE700BF300E002081
+:107B9000340E0020A00D0020605D0100037F03F083
+:107BA0000303013B012B04D9224841F24711FBF7A3
+:107BB0008DBF70B5044601F1080528460421E6880A
+:107BC0000DF077F8237F03F00303022B0CBF46F47C
+:107BD000005346F480530380617F418028460DF0B6
+:107BE00068F8627F04F11F010CF056FF124B1A680F
+:107BF000002A10DD114C124923680968591A914274
+:107C000010D201330F2E236006D80E4A32F81630F8
+:107C1000013322F8163070BD06484FF48A51FBF745
+:107C200055FFF2E7034841F23A11FBF74FFF236893
+:107C3000E7E700BF605D0100580E0020540E0020F1
+:107C4000300E0020340E00202DE9F04F0579C78852
+:107C5000022D044689B00E4600F11C0011D0043DEF
+:107C60000C2D59D8DFE815F02C01580058005800A9
+:107C700058005800C9001301600082009B00B10049
+:107C80002700E37F033B122B00F2C181DFE813F0F2
+:107C90005302BF01BF013D024902BF011602BF01ED
+:107CA000BF01E2010502BF011F02BF01BF01BF0109
+:107CB000BF01C201C2017D4B586800210A4600F095
+:107CC0000053134325D07A4B18680B4600F400622A
+:107CD00013431ED0052230460C21FFF70DF8237FF9
+:107CE0000370A0F80170627F002A92FAA2F3B3FA3F
+:107CF00083F308BF4FF0FF330133C370A27F92FAC2
+:107D0000A2F3002AB3FA83F308BF4FF0FF33013325
+:107D1000037109B0BDE8F08F41F25201654809B026
+:107D2000BDE8F04FFBF7D2BE604B586800210A4611
+:107D300000F000531343ECD05D4B18680B4600F085
+:107D400004021343E5D0092203213046FEF7D4FF95
+:107D5000237F0370E18B228C638CA0F80730A0F89E
+:107D60000170A0F80310A0F80520D2E74F4B596826
+:107D70000024224601F400431343CAD008360221EE
+:107D800030460CF096FF03463022032130461A702D
+:107D900059700CF08EFF0470A0F80170B9E7464BE3
+:107DA0001968002301F400021343B2D008360221FF
+:107DB00030460CF07EFF03465722022130461A70EF
+:107DC00059700CF076FF0780A3E7384B5868002104
+:107DD0000A4600F0005313439BD0354B18680B46FE
+:107DE00000F40022134394D0304603221421FEF7FE
+:107DF00083FF0780237F83708BE7257F002D00F0B2
+:107E0000C2812A4B59684FF00008424601F00053E6
+:107E100013433FF47EAF264BD3F800C040F201215C
+:107E20000CEA0102434613430CF4007041463FF450
+:107E300070AF002D40F0C281204A136801331360F7
+:107E400050EA010304F11F08304640F05682122226
+:107E50000121FEF751FF0570A0F80170637FC37028
+:107E6000A37F03F001030646037141460622053055
+:107E70000CF012FEE38E618EA28EA6F80D20A6F8FD
+:107E80000B10A6F80F3094F83830737441E7074BA5
+:107E90001968002301F0100213433FF43AAF324651
+:107EA000394609B0BDE8F04FFEF7F4BF00000020EE
+:107EB00008000020605D010008090020A00D0020DE
+:107EC000C64A237E257F94F81A9094F81BA092E866
+:107ED00003005B420A0C5BB26F060690ADF81C1003
+:107EE0008DF81E20059300F15781BD4B5868002185
+:107EF0000A4600F00053BAF1000F40F07D811343B1
+:107F00003FF407AFB74B1968534601F00202134321
+:107F10003FF4FFAEDFF8DC82D8F80020002A3FDB18
+:107F200004F11E0B16D0B04D57460622294658467E
+:107F30000CF0A2FD38B9227F15F8011CC2F38010A5
+:107F4000884200F02382D8F800200137974205F1DB
+:107F50000805EADBA54DA64F2A6807EBC202594681
+:107F6000901C06220CF098FD2A68217FD8F800307A
+:107F700007EBC200C1F380114170207F012100F0A6
+:107F80000F0081400F2B07F8321000F3FC81591CC1
+:107F90000A46C8F800102960102A04BF00232B608D
+:107FA000237F03F00F03012B00F0EA81637FA3F12D
+:107FB000060A5FFA8AFA0533DAB2574602213046DA
+:107FC000FEF79AFE01230370237F08AA03F00F0334
+:107FD0001344054613F8083C437005F08FFF8145B4
+:107FE00080F0C3814846EA1CA91C05F059FFAB7814
+:107FF0000233AB7005F10A0685F809A004F12401EB
+:1080000030463A460CF048FD059BF35581E641F2B7
+:108010001B1183E6724B586800210A4600F000539A
+:1080200013433FF476AE6F4B18680B4600F04002E6
+:1080300013433FF46EAE30460A220721FEF75CFE82
+:108040000780A38C4380E38C8380238CC380638C64
+:1080500003815EE6624B1968002501F400622B463D
+:1080600013433FF456AE0836022130460CF021FE91
+:1080700003460C2208211A70597030460CF019FE84
+:108080000570A0F8017094F82030C370B4F8213066
+:108090008380B4F82330C3803BE6514B196800233A
+:1080A00001F0800213433FF434AE94F820003246CE
+:1080B000394609B0BDE8F04FFEF736BE0B463A46EA
+:1080C0000146002009B0BDE8F04FFEF747BE444B23
+:1080D000586800210A4600F00053134364D0414B16
+:1080E00018680B4600F0200213435DD030460A2288
+:1080F0000621FEF701FE0780238C4380638C83807A
+:10810000A38CC380E38C038103E6354B1968002000
+:1081100001F08002034613433FF4FBAD324639467B
+:10812000C7E794F820300E2B7FF4F3AD0B463A46A8
+:1081300000211A20C6E72A4B586800210A4600F0A1
+:10814000005313433FF4E5AD264B18680B4600F08F
+:10815000100213433FF4DDAD30460C220521FEF73B
+:10816000CBFD04F120010546082220F8027B0CF02B
+:1081700093FC05F10A0004F12801022209B0BDE8D0
+:10818000F04F0CF089BCA07F04F12503FF2204F11D
+:108190001F0106F00FFB34E60021084604F11E0320
+:1081A0004A4606F007FBA0E60023CDE90133384636
+:1081B00000931A22022102F097FBAAE550EA01037C
+:1081C00040F0C780122201213046FEF795FD04469B
+:1081D000414612220CF08BFC25709AE5005C0100F0
+:1081E0000000002008000020AE0D0020A80D002097
+:1081F000AC0D0020A40D002013433FF48AAD7B4B4F
+:1082000018680B4600F4806213433FF482AD237F6D
+:1082100003F00F03012B04D0754840F6DD31FBF766
+:1082200055FCDFF8DC81D8F80020002A42DB04F19D
+:108230001E0A16D06F4D00270622294650460CF024
+:108240001BFC38B9227F15F8011CC2F3801088424C
+:1082500000F0BB80D8F800200137974205F10805EF
+:10826000EADB654D654F2A6807EBC2025146901C58
+:1082700006220CF011FC2A68207FD8F8001007EBCA
+:10828000C20CC0F380108CF8010094F81CC00120CF
+:108290000CF00F0C00FA0CF00F2907F8320000F375
+:1082A000918001310A46C8F800102960102A04BFE5
+:1082B00000232B6011220B213046FEF71DFD012308
+:1082C00003704370054605F019FE81456FD248469C
+:1082D000EA1CA91C05F0E4FDAB780233AB70237FE8
+:1082E000C3F3C0136B7204F12401062205F10A00E6
+:1082F0000CF0D2FB059B2B740BE51E220A21FEF726
+:10830000FBFC0570A0F80170637FC370A37F03714D
+:1083100006464146062205300CF0BEFB062204F15B
+:108320002B0106F10B000CF0B7FB062204F125012E
+:1083300006F111000CF0B0FBE38E618EA28EA6F860
+:108340001920A6F81710A6F81B3094F83830737768
+:10835000DFE41E220A213046FEF7CEFC04464146E9
+:108360001E220CF0C4FB2570D3E4237FC3F38013DB
+:10837000AB70062204F11E01E81C0CF08DFB39E6FF
+:1083800000270B221AE601322A6005E61B4911F884
+:10839000373002F00F0223FA02F0C0073FF5B9AC04
+:1083A000012000FA02F2134301F83730F8E5237F89
+:1083B000C3F38013AB70062204F11E01E81C0CF01D
+:1083C0006BFB8CE701322A6070E70C4810F83730FD
+:1083D00002F00F0223FA02F1CD073FF59AAC01211A
+:1083E00001FA02F2134300F8373063E70800002077
+:1083F000605D0100AE0D0020A80D0020AC0D002036
+:10840000A40D002070B500F108040E46204602219C
+:1084100015460CF04EFC0346132205211A705970C4
+:1084200020460CF046FC01230370A0F80160A0F880
+:10843000035070BD0379022B08D0043BDBB20C2B38
+:1084400001D900207047054AD05C7047037F03F0D4
+:108450000303032B0CBF0420052070479C5D010023
+:10846000034B0021024608461A60FEF7ADBC00BF70
+:108470002C0E002006F0C0BD08B5002308F0CEFD8C
+:10848000002008BD10B5044606F0D8FD68B907F015
+:10849000CFF998B907F01CFEC8B907F0B1FEF8B9DA
+:1084A0002046BDE810400BF02FBB124840F22D5182
+:1084B000FBF70CFB07F0BCF90028EBD00D4840F2AD
+:1084C0003251FBF703FB07F003FE0028E5D0094813
+:1084D0004FF4A761FBF7FAFA07F092FE0028DFD00D
+:1084E000044840F23E51FBF7F1FA2046BDE8104047
+:1084F0000BF00ABBAC5D01000BF006BB2DE9F84F99
+:108500002F4F0B783C780D46797899429CBFBB7809
+:108510002B709A428346924645D05A1C294ED2B2BD
+:1085200013FB04F3914208BF0022F1182A703AD0DD
+:10853000F35A03804FF000084FF0010922E07BB3AB
+:10854000037903F00303013B012B31D902234B6074
+:1085500002F060F92B787978387899429CBFBB7823
+:108560002B709A4521D05C1CE4B213FB00F3A142AE
+:1085700008BF0024F1182C7017D0F05ABBF8003057
+:10858000984212D14868012820F00303D7D808F197
+:1085900001085FFA88F8C1F80490002BDAD0D7E719
+:1085A00002234B60D6E74FF000084046BDE8F88F45
+:1085B00008F101085FFA88F8C1F80490C8E700BF25
+:1085C000C0010020C40100202DE9F04FB64EDFF8B5
+:1085D000EC82DFF8ECA2DFF8EC9289B0D6E900017A
+:1085E00005AAFCF789FB0546002840D0059B002B17
+:1085F00000F01E81187806AA04A904F03FFC044686
+:1086000000286AD0DDE90512BDF8103091F800B0FD
+:108610000792ADF8123007AF0DF1120504F044FCDB
+:108620002146079ABDF8120004F07AFC0346204662
+:108630001C4604F0FDFB012004F09EF801212046B9
+:108640000CB104F00DFB3A462946584604F016FCDE
+:1086500004460028E2D1D8F800000BF055FAD6E91C
+:10866000000105AAFCF748FB05460028BED106AA72
+:1086700004A90DF10F0004F0E7FB0446002863D0C5
+:10868000069ABDF810309DF80FB00792ADF8123081
+:1086900007AF0DF1120504F007FC2146079ABDF85B
+:1086A000120004F03DFC034620461C4604F0C0FBCB
+:1086B000012004F061F8012120460CB104F0D0FA49
+:1086C0003A462946584604F0D9FB04460028E2D130
+:1086D000D8F800000BF018FAC1E7059B07931B7947
+:1086E000013B0A2B07D8DFE803F03228060C060608
+:1086F0000606061E0C0040F2E3615046FBF7E6F961
+:108700006CE7694970680022FCF7FEFA674B07992D
+:10871000DB78674A0B702846FCF7E6FAD8F80000C9
+:108720000BF0F2F99BE7604970680022FCF7ECFA65
+:108730000799284602F0AEFB50E707A9284602F049
+:10874000B9FB002800F0958009B0BDE8F08F5649CC
+:1087500070680022FCF7D8FA079C94F82030E7698B
+:108760003BB1012B00F0818040F21A715046FBF7BB
+:10877000ADF9DFF854C19CF803209CF801009CF887
+:108780000210531CDBB2984208BF002399424FF0FD
+:10879000000084F8200000F0818025609CF8001023
+:1087A00001FB02C254608CF80330424CA378E2789B
+:1087B00021789A4229D003FB019CBCF1000F24D000
+:1087C00001979CF820309A07C3F3400B03F0010592
+:1087D00035D5E278A37894F800C061789A4213D036
+:1087E0000133DBB299423AD09A42A3700CD003FB1A
+:1087F0000C9CBCF1000F07D0BBF1000FE1D11DB103
+:108800009CF82030DB07DCD5019F002F3FF4E6AE5B
+:108810003B78002B5AD0013BDBB23B70002B7FF43E
+:10882000DDAE7B68002B3FF4D9AEB8689847D5E63B
+:1088300040F22F615046FBF749F9059BDAE61E4BE3
+:108840005A4659460120C3F808C0FCF7C1FA00286F
+:10885000BFD040F232715046FBF738F9B9E7002338
+:10886000A370002AD0D0CC46C6E7204604F074F8A6
+:108870007FE70D4902467068FCF746FA0799002920
+:108880003FF4ACAE094B0A4ADB780B702846FCF784
+:108890002BFAD8F800000BF037F99FE640F221716F
+:1088A0005046FBF713F980E788140020C001002030
+:1088B000841400209C00002034020020901400202A
+:1088C000AC5D0100A00000204800002040F244718F
+:1088D0005046FBF7FBF83B78013BDBB23B70002BCB
+:1088E0007FF47CAE9DE700BF2DE9F047944B954D9A
+:1088F000186086B008F022FBFCF716FA9248059043
+:108900009248934C934A0492CDE9020503210B222D
+:1089100002250423019200948F4A217023721521AD
+:10892000002025742576FDF73BFD002840F0F180FE
+:108930000122002189480CF029FE06F02BFB044699
+:1089400018B1204606B0BDE8F087854BDFF81882E5
+:10895000844D834F181D03223421FCF733F943461D
+:108960000322181D0821FCF72DF9EC786A78AB7802
+:108970000134E4B2A24208BF00249C42404613D016
+:10898000FCF74EF90646384676B1FCF749F938B19E
+:108990000660EA782B7802FB03535860EC70E5E739
+:1089A00071493046FCF756F9704B0F22181D4821CB
+:1089B000FCF708F96E4B1F22181D0821FCF702F97D
+:1089C0006B48FCF72DF90446002800F0AE80694A98
+:1089D0002046111FFCF77AF96548FCF721F9044697
+:1089E000002800F09C80644A644DDFF89C91DFF819
+:1089F0007C812046111F2E46FCF768F90C2306F8EF
+:108A0000043B99F80340002799F8012099F80230B7
+:108A10000134E4B2A24208BF00249C42304649D04F
+:108A2000FCF7FEF882464046BAF1000F42D0FCF750
+:108A3000F7F800283AD0CAF80470C0F800A099F8F6
+:108A4000031099F800202B7801FB0292013BDBB266
+:108A500050602B7089F80340002BD5D106F0E6FE5C
+:108A6000044600287FF46DAF01F074F80446002836
+:108A70007FF467AF07F02AFB044600287FF461AF5C
+:108A800001F016FA044600287FF45BAF07F0B6FB4E
+:108A9000044600287FF455AF02F082F9044600280E
+:108AA0007FF44FAF012005F01DFF4AE730495046E3
+:108AB000FCF7D0F82B785F1EFFB2002BCED0304EE3
+:108AC000DFF8AC90F478DFF8A4807278B3780134E2
+:108AD000E4B2A24208BF00249C424846BED0FCF744
+:108AE0009FF882464046BAF1000FB7D0FCF798F8DD
+:108AF000013FFFB2F8B1C0F800A0F17832782B78CE
+:108B000001FB0262013BFF2F50602B70F470DCD13F
+:108B1000A4E71C484FF49871FAF7D8FF08E7194802
+:108B200040F21B51FAF7D2FF5DE7164840F21451AC
+:108B3000FAF7CCFF4BE70E495046FCF78BF88DE770
+:108B400090140020611C0100711D01009C18002080
+:108B5000D81A0020991C0100AC14002094140020A5
+:108B6000880E002048000020280F0020441000201C
+:108B7000480F00208C14002084140020440F002093
+:108B800070000020AC5D01005C0000202DE9F04F7A
+:108B900087B000F0E1FF002840F0EF8001F03AFAE2
+:108BA000002840F0F480684604F060FE002800F0E1
+:108BB000F98002F0F7F8002840F00581934B944EBD
+:108BC000944F954D00245C80204605F08BFE934B1E
+:108BD00074805C807C806C800122214668460CF0A9
+:108BE000D5FC8F4B224621460320C3F808D0FCF762
+:108BF000EFF8002840F0ED804FF0FF324FF0FF33E8
+:108C000068460AF0A7FF874BDFF81C92DFF8148252
+:108C1000181D03223421FBF7D5FF4B460322181DF4
+:108C20000821FBF7CFFFF4787278B3780134E4B20F
+:108C3000A24208BF00249C42484616D0FBF7F0FF32
+:108C400082464046BAF1000F0FD0FBF7E9FF40B172
+:108C5000C0F800A0F278337802FB03635860F47028
+:108C6000E2E771495046FBF7F5FF704B0F22181DE4
+:108C70004821FBF7A7FF6E4B1F22181D0821FBF7A9
+:108C8000A1FF6B48FBF7CCFF0446002800F0AD8045
+:108C9000684A2046111FFCF719F86548FBF7C0FF2A
+:108CA0000446002800F09B80634A644EDFF87CA1F4
+:108CB0002046111FB046FCF709F80C2308F8043BC6
+:108CC000EC784FF000096A78AB780134E4B2A24244
+:108CD00008BF00249C42404620D0FBF7A1FF8346FA
+:108CE0005046BBF1000F19D0FBF79AFF90B1CBF8BB
+:108CF0000490C0F800B0E9782A78337801FB02527A
+:108D0000013BDBB250603370EC70002BDBD107B05D
+:108D1000BDE8F08F46495846FBF79CFF33785D1E4F
+:108D2000EDB2002BF3D0FC78DFF80491DFF8FC8083
+:108D30007A78BB780134E4B2A24208BF00249C4296
+:108D40004846E4D0FBF76CFF82464046BAF1000F7C
+:108D5000DDD0FBF765FF013DEDB200284BD0C0F838
+:108D600000A0F9783A78337801FB0272013BFF2DBD
+:108D700050603370FC70DBD1C9E731484FF4BF71EC
+:108D8000FAF7A4FE01F046F900283FF40CAF2C4896
+:108D90004FF4C271FAF79AFE684604F067FD0028A6
+:108DA0007FF407AF01F058F9044648B394F848300F
+:108DB00000226FF3000384F84830626201F0F2FF92
+:108DC00000283FF4FBAE1E484FF4CF71FAF77EFE49
+:108DD000F4E61B484FF4E871FAF778FE0CE7184800
+:108DE00040F21B51FAF772FE5EE7154840F214514B
+:108DF000FAF76CFE4CE70E495046FBF72BFF86E76F
+:108E00000F484FF4C971FAF761FECFE7C0010020A7
+:108E100048000020700000205C0000209C00002022
+:108E200004020020880E0020280F0020441000209B
+:108E3000480F00208C14002084140020440F0020D0
+:108E4000AC5D01002DE9F04F85B0CDE900015B4C30
+:108E50005B4DDFF87491009A00231360D9E900019B
+:108E600003AAFBF749FF0746002800F09C80039BFC
+:108E700054491A780198FFF741FB0346002840F057
+:108E80008980A2788DF80920E2780DF109010DF1B1
+:108E90000A001E46FFF732FB46EA000212F0FF020C
+:108EA0000346F1D1039B1979032970D14649D9F8BA
+:108EB0000400FBF729FF45493846FBF7CBFE2B782A
+:108EC0000B2B5DD80133424903982B70FBF7C2FE90
+:108ED0002B78002BBFD03F4FDFF8F080FE78DFF813
+:108EE000F0A07A78BB780136F6B2B24208BF00260D
+:108EF0009E4240461FD0FBF793FE83465046BBF18F
+:108F0000000F18D0FBF78CFE88B10023CBF804309B
+:108F1000C0F800B0F9783A782B7801FB0272013B77
+:108F2000DBB250602B70FE70002BDAD193E727493B
+:108F30005846FBF78FFE2B78002B8CD0264FFE78FF
+:108F40007A78BB780136F6B2B24208BF00269E425C
+:108F500081D01E48FBF764FE804600283FF47BAFBB
+:108F60001B48FBF75DFEC8B1C0F80080F9783A787D
+:108F70002B7801FB0272013B50602B70FE706AE798
+:108F8000164840F2C231FAF7A1FD2B789AE7009912
+:108F90000B601346184605B0BDE8F08F0B494046FC
+:108FA000FBF758FE57E7E27806490198FFF7A6FA63
+:108FB0000346184605B0BDE8F08F00BFC001002091
+:108FC000440F0020C201002080140020480F002020
+:108FD000441000205C00002070000020AC5D010007
+:108FE00070B5424982B000234868019301AAFBF79B
+:108FF0008BFE0446002848D03D492046FBF72AFE58
+:10900000019A1379102B0ED8DFE803F0090D090D32
+:10901000090D0D0D0D0D1409090909090900002B91
+:1090200039D002B070BD33484FF44071FAF74EFDAD
+:1090300002B070BD137F95683C2B2C6832D0537FF3
+:10904000E3B1D4F8D00028B100232B49C4F8D030C4
+:10905000FBF700FE94F8D6306FF3000384F8D630A7
+:10906000002001F013F80446002000F01BFE50EA37
+:109070004400D6D104F0B0FF02B070BD94F848208F
+:1090800063F3000284F84820EAE71A4840F22E21F0
+:10909000FAF71CFDB0E717484FF43F71FAF716FDD9
+:1090A00002B070BDAE68AEB1F36D0022AA6023B10C
+:1090B000104840F28F21FAF709FD06F1500106F140
+:1090C0004C00FBF707FE054650B13068F56501F02E
+:1090D00071FBBFE707484FF42371FAF7F7FCE3E7AA
+:1090E000044840F29221FAF7F1FCEEE780140020E8
+:1090F000480F0020AC5D0100441000202DE9F0472E
+:1091000004688E4E82B080468CB38D4FDFF840925B
+:10911000254624682B79102B5CD8DFE803F0175B19
+:10912000175B175B5B5B5B5B096317171717170010
+:109130002B7F3C2B00F0DC80022B00F0AA805BB17F
+:109140004FF456713846FAF7C1FC2B7923B94FF426
+:1091500067713846FAF7BAFC33780B2B5ED80133C7
+:10916000284649463370FBF775FD002CD0D1002707
+:10917000C8F80070337853B3724DDFF8CC81EC78C7
+:10918000DFF8CC916A78AB780134E4B2A24208BF30
+:1091900000249C4240464CD0FBF742FD82464846A4
+:1091A000BAF1000F45D0FBF73BFD00283DD0CAF8CF
+:1091B0000470C0F800A0E9782A78337801FB0252E5
+:1091C000013BDBB250603370EC70002BDAD102B09F
+:1091D000BDE8F08740F2B6313846FAF777FC002C4C
+:1091E00096D1C4E7E88801F0F3FA836F054623B10E
+:1091F00040F2A9313846FAF769FC05F16C0105F136
+:109200006800FBF767FD0346002879D0AB67284666
+:1092100001F0D0FA002C7FF47BAFA8E740F2C23116
+:109220003846FAF753FC337899E747495046FBF73D
+:1092300011FD33785F1EFFB2002BC8D0434DDFF81D
+:109240000881EC78DFF808916A78AB780134E4B2F1
+:10925000A24208BF00249C424046B8D0FBF7E0FC85
+:1092600082464846BAF1000FB1D0FBF7D9FC013F66
+:10927000FFB200285AD0C0F800A0E9782A783378E5
+:1092800001FB0252013BFF2F50603370EC70DBD1C9
+:109290009DE7AB68D3F800A0DAF82450002D3FD04A
+:1092A000EB6D0022CAF8242023B140F24131384648
+:1092B000FAF70CFC05F1500105F14C00FBF70AFD33
+:1092C000034628B32868EB6501F074FA9AF8483031
+:1092D0006FF300038AF84830002000F0D5FC002826
+:1092E0007FF443AF04F078FE002C7FF411AF3EE72B
+:1092F00028464946FBF7AEFC002C7FF409AF36E761
+:1093000001904FF46B713846FAF7E0FB019B7DE763
+:1093100001904FF451713846FAF7D8FB019BD1E721
+:1093200040F23E313846FAF7D1FBB9E706495046DC
+:1093300002B0BDE8F047FBF78DBC00BF440F002032
+:10934000AC5D01005C000020480F00207000002090
+:10935000441000200148FBF763BC00BF480F002009
+:109360000149FBF777BC00BF480F00200148FBF71D
+:1093700057BC00BF441000200149FBF76BBC00BF85
+:1093800044100020024B034ADB780B70FBF7ACBCA7
+:10939000C001002084140020014B18680AF0B4BBFF
+:1093A0009014002010B40D4B9A78DC78A24209D8B2
+:1093B000A11AC9B2884202D8A242197809D1002064
+:1093C00010BC70475978891A2144C9B28842F6D82E
+:1093D000197810BC02FB0133586870475C0000200C
+:1093E00010B40A4B9978DA7818785C788A420AD0F7
+:1093F0004A1CD2B201FB0031944208BF00224868E7
+:109400009A7010BC70470020FBE700BF5C00002092
+:1094100070B50F4AD67855789478731CDBB29D42AC
+:1094200008BF00239C420AD0154615F8044B14FBD4
+:1094300006F42E1903D02853D370716070BD05480F
+:1094400040F20C41FAF742FB00231B80FFDE00BF15
+:10945000C0010020AC5D0100086001480AF054BB67
+:109460009414002010B54FF0FF320C464FF0FF333C
+:1094700002480AF06FFB206810BD00BF9414002062
+:10948000044A13680BB1184670470346106018462B
+:10949000704700BF800E0020044A136823B1984231
+:1094A00006BF00211160002318467047800E00207F
+:1094B000014B1868704700BF800E0020044A1368F3
+:1094C0000BB118467047034610601846704700BF3E
+:1094D000840E0020044A136823B1984206BF00217D
+:1094E0001160002318467047840E0020014B186855
+:1094F000704700BF840E002030B5056815F1100FCD
+:1095000087B00BD004460122684600210CF03EF8DB
+:109510002B7C0F4AC5F818D06A6113B9002007B038
+:1095200030BD0C4B0022114603209C60FBF750FC21
+:1095300040B94FF0FF324FF0FF3368460AF00AFBA4
+:1095400007B030BD044840F27741FAF7BFFAF0E7C0
+:10955000F984000014020020AC5D010010B40D4B32
+:109560009A78DC78A24209D8A11AC9B2884202D8F6
+:10957000A242197809D1002010BC70475978891A85
+:109580002144C9B28842F6D8197810BC02FB0133D5
+:10959000586870477000002010B40A4B9978DA7848
+:1095A00018785C788A420AD04A1CD2B201FB00319A
+:1095B000944208BF002248689A7010BC704700208F
+:1095C000FBE700BF7000002038B50C46054603F0ED
+:1095D00035FC21462070034A2846BDE83840FBF799
+:1095E00083BB00BF8C1400200122024B11460020D7
+:1095F000FBF7EEBB240200202DE9F047194E9DF841
+:1096000024A0F478777896F802C0651CEDB2AF42DA
+:1096100008BF0025AC4521D0994633460F46114678
+:1096200013F8042B02FB0434C4B1804610222046F8
+:109630000BF032FA94F82020C4F810900AF0010AD6
+:1096400022F0030343EA0A03089AE261C4E90587AA
+:10965000F57084F820300020BDE8F0876FF0360008
+:10966000BDE8F0879C000020054B9A78D9781878DF
+:1096700091421ABF043302FB00300020704700BF44
+:109680009C00002030B40C4B02785C78DD781978AF
+:1096900094429CBF9A78027095420AD0531C074DA1
+:1096A000DBB29C4208BF0023037002FB015030BCB8
+:1096B00070470020FBE700BF9C000020A0000020B6
+:1096C000064B9978D8781A78884205D001FB023386
+:1096D000586810B1203070470020704748000020C3
+:1096E000F8B5144A9378D478117855789C421FD0F5
+:1096F00003FB012101334C68DBB29D4208BF00230C
+:1097000093709CB1012500262768E06125712660D1
+:1097100003F094FB084A207021463846FBF7E4FA30
+:10972000064B30462A462946FBF752FB2046F8BD39
+:109730000024FBE7480000208C14002024020020B5
+:10974000F8B50568D5F8CC700646EFB1D5F8D0402D
+:109750000023C5F8CC302CB300214FF6FF730A224A
+:10976000C5F8D01004F11C002271E3801E220BF01A
+:10977000BEF93C23A660384623772146FFF702FE58
+:10978000BDE8F840FFF708BE0A484FF4D761FAF782
+:109790009DF9D5F8D040D5F8CC700023C5F8CC3071
+:1097A000002CD9D1034840F2BC61FAF78FF9D5F803
+:1097B000D040D1E7E85D010060BB38B5194D0A7CA7
+:1097C00001F11C030C46AB60A2B14A692AB11648EC
+:1097D00040F29E61FAF77AF9AB6814491448A36124
+:1097E00000226161E8600F4B11460220FBF7F0FA9E
+:1097F00088B938BD0D4BEB6001212B460220FBF7E9
+:10980000E7FA0028F5D0BDE83840074840F2AA61E1
+:10981000FAF75CB97047BDE83840034840F2A561EB
+:10982000FAF754B954020020E85D010041970000A6
+:109830008DF0000000B9704710B50C46FFF738FEF8
+:10984000844206D0BDE81040024840F25F61FAF75A
+:109850003DB910BDE85D010030B5134C134A1C1B27
+:1098600064091D46A2FB043414F0FF0F83B014D129
+:10987000A21C0F4B0095D2B201210020FCF7B6FECE
+:1098800030F0020307D00B484FF4D06103B0BDE8BD
+:109890003040FAF71BB903B030BD064840F27B6197
+:1098A000FAF714F9E4E700BF081B002029499224C5
+:1098B000B9970000E85D01002DE9F04115464FF62B
+:1098C000FF7295428AB01C4618D01B7C0133DBB274
+:1098D00080460F462374002B51D02C4E2C4BC6F8DB
+:1098E0000080002204F11C0C114601209E6077606C
+:1098F0003581C6F80CC0FBF76BFA38B994F82850DC
+:1099000015F001050CD00AB0BDE8F08121484FF4F4
+:10991000C561FAF7DBF894F8285015F00105F2D18B
+:10992000042109A805F088FB09981B491B4A0694E5
+:10993000A1FB0031431A01EB5303A21A184C049502
+:1099400040F247111B0A520901FB1303A4FB021248
+:109950000232144905910133CDE90255CDE9005594
+:109960002846D2B201210993FCF7F0FD30F0020342
+:10997000C9D0084840F23E61FAF7A8F8C3E70548A5
+:1099800040F21C61FAF7A2F8A7E700BFF41B002021
+:1099900044020020E85D010021F1D490081B002062
+:1099A000294992243598000070B5154C656AEB6D15
+:1099B00023B1144840F2D361FAF788F805F1500159
+:1099C00005F14C00FBF786F9064690B12868EE6574
+:1099D00000F0F0FE0025D4F8D0006562FFF7CCFC63
+:1099E000D4F8CC00C4F8D050FFF7BAFCC4F8CC507F
+:1099F00070BD044840F2D561FAF768F8E6E700BFA9
+:109A0000081B0020E85D01002DE9F0474E4D4F4C4A
+:109A1000844694F8D6608A4695E8030082B016F032
+:109A2000010699469DF82C809DF8303000908DF805
+:109A3000041072D194F82C10208DDFF814E1154633
+:109A400027272D2217FB012702AA5244BAF1010F42
+:109A500008F0070112F808ACE25D4FEA410103F09B
+:109A6000030308BF4FF0000C0AF00F081AF00E0FA6
+:109A700041EA032322F01F0294F8D610A4F8D4C0C0
+:109A800048EA02020CBF4FF0010C4FF0000C00EA54
+:109A90000E0065F342016CF3451203432385E25542
+:109AA0004A0704EB0708CBB284F8D61009D569F34E
+:109AB000C3030A9984F8D630062204F1D7000AF0CD
+:109AC000EBFFE25D02F00F03012B05F0010129D04D
+:109AD00098F8013061F38612C3B16FF3C712E255F3
+:109AE00094F87C10AD0127237D2213FB012305F0A0
+:109AF000400545F00405E5541C44637813B906227B
+:109B00001E466270304602B0BDE8F08763F3C712AC
+:109B10000623E25588F80130E2E70C26304602B011
+:109B2000BDE8F08761F38612944669F3C71C0A9971
+:109B300004F807C0062208F108000AF0ADFF0C2364
+:109B400088F80130CCE700BF085C0100081B00204A
+:109B5000F1FCFFFF0020704730B53A4C94F8D63046
+:109B6000DA0785B037D52046FFF78AFC844204D057
+:109B700035484FF4E561F9F7A9FF94F82830DB0781
+:109B800003AD2BD402220321304B00950020039219
+:109B9000FCF72CFD2946FFF765FC002842D12C4834
+:109BA000FFF7AAFC98BB2748FFF776FC844204D055
+:109BB000254840F24A71F9F789FF636A0BB1FFF754
+:109BC000F3FE94F8D63000206FF3000384F8D6300B
+:109BD00000F042FA88B3002005B030BD02220392A3
+:109BE00003211A4B009501220020FCF7FFFC2946B7
+:109BF000FFF738FC0028C5D01248FFF74DFC84421F
+:109C0000E9D0114840F23371F9F760FFE3E70E48FD
+:109C100040F24771F9F75AFF0A48FFF73DFC8442CA
+:109C2000C6D1CAE70748FFF737FC8442D3D00648BD
+:109C300040F24171F9F74AFFCDE704F0CDF9002079
+:109C400005B030BD081B0020E85D010059940000FC
+:109C5000241B0020034A044B801A4009A3FB003058
+:109C600080B27047081B002029499224044A0068EA
+:109C7000044B801A4009A3FB003080B2704700BF3C
+:109C8000081B00202949922438B9054890F8D6309D
+:109C900013F0010F08BF002070470020704700BF7D
+:109CA000081B002028B9044B93F8D60000F00100EF
+:109CB00070470020704700BF081B002050B9064BBA
+:109CC00093F8D60010F0010005D093F8290000F0B9
+:109CD0000300704700207047081B00202DE9F04169
+:109CE00090F82C4004EB8403C4EBC30300F11C0C7C
+:109CF00003F1110605461CF8060000F00F0EBEF138
+:109D0000010F0F460CEB060138D0904695F82B203A
+:109D100094425FFA82FE34D085F82CE0BFF34F8F77
+:109D200095F82B20964533D00134E4B2022C1CF870
+:109D300006002AD02722022312FB0433C0F340126C
+:109D4000C0F3030646EA4216C0F3801246EA8216C2
+:109D500000F0800005F12B023043D618D0540231B8
+:109D60000622B01C0AF098FE3A46414606F1080069
+:109D700006370AF091FE777085F82C400020BDE888
+:109D8000F0810134E4B2022CD4D102230024D5E7BF
+:109D90001CF806000233D1E70A4601460148FFF7E6
+:109DA0009DBF00BF081B00202DE9F04190F87C40CA
+:109DB00090F87BE004EB84030546C4EBC30303F196
+:109DC000610005F11C0CA6450E4617460CEB000180
+:109DD00009D05FFA8EF285F87C20BFF34F8F95F89B
+:109DE0007BE0724527D00134E4B2022C25D0272233
+:109DF000022312FB04331CF80000C0F3801005F1AD
+:109E00007B02800102EB030840F00400D054B31D34
+:109E100088F80130023108F1020006220AF03CFE07
+:109E20003246394608F108000AF036FE85F87C40D3
+:109E30000020BDE8F0810233DDE702230024DAE7E9
+:109E40000A4601460148FFF7AFBF00BF081B0020CC
+:109E50002DE9F0411C461B7C0133DBB280460F46E6
+:109E60001646237483B10F4D0F4BC5F800800022B6
+:109E70001C34114601209D60EC606F602E81FAF762
+:109E8000A7FF38B9BDE8F08108484FF4F871F9F739
+:109E90001DFEE8E7BDE8F04104484FF4FE71F9F714
+:109EA00015BE00BF581C002064020020285E01007F
+:109EB0000020704730B5054685B008460C46FFF7D0
+:109EC000DFFA844204D01F484FF4BB71F9F7FEFD5E
+:109ED0002A1D022103AD03911B4B00950321D2B231
+:109EE0000020FCF783FB2946FFF7BCFAD0B904F148
+:109EF0001C00FFF701FB78B92046FFF7CDFA84423A
+:109F000007D010484FF4C471F9F7E0FD002005B008
+:109F100030BD002005B030BD0A4840F28511F9F788
+:109F2000D5FDE9E72046FFF7B7FA844207D0054898
+:109F300040F27F11F9F7CAFD0C2005B030BD0C20AE
+:109F400005B030BD285E01005994000038B50E4CB4
+:109F500094F84830DB0701D5606A10B10C2528461B
+:109F600038BD2146FFF7A6FF05460028F7D194F833
+:109F7000483060F3000384F84830FFF785FE00287E
+:109F8000EDD104F029F8EAE70C1C002080B338B5C5
+:109F90001F4C94F8483013F0010135D1C3F341054B
+:109FA0009B070AD50120FCF7CBFB0621FAF782FEBE
+:109FB00060B394F84850C5F3410594F83200C0F3FB
+:109FC000C10004F04DF894F8333094F832206FF368
+:109FD0000003FF2184F83330D30984F8341002D011
+:109FE000023D012D06D9BDE838400948F6F748BDC5
+:109FF000FFF7ACBF002004F0D1F894F8333043F001
+:10A00000010384F83330EEE70C2038BD122038BD50
+:10A010000C1C002008B5FFF799FF002008BD00BF09
+:10A02000044A054B801A8008A3FB0030C0F34700A8
+:10A03000704700BF0C1C0020BD86F21A044A00685D
+:10A04000044B801A8008A3FB0030C0F34700704720
+:10A050000C1C0020BD86F21A38B9054890F848302B
+:10A0600013F0010F08BF002070470020704700BFA9
+:10A070000C1C0020044A92F8483003F0010303430B
+:10A080000CBF1046002070470C1C002088B90A4AFB
+:10A0900092F8483013F001000CD092F83200526A66
+:10A0A00003F00103C00903FA00F01AB140F0040004
+:10A0B00070470020704700BF0C1C002050B9064BB1
+:10A0C00093F8480010F0010005D093F83200C0F377
+:10A0D000C1007047002070470C1C002010B4D0E96C
+:10A0E0006C240346084664B1944227D0D3F8BC11CF
+:10A0F000914218D01268C3F8B021002310BC03604D
+:10A100007047D3F8BC11914223D0117901F00301BB
+:10A1100003290DD01268C3F8B0210022C3E96D22D3
+:10A1200010BC0060704711460968C3F8BC11E1E734
+:10A13000D1790329DED00A29ECD1DBE7D3F8B811B5
+:10A140001268C3F8B021A14218BFC3F8B421E7D107
+:10A15000E3E7002AE8D1D3F8B8111446F0E700BFCE
+:10A160004B070CD5810101F57470904228BF104651
+:10A170004FF42961884238BF084680B2704710B456
+:10A1800000F10D0401F003000444C1F34001E400B8
+:10A19000CC40A3B2B3F5A47F00F1280038BF4FF440
+:10A1A000A473C4009A4224FA01F128BF1A468A42D5
+:10A1B000104638BF084680B210BC704710B50C4638
+:10A1C00030B994F8DC306FF3410384F8DC3010BD13
+:10A1D00005484FF4C961F9F779FC94F8DC306FF366
+:10A1E000410384F8DC3010BD685E010038B5D0F85A
+:10A1F000B03104460D461BB190F8521188070DD5B9
+:10A20000D4F8B41119B362BBD4F8B8311A682A6013
+:10A210001D60C4F8B8512B68B3B138BD94F8AB11C8
+:10A22000C907EDD4D4F8BC118B4204BF1968C4F837
+:10A23000BC11D4F8B411D1B1002AE5D0114840F2D4
+:10A240005F71F9F743FCDFE7C4F8C05138BD2B60FC
+:10A25000C4F8B051002ADFD1C4E96D55002BDCD120
+:10A26000F2E7084840F27171F9F730FCCCE7196861
+:10A2700029601D60002ACED1C4E96D552B68002BE2
+:10A28000CBD1E1E7685E010038B51348134B1022CB
+:10A290004FF4E471FAF796FC114B0722181D2421A4
+:10A2A000FAF790FC0F4B4022181D2021FAF78AFC88
+:10A2B0000D4B4722181D0821FAF784FC0B4B0C4963
+:10A2C0000C4A0D481B251D8007234FF4A4740B7006
+:10A2D00013700480002038BD6C1C0020681C002016
+:10A2E000F8380020F8390020FC4100208A4A00207C
+:10A2F000AA4E0020A94E00208C4A00202DE9F043F0
+:10A30000D0F800802D4983B005464FF4E4724046F2
+:10A31000FAF7BCFC05F14C06294606F0AFFA286DA9
+:10A32000314601AAFAF7F0FC40B3254C4FF6FF770F
+:10A3300004F10409E17894F801C0A2784B1CDBB267
+:10A340009C4508BF00239A4230D0227812FB01F2CC
+:10A3500019EB020E2AD0DDF804C029F80270DCF8EF
+:10A360000010CEF804C001AA0160CCF8000031460C
+:10A37000286DE370FAF7C8FC0028DBD1D8F830016B
+:10A3800008F5987450B100232146C8F83031FFF722
+:10A390001BF9FFF729F903B0BDE8F083094840F243
+:10A3A0000471F9F793FBD8F83001ECE705484FF456
+:10A3B000DE61F9F78BFB00231B80FFDE6C1C0020A5
+:10A3C00074020020685E010010B50C4640B90B4BCA
+:10A3D0000022114602209C60FAF7FAFC30B910BD49
+:10A3E000074840F27161F9F771FBF0E7BDE81040F2
+:10A3F00003484FF4CF61F9F769BB00BFFC040020AC
+:10A40000685E010010B50C4660B92046FFF762F89F
+:10A41000844206D0BDE8104005484FF4CD61F9F7FD
+:10A4200055BB10BD024840F26461F9F74FFBECE701
+:10A43000685E010010B50C4660B92046FFF73EF893
+:10A44000844206D0BDE81040054840F25F61F9F74C
+:10A450003DBB10BD024840F25B61F9F737FBECE70A
+:10A46000685E010000B9704710B50C46FFF73EF872
+:10A4700084420AD0FFF71CF8844206D0BDE81040A1
+:10A48000024840F25461F9F721BB10BD685E01003B
+:10A490002DE9F041054626480E4690461F46FAF73C
+:10A4A000BFFB002841D0032304794371D5F8B021C4
+:10A4B00080F808802343112147720371C1711AB1DA
+:10A4C00095F85231990710D5D5F8B4313BB3D5F88A
+:10A4D000B8311A6802601860C5F8B8010268DAB1CC
+:10A4E000032333700020BDE8F08195F8AB31DB0722
+:10A4F000EAD4D5F8BC319A4204BF1368C5F8BC3120
+:10A50000D5F8B431002BE2D1136803601060026803
+:10A51000C5E96D00002AE3D1C5F8C001E0E702609B
+:10A52000C5E96C00C5F8B801D9E76FF03600DAE785
+:10A53000F839002070B5044679B190F87E200B7888
+:10A5400042F01002012680F87E2043F00303062526
+:10A550004E7000200B70CD7070BD2648FAF760FB7E
+:10A56000002843D094F87E30027943F01003012193
+:10A5700084F87E304171D4F8B03142F003020621F4
+:10A580000271C171E3B194F85221910718D494F883
+:10A59000AB21D20714D4D4F8BC21934204BF1A686B
+:10A5A000C4F8BC21D4F8B421CAB1D4F8B8311A68BF
+:10A5B00002601860C4F8B801036863B1002070BD80
+:10A5C000D4F8B421002AF0D10360C4E96C00C4F8C7
+:10A5D000B801002BF2D1C4F8C001184670BD1A684A
+:10A5E000026018600368C4E96D00E6E76FF03600AA
+:10A5F00070BD00BFF839002090F85231D0F8B42176
+:10A600009B0770B504460D4609D5002A3CD0D0F80A
+:10A61000B8311A680A6019602B6833B370BDD0F87E
+:10A62000B011E1B190F8AB3190F8E86090F8E90032
+:10A63000864203F0010303D094F8EA0003282BD0EC
+:10A64000B3B9D4F8BC3199423CD092B90B682B60B5
+:10A650000D60C4E96D552B68002BDFD105E042B9D0
+:10A660002A60C0E96C55C0F8B851C4F8C05170BD3B
+:10A6700072B3D4F8B8311A682A601D60C4F8B851B2
+:10A680002B68002BCAD1F0E7D0F8B0310B60C4F8CA
+:10A69000B011002BC2D1E8E7087900F003000328CD
+:10A6A000CED1C879032801D00A28C9D1B3B9D4F8CA
+:10A6B000BC318B421DD00AB3124840F25F71F9F7EA
+:10A6C00005FAD6E70B68C4F8BC31002AD1D1BDE742
+:10A6D0002960C4E96C55C4F8B85170BD2AB1094865
+:10A6E00040F27171F9F7F2F9C3E72960C4F8B0518B
+:10A6F00070BD0B68C4F8BC31002ADDD10B682B603B
+:10A700000D6089E7685E0100F8B5064624480D46ED
+:10A710001746FAF785FA00283ED0BB793979214AE5
+:10A72000044678791B0443EA00230B43D6F81C1136
+:10A7300096F8DC0013430B40C3F31003C6F81C313A
+:10A74000BB7997F805C039791B0443EA0C230B4306
+:10A7500021791343C3F310030927082240F00100B5
+:10A7600041F00301C6F8203186F8DC002171A01801
+:10A770006771E77100210AF0BAF996F81C3123726B
+:10A78000492201233046A37262722146FFF734FF4B
+:10A7900003232B700020F8BD6FF03600F8BD00BF1A
+:10A7A000F8390020D030FEFF0148FAF739BA00BF6F
+:10A7B000681C00200149FAF74DBA00BF681C002050
+:10A7C00002494FF4E472FAF761BA00BF6C1C002032
+:10A7D00002464FF4E4710148FAF754BA6C1C0020A9
+:10A7E0000F280CD810B5024604464FF4E471054812
+:10A7F000FAF748FA838DA34218BF002010BD00204D
+:10A80000704700BF6C1C00200148FAF709BA00BF6E
+:10A81000F83800200149FAF71DBA00BFF8380020C7
+:10A820000F2852D8F0B50246044689B02A480D4692
+:10A830004FF4E471FAF726FA868DA6421CD1274A16
+:10A84000D778547891787B1CDBB29C4208BF0023F8
+:10A8500099423DD0144614F8041B11FB07F1671808
+:10A8600036D090F93DC06652BCF1000F7D60D370C8
+:10A8700006DB002009B0F0BD6FF0150009B0F0BD97
+:10A88000838E002BF5D090F8DC3013F00204F0D169
+:10A8900043F0020380F8DC30114906900123721D59
+:10A8A00005910393CDE901442346D2B20494009468
+:10A8B00003212046FBF74AFE30F00203D9D00948B5
+:10A8C000FD21F9F703F92046D4E76FF01500704732
+:10A8D0006FF0360009B0F0BD6C1C0020B8040020F9
+:10A8E000BDA10000685E01002DE9F0470F28BDF80A
+:10A8F00020A0BDF82490BDF8288035D804460D4628
+:10A9000017464FF4E47102463B481E46FAF7BAF97F
+:10A91000838DA34228D155BB90F87231D90643D517
+:10A9200090F93D30002B65DB90F8042190F805315B
+:10A9300093425CD190F80621A0F808A101330121CF
+:10A9400022F0070280F8043142F00502002380F86B
+:10A950001411A0F80A91A0F80C8180F80621C0F823
+:10A9600010311846BDE8F0870220BDE8F087013DB0
+:10A9700015F0FF0590F8703190F8712120D09342C6
+:10A9800035D090F8723103F00702032A2FD105F079
+:10A99000070545F0080523F00F031D4380F87251A9
+:10A9A00080F873710020E0E790F8DC30DA0703D517
+:10A9B000D0F81C319B07B3D590F8703190F8712115
+:10A9C000934214D1B0F87221A0F8746102F0F00241
+:10A9D000013342F0080280F87031A0F876A1A0F8A7
+:10A9E0007891A0F87A81A0F872210020BDE70C20B0
+:10A9F000BDE8F0871A20B8E76C1C00200F281DD88E
+:10AA0000F8B5024606460D460D484FF4E471FAF7D4
+:10AA100039F9838DB34204460ED100F13807002680
+:10AA200084F8C4610522394628460AF035F894F8BE
+:10AA3000C4010028F4D1F8BD0220F8BD02207047FF
+:10AA40006C1C00200F2816D838B5024604460D4667
+:10AA50000A484FF4E471FAF715F9838DA34208D13F
+:10AA600090F82C3180F82E51013380F82C310020E1
+:10AA700038BD022038BD0220704700BF6C1C00208A
+:10AA80000F2818D810B5024604464FF4E4710B485D
+:10AA9000FAF7F8F8838DA3420BD190F8193190F8AA
+:10AAA0001821934205BF013380F818310C20002093
+:10AAB00010BD022010BD0220704700BF6C1C00209A
+:10AAC0000F2818D810B5024604464FF4E4710B481D
+:10AAD000FAF7D8F8838DA3420BD190F8253190F87E
+:10AAE0002421934205BF013380F824310C2000203B
+:10AAF00010BD022010BD0220704700BF6C1C00205A
+:10AB00000F2836D870B504460E4615464FF4E4714A
+:10AB100002462048FAF7B6F8838DA3421FD190F879
+:10AB20009A311C0721D490F8DC20D10719D490F871
+:10AB3000981190F899218A421DD003F00703032B46
+:10AB400004D0033303F00703012B10D8B0F8A4316D
+:10AB50006BB9A0F8A461A0F8A651184670BD0220F8
+:10AB600070BDD0F81C219206E1D41A2070BD0C20D3
+:10AB700070BD0220704790F89A31A0F89E610132B2
+:10AB80006FF3020380F89821A0F8A25180F89A315F
+:10AB9000002070BD6C1C0020034A044B12881B88E7
+:10ABA00002800B80704700BF8A4A00208C4A002038
+:10ABB000024A034B10801980002070478A4A002007
+:10ABC0008C4A002030B41B254FF429640580158081
+:10ABD0000C801C8030BC70470F281AD870B5044612
+:10ABE0000D4616464FF4E47102460B48FAF74AF850
+:10ABF000838DA3420BD190F86430C3F302032B7012
+:10AC000090F86530C3F302033370002070BD02205A
+:10AC100070BD0220704700BF6C1C0020024A034B2D
+:10AC20001070197000207047AA4E0020A94E002015
+:10AC30000F284BD82DE9F0410546884616464FF4BB
+:10AC4000E471024622481F46FAF71CF8838DAB4296
+:10AC500004462DD190F8AB0110F0080033D194F8E0
+:10AC6000DC30DB072AD494F8E82094F8E9309A42E3
+:10AC700021D194F8A83194F8A9219A421BD108F067
+:10AC800007018900B4F8AA5141F4806107F0070375
+:10AC900041EA431306F0010643EA462305F47941ED
+:10ACA00001320B4384F8A821A4F8AA31BDE8F08151
+:10ACB0000220BDE8F0810C20BDE8F081D4F81C3101
+:10ACC00013F4106FCFD11A20BDE8F0810220704735
+:10ACD0006C1C00200F2812D838B5024604460D46D9
+:10ACE00008484FF4E471F9F7CDFF838DA34204D1F6
+:10ACF00090F8C1302B70002038BD022038BD0220F2
+:10AD0000704700BF6C1C00200F281DD838B50246C4
+:10AD100004460D460D484FF4E471F9F7B3FF838DF7
+:10AD2000A3420FD1B0F8D210C38D094A03FB01F33F
+:10AD3000C3EB431103EB8103A2FB03239B092B808D
+:10AD4000002038BD022038BD022070476C1C002056
+:10AD5000D34D62100F281ED838B5024605460C4662
+:10AD60000E484FF4E471F9F78DFF828DAA42034635
+:10AD70000FD1C28D40F2E24101FB02F242F21071AA
+:10AD800001FB042101390020B1FBF2F1A3F8D2103C
+:10AD900038BD022038BD0220704700BF6C1C002067
+:10ADA000FFF772BA2DE9F04385B0DFF8B090274E77
+:10ADB000DFF8AC80002503AF0DE00023A367204639
+:10ADC000FEF76AFB844240F29461304601D0F8F706
+:10ADD0007DFE102D2DD04FF4E471AAB24846F9F74C
+:10ADE00051FF0446FEF74CFB844240F28561304639
+:10ADF00001D0F8F76BFE6A1D4FF0020C032100979B
+:10AE0000D2B243460020CDF80CC0FBF7EFFB394629
+:10AE10000135FEF727FB0028CFD104F11C00FEF717
+:10AE20006BFB0028C9D040F28E613046F8F74EFE29
+:10AE3000C3E707490748084A002343804B80136053
+:10AE4000FFF722FA05B0BDE8F08300BF685E01009D
+:10AE500074020020B8040020EC3800206C1C002094
+:10AE600059940000014B1888704700BF8A4A00209F
+:10AE7000014B1888704700BF8C4A0020014B18789E
+:10AE8000704700BFAA4E0020014B1878704700BFE2
+:10AE9000A94E00208B689B6810B493F82140E40908
+:10AEA00001F1080202D010BCF7F77ABB10BCF7F72B
+:10AEB000B3BD00BF2DE9F04F0B68DE880F2E85B0C3
+:10AEC00000F2A5800C4607463246BB484FF4E471B9
+:10AED000F9F7D8FE838DB342054640F0978022688B
+:10AEE00090F85211137F03F00303032B164601F071
+:10AEF000010040F0928092F81FA0002800F0978097
+:10AF000095F93D30002B01F00401C0F221810029A8
+:10AF100000F08086BAF1020F00F0BE83BAF10B0F89
+:10AF200000F08486BAF1040F00F09885BAF1050F9D
+:10AF300000F0B785BAF1060F00F0C580BAF10D0F29
+:10AF400000F0C683BAF1110F40F0B380737F032B7A
+:10AF500040F0BC8096F82030033B132B00F2E480D5
+:10AF6000DFE813F02706E200E200E200E200E20080
+:10AF7000E200E200E200E200E200E200F405E200AA
+:10AF8000E200E200E200D505E200470695F8AA31AA
+:10AF90008A4243F0030385F8AA3112D1B5F8AA31E9
+:10AFA00095F8AC118548184001F007039B00C1F3E8
+:10AFB000021143EA4113013A034385F8A921A5F898
+:10AFC000AA3195F8AA2196F8213096F82010C2F3FC
+:10AFD0008200034001EA52119B0043EA411302F050
+:10AFE0000302134313F01C0F85F8AA3102D013F0AB
+:10AFF000E00F05D195F8AA3103F0030385F8AA31D3
+:10B0000095F8AB3143F0010385F8AB312368032297
+:10B010001A71002005B0BDE8F08F002B47D1002841
+:10B0200040D103231371002005B0BDE8F08F1C321E
+:10B03000BAF1190F4AD801A353F82AF0C1B700009A
+:10B040009BB8000099B6000059B9000053BA00003F
+:10B0500099BA0000D7BA000007B90000B5B70000E0
+:10B06000EFB3000053B30000EDBA000057B7000083
+:10B07000D1B60000B1B6000067B6000045B50000CB
+:10B080004DAF000021B300002FB20000C5B1000099
+:10B09000C5B10000BFB2000045B20000C3B400005B
+:10B0A00059B400003D2385F82F312268B9E7002804
+:10B0B000B9D03D2385F82F312368032200201A716F
+:10B0C00005B0BDE8F08F737F012B5ED03C48F9F7E7
+:10B0D000A7FD002800F00486022302794371D5F809
+:10B0E000B03180F808A042F0030207210271C1715B
+:10B0F00003B395F8522191071CD495F8AB21D207E0
+:10B1000018D4D5F8BC21934204BF1A68C5F8BC21F5
+:10B11000D5F8B4219AB91A68026018600368C5E9C5
+:10B120006D00002B00F0728503230020337105B001
+:10B13000BDE8F08FD5F8B421002A00F07085D5F86D
+:10B14000B8311A6802601860C5F8B8010368E8E70A
+:10B15000002900F09982BAF1020F00F09D82BAF145
+:10B160000B0F00F0B885BAF1030F00F0FA83BAF1C3
+:10B17000060F7FF4E3AE737F012BA7D10021284691
+:10B18000FFF7D8F900287FF445AF95F8523123F046
+:10B19000030385F8523195F852315E0706D52268CF
+:10B1A0006FF382030D2185F8523111710023A5F848
+:10B1B000CC3018462EE700BF6C1C002003FBFFFFBD
+:10B1C000F8390020737F092B80D1BAF1140F00F0F9
+:10B1D0008D8595F8981195F89921B5F85E30019311
+:10B1E0008A42B5F85C30B5F86280B5F8609000919D
+:10B1F000029301F04A8195F89A21002102F007029A
+:10B20000022A00F08B8596F81FA0BAF1150F3FF4C3
+:10B210000AAF0846C949F9F71DFD95F89A3103F0C0
+:10B220000703042B7FF4FFAE6FF00F00F2E6737F8D
+:10B23000012B7FF44BAF00230322A5F8CC30184636
+:10B240003271E7E695F93D30002BFFF63FAF737F93
+:10B25000032B7FF43BAF95F8A92195F8A8319A42CA
+:10B260003FF462AF95F8AA1101F00303022B7FF4BB
+:10B270005BAF96F8213096F82020C1F3820003409E
+:10B280009B0043F0030302EA511243EA421313F016
+:10B290001C0F85F8AA3102D013F0E00F05D195F804
+:10B2A000AA3103F0030385F8AA3195F8AB310022E7
+:10B2B00043F0010385F8AB31A5F8CC2034E7737F68
+:10B2C000032B7FF403AF95F93D30002BC0F2E885E6
+:10B2D00095F8A92195F8A8118A4207D095F8AA31C6
+:10B2E00003F00303013B022B41F2178095F8E8308D
+:10B2F00095F8E9001B1A03F00303022B00F0928774
+:10B3000095F8700195F8713198423FF43FAE311DC8
+:10B3100028462A23162205B0BDE8F04FFFF7B8B83B
+:10B32000747F012C7FF4D2AE8448F9F779FC014692
+:10B33000002800F0D5840379447143F003031322FD
+:10B3400028460B71CA71FFF757F9032333710020A8
+:10B3500060E695F93D30002BBFF6B8AE747F012C46
+:10B360007FF4B4AE7548F9F75BFC0346002800F0A3
+:10B37000B78495F8522195F87E1022F005026FF3FC
+:10B38000C30185F87E1042F00502017985F852214B
+:10B390004471D5F8B02141F003010B201971D87127
+:10B3A000002A00F08C8495F85211880700F18784F8
+:10B3B00095F8AB11C90700F18284D5F8BC118A4217
+:10B3C00004BF1168C5F8BC11D5F8B411002901F00B
+:10B3D0002C81D5F8B821116819601360C5F8B8310F
+:10B3E0001A68002A7FF4A0AEC5F8C0319CE6737FCE
+:10B3F000092B7FF46BAE96F8223096F8210096F870
+:10B4000020204F491B0443EA00231343D5F81C01B5
+:10B4100095F8DC200B430340C3F31003C5F81C313F
+:10B4200096F8223096F8214096F820001B0443EA53
+:10B43000042303430B43C3F3100395F81811C5F815
+:10B44000203142F00102002385F8DC2085F8191133
+:10B45000A5F8CC301846DDE595F93D30002BFFF618
+:10B4600035AE777F032F7FF431AE95F8641095F8F1
+:10B47000653096F820200B4303F0070313423FF496
+:10B48000D2AD95F8E83095F8E9209B1A03F0030354
+:10B49000022B3FF4C8AD05F1ED0002F013FB95F867
+:10B4A000E92095F8EC30023A022185F8E92085F888
+:10B4B000EA10226843F0010385F8EC300020177190
+:10B4C000A8E595F93D30002BBFF600AE737F052B44
+:10B4D0007FF4FCAD96F8201096F8213041EA030085
+:10B4E00010F0070040F0A58695F8A81195F8A9314D
+:10B4F0008B423FF419AE95F8AA3103F00303022BF7
+:10B500007FF412AE95F8642095F8AB3185F8A91157
+:10B5100060F30003114662F3061185F8AB3113F0B6
+:10B520000403A5F8CC0085F86410C2F3020240F0D1
+:10B53000B78722680321184611716BE5F83900209E
+:10B54000D030FEFF95F93D30002BFFF6BFAD737F85
+:10B55000182B7FF4BBAD95F8702195F871319A42A4
+:10B560003FF4E2AD95F8723103F00703042B7FF44A
+:10B57000DBAD378C052FBAB240F2C986708CB0F5BE
+:10B58000486F83B200F2C3869A4200F2C086B18C43
+:10B59000B1F5FA7F1FFA81FC80F0B986F28CA2F136
+:10B5A0000A0E1FFA8EFE40F67649CE451FFA82F843
+:10B5B00000F2AD860CFB033CBCEB880F80F0A78645
+:10B5C00096F828E07345C0F0A2860023A5F87A21FA
+:10B5D00085F87CE1A5F87471A5F87601A5F87811D5
+:10B5E000A5F8CC3096F82A1096F8293095F87221F3
+:10B5F00043EA0123A5F87E3196F82C1096F82B30FB
+:10B6000043EA0123A5F8803196F82E1096F82D30E4
+:10B6100043EA0123A5F8823196F8301096F82F30CE
+:10B6200043EA0123A5F8843196F8321096F83130B8
+:10B6300043EA0123A5F8863196F8341096F83330A2
+:10B6400043EA0123A5F8883196F8353096F836009C
+:10B650002668012143EA002361F30202A5F88A313A
+:10B6600085F8722160E5737F182B7FF42FADB94FF9
+:10B670003B68002B00F0F5829D4200F0F282311D04
+:10B68000284620230F2246E6BAF1070F00F03B813F
+:10B69000BAF1020F7FF46BAD737F022B7FF416AD0E
+:10B6A00096F8203085F82F31032333710020B1E460
+:10B6B00095F93D30002BFFF609AD737F092B7FF420
+:10B6C00005AD311D284605B0BDE8F04FFFF71CB8A9
+:10B6D000737F022B7FF4FAAC95F8E83095F8E920F7
+:10B6E0009A4204D095F8EA20032A00F01B8695F8C8
+:10B6F000A80195F8A931834200F0608596F82020D2
+:10B7000086F82120232A12D095F8643095F8AB11E1
+:10B7100085F8A901C3F3020060F306136FF300017B
+:10B72000002085F8643085F8AB11A5F8CC0095F8B9
+:10B73000AB3159077FF5F8AC10233277337195F8A8
+:10B740006430C3F30203737795F86530C3F30203E3
+:10B75000B37700205EE4747F062C7FF4B7AC95F8D5
+:10B760002631DF0740F1148413F002037FF4DCACD0
+:10B7700095F82421A5F8CC3085F8252196F82030BD
+:10B7800085F8273196F8221096F8212095F8263171
+:10B7900042EA0122A5F8282196F8232096F82410E1
+:10B7A00043F0020342EA0122A5F82A2185F8263156
+:10B7B00000202FE495F93D30002BFFF67EAF85E4A5
+:10B7C00095F93D30002BBFF681AC737F0C2B7FF4D5
+:10B7D0007DACB6F82900EB8EC31A1B0400F1B085CE
+:10B7E00095F8E83095F8E9209B1A03F00303022B43
+:10B7F00000F0D085574B1A68002A00F0438696F86F
+:10B80000203085F81431B6F8211095F8063140F251
+:10B81000E24202FB01F2C5F8102196F8241096F8D6
+:10B82000232042EA0122A5F8082196F8261096F86E
+:10B83000252042EA0122A5F80A2196F8271095F85A
+:10B84000052196F82860A5F8EC0023F00703D5F849
+:10B85000000143F00403013A41EA062185F805217D
+:10B8600085F80631A5F80C11786023681F602368FD
+:10B87000C5F800310023236095F8702195F87131E7
+:10B8800093423FF493AC95F8723103F00703042B15
+:10B890007FF48CAC85F8712188E495F93D30002B5C
+:10B8A000BFF614AC737F082B7FF410ACB6F82540BC
+:10B8B000EB8EE31A180400F1438595F8E83095F80B
+:10B8C000E9209B1A03F00303022B00F06385052295
+:10B8D00006F1200105F1ED0009F0DEF895F8EC2005
+:10B8E00095F8E930A5F8F24002206FF30002023B20
+:10B8F000032185F8EA0085F8EC2085F8E93000207E
+:10B900003171FFF787BB737F022B7FF4DFAB95F8B4
+:10B91000711195F8703196F82020994202D00F2AC3
+:10B9200000F05C8395F8983195F89911994202D00E
+:10B93000142A00F0338495F8A81195F8A9318B42A8
+:10B9400002D0162A00F00485122A04BF03233371A3
+:10B950002CE400BFEC38002095F93D30002BBFF6F9
+:10B96000B5AB737F172B7FF4B1ABDF48F9F758F90C
+:10B970000746002800F0B48103790D2243F0030349
+:10B980004FF0040800F108040371427180F8078049
+:10B990000C21204603F03CFB2146082205F1F6006D
+:10B9A00009F07AF8424607F1100105F19C0009F010
+:10B9B00073F8D5F8B031002B00F0568295F852217B
+:10B9C000910700F1518295F8AB21D20700F14C822A
+:10B9D000D5F8BC21934204BF1A68C5F8BC21D5F83C
+:10B9E000B421002A00F01A86D5F8B8311A683A60F6
+:10B9F0001F60C5F8B8713B68002B00F0CF8495F844
+:10BA0000EC2095F8E9300221023B61F301020321A9
+:10BA100085F8E93085F8EC2085F8EA10082206F16F
+:10BA20002A0105F1EE0009F037F8042206F132018F
+:10BA300005F1980009F030F895F85231B5F8CA20B0
+:10BA4000A5F8CC2043F0010385F852310020FFF720
+:10BA5000E1BA95F93D30002BFFF638AB737F0D2B23
+:10BA60007FF434AB082206F1200105F1F60009F05D
+:10BA700013F806F12801042205F19C0009F00CF8E6
+:10BA800095F85231226843F00103032185F85231C1
+:10BA900000201171FFF7BEBA95F93D30002BFFF67B
+:10BAA00015AB95F8E82095F8E9309A423FF40EABD3
+:10BAB00095F8EA30032B7FF409AB727F012A7FF4FB
+:10BAC00005AB95F8EC206FF3010285F8EC2000201F
+:10BAD0003371FFF79FBA737F012B7FF4F7AA95F9B3
+:10BAE0003D30002BFFF64AABFFF74FBB737F012BB6
+:10BAF0007FF4ECAA95F93D30002B80F29B8095F8FD
+:10BB00007E306FF3041385F87E30FFF70DBB95F898
+:10BB1000982195F8993193423FF406AB002309210F
+:10BB200085F89921A5F8CC307177B5F85E20B5F885
+:10BB30005C70B5F86240B5F8601032841522184682
+:10BB4000B7847484F184F277FFF764BA95F87121B1
+:10BB500095F870319A423FF4E7AA95F93D1096F8AE
+:10BB600021200029C0F251851A2A00F0838595F81A
+:10BB7000722102F00701042900F0328513077FF5D6
+:10BB8000D3AA96F8213033770C223271EB8DB5F8B9
+:10BB9000C620298EF38303FB02F27D2303FB02F30D
+:10BBA00031844FF47A720020B3FBF2F37384FFF711
+:10BBB00031BA95F8E83095F8E9209A423FF4B4AAF2
+:10BBC00095F8EA20032A7FF4AFAA95F8522185F868
+:10BBD000E93022F00302002385F85221A5F8CC3089
+:10BBE00096F8212086F820200D221846F277FFF7DC
+:10BBF00011BA95F8A80195F8A93183423FF494AAA7
+:10BC000096F82120232A7FF47FAD90E5C5F8C00186
+:10BC1000FFF78ABABAF1020F7FF488A93CE5036006
+:10BC2000C5E96C00C5F8B801FFF77BBA537F012B5B
+:10BC30007FF44CAA2C48F8F7F3FF034600284FD0B6
+:10BC400095F8520195F87E20197940F0010085F8A9
+:10BC5000520122F01802012085F87E205871FFF76A
+:10BC600098BB95F93DC095F8710195F87021009049
+:10BC7000BCF1000FC0F20381824209D095F8722115
+:10BC800012F0070200F09482043A012A40F29082F6
+:10BC900095F8E82095F8E900121A02F00302022A4A
+:10BCA00000F0EA8395F8A80195F8A921904200F0E8
+:10BCB0000984311D28462A230F22FFF72CBBD5F813
+:10BCC000B41100297FF485AB1A60C5E96C33C5F85F
+:10BCD000B831FFF785BB537F012B7FF4F7A90EE73F
+:10BCE0006FF03600FFF796B9F8390020DD48F8F715
+:10BCF00097FF01460028F3D095F8980195F899210F
+:10BD0000B5F85E3001939042B5F85C30B5F86280CA
+:10BD1000B5F860900090029340F0E384328C1A2AC8
+:10BD200040F27E82B5F8D600824228BF0246B6F8BD
+:10BD300024C095F8DC00019BBCF11B0F34BF9E466C
+:10BD40004FF01B0EC00740F16782D5F81C010305B8
+:10BD500040F19E83B5F8D800B0F5296F28BF4FF4A5
+:10BD60002960B0F5A47F38BF4FF4A4704FF4296C5C
+:10BD7000B6F822B0F38C0393BBF5A47FC0F00C821D
+:10BD800095F864A0834528BF83461AF0040F0AF093
+:10BD9000070040F06E8300F1280A4FEACA0A4010FB
+:10BDA0002AFA00F0584538BF584680B2039BB3F5D5
+:10BDB000A47FC0F0EF81BCF5A47F95F865A038BFE3
+:10BDC0004FF4A47C634528BF63461AF0040F9B46DA
+:10BDD0000AF0070C40F04A830CF1280A4FEACA0A1D
+:10BDE0004FEA6C0C2AFA0CFCDC4538BFDC461FFA23
+:10BDF0008CFC019B9E4500F0D582009BA5F89CE140
+:10BE0000013B85F89931A5F89E2195F89A31A5F85E
+:10BE1000A0C1A5F8A201002900F0ED82052666F375
+:10BE2000020385F89A31D5F800317B6023681F60E2
+:10BE30002368C5F800310023236000293FF4F3A8EC
+:10BE40000B798A8143F0030315220924C881A1F8E4
+:10BE500008E02846A1F80AC00B714C71CA71FEF7C0
+:10BE6000CBFB0020FFF7D6B8D5F8B421002A7FF429
+:10BE7000BBAD3B60C5E96C77C5F8B871BBE500990F
+:10BE80008A4200F0F38095F87221900700F0EE806E
+:10BE9000754841F2A561F7F719FE0020FFF7BAB81F
+:10BEA0007048F8F7BDFE024600283FF419AF95F838
+:10BEB000AA1195F8A9E195F8A87195F8AC3102207E
+:10BEC00060F30101774585F8AA11C3F3020403F07A
+:10BED000070CC3F3021013D1C9B26CF3840195F8B7
+:10BEE000ABC1B5F8CA30A5F8CC30013F60F34711BB
+:10BEF0006FF3820C85F8A97185F8AA1185F8ABC19A
+:10BF000095F8AA1196F8213096F82070C1F3820CAA
+:10BF100003EA0C0307EA51179B0001F0030143EA0F
+:10BF200047130B43032185F8AA3113795171D5F8D2
+:10BF3000B011147243F00303172450721371D471BB
+:10BF4000002900F01C8195F852319C0700F11781FF
+:10BF500095F8AB31D80700F11281D5F8BC31994280
+:10BF600004BF0B68C5F8BC31D5F8B431002B00F024
+:10BF7000F883D5F8B831196811601A60C5F8B8218E
+:10BF80001368002B7FF4D0A8C5F8C021FFF7CCB808
+:10BF90003448F8F745FE014600283FF4A1AE95F875
+:10BFA0002621037942F0010285F8262143F003039C
+:10BFB0000C22447103710B244FF0FF336FF00E001D
+:10BFC000CA7105224872CB720B730C728A722846B2
+:10BFD000FEF712FB03233371FFF7D0BB95F87221F4
+:10BFE00095F93D1042F01002002985F87221C0F247
+:10BFF0000C8295F8043195F80521934206D01A4831
+:10C0000041F22971F7F762FD95F8052195F8720163
+:10C01000B5F87631A5F80831052363F3020095F8E9
+:10C020000611B5F87861531EC0F3C00285F80531DA
+:10C030009200012385F814311A4321F007031A43B3
+:10C040002168B5F87A4185F8720185F8062100204B
+:10C050000322C5F81001A5F80A61A5F80C410A7180
+:10C06000FEF7D8BFF8390020685E0100B6F82080DE
+:10C07000B8F1050F1FFA88F27BD9B6F822E0BEF5B9
+:10C08000486F1FFA8EF174D88A4272D8B6F824C06D
+:10C09000BCF5FA7F1FFA8CFA6BD2F08CA0F10A097A
+:10C0A0001FFA89F940F6764BD94582B261D80AFB6E
+:10C0B0000119B9EB820F5CD296F828B0594558D3D4
+:10C0C000A5F878C1A5F87481A5F876E1A5F87A01FC
+:10C0D00085F87CB196F82AE096F82900B5F82EC0CC
+:10C0E00040EA0E20A5F87E0196F82CE096F82B0089
+:10C0F00040EA0E20A5F8800196F82EE096F82D0073
+:10C1000040EA0E20A5F8820196F830E096F82F005C
+:10C1100040EA0E20A5F8840196F832E096F8310046
+:10C1200040EA0E20A5F8860196F8330096F834E030
+:10C1300040EA0E20A5F8880196F8350096F836609A
+:10C14000614540EA0620A5F88A0100F0F48295F8DE
+:10C150007221032161F3020285F87221009A013AEB
+:10C1600085F87121002B7EF45EAF3D601846FEF726
+:10C1700051BF311D28461E230F22FFF7CCB8D5F83A
+:10C18000B431002B7FF4F5AE1160C5E96C22C5F81F
+:10C19000B821F5E6C4462CE6484607E695F89A210C
+:10C1A00085F8993142F0080385F89A31FEF7FEBF11
+:10C1B000311D284623230F22FFF7ADB895F87121D2
+:10C1C00095F870319A423FF4A2AC96F8203086F888
+:10C1D000213095F93D20002AC0F234821A2B00F05C
+:10C1E000498295F8722102F00703042B7FF4C6AC54
+:10C1F000B24F3B689D4206D0B14841F2B201F7F719
+:10C2000065FC95F8722195F8703185F8713100233D
+:10C210003B60A5F8CC30B1E44FF4A4708446A7E5A8
+:10C22000029A84E595F8EA30032B7FF470A8FFF7B3
+:10C2300067B8708CEA8E821A120400F1818095F83A
+:10C24000E82095F8E9C0A2EB0C0202F00302022AF2
+:10C2500000F0A08095F8A8C195F8A921624519D0F1
+:10C2600095F8AA2102F00302022A13D195F8AB2116
+:10C2700095F8EC6085F8A9C16FF30002C2F3800C59
+:10C280006CF341064FF0000C85F8AB2185F8EC60AB
+:10C29000A5F8CCC095F8EC20A5F8EE009B0003F0C3
+:10C2A0001C0343EA411302F002021343D5F80021B4
+:10C2B00085F8EC307A6023681F602368C5F8003188
+:10C2C00000232360FDF78CF80446002800F0B481B9
+:10C2D0002368D5F800215A6095F8E92095F8EC30EC
+:10C2E000C5F80041023A062113F01C0F85F8E92039
+:10C2F00085F8EA103EF497AE95F86420C3F3820304
+:10C3000063F3061285F864200020FEF783BE311D1A
+:10C3100028461E231022FEF7FEBF311D2846232388
+:10C32000FEF7F8BF95F8522185F8E93022F00302B4
+:10C33000002385F85221A5F8CC301846FEF76ABED6
+:10C3400003233371282385F82F310020FEF762BEC6
+:10C3500095F8AB3195F8642085F8A91123F009030D
+:10C36000114643F0080362F306115F0785F8AB310D
+:10C3700085F86410C2F3020273D5216800231020EF
+:10C3800008717277337795F86530C3F30203B3779A
+:10C39000FEF70CBF032333712A23D4E7C5F8C0711D
+:10C3A000FFF72DBB009B85F89931029B00279A422D
+:10C3B000A5F8CC7000F05381A5F862C0002900F008
+:10C3C000498195F89A41009BA5F89CE10327013B20
+:10C3D00067F3020485F89931A5F89E21A5F8A0C15C
+:10C3E000A5F8A20185F89A41A6F820E0B284A6F843
+:10C3F00022C0F08421E5042666F30203A5F85C2040
+:10C40000A5F8600085F89A310DE52C4F3A68954201
+:10C4100006D02B4841F24171F7F758FB95F870317F
+:10C4200095F8722185F8713100233B6012F0080302
+:10C4300022683FF47FA80C211A2311713377EB8D0A
+:10C44000B5F8C620298EF38303FB02F27D2303FB9C
+:10C4500002F331844FF47A72B3FBF2F37384FEF784
+:10C46000A5BE236803221A71FEF7A0BE4FF4296C03
+:10C47000BAE44FF4296095E495F8EA20032A7FF4A2
+:10C4800018AC0FE41D60FFF7BAB90021FEF7BDBE7E
+:10C4900010F4807F4FF4A4700ED04FF0A80C67E426
+:10C4A0002368102119713077727795F86530C3F3DE
+:10C4B0000203B377FEF7AEBD844659E4EC380020A2
+:10C4C000685E0100B6F82080B8F1050F1FFA88F009
+:10C4D0007FF64FAEB6F822E0BEF5486F1FFA8EF237
+:10C4E0003FF647AE90423FF644AEB6F824C01FFA7E
+:10C4F0008CF0BCF5FA7FCDE90100BFF43AAEF08CC8
+:10C50000ADF80C00A0F10A091FFA89F940F6764A45
+:10C51000D1451FFA80FB3FF62CAE019800FB0229A3
+:10C52000B9EB8B0FBFF425AE96F828A05245FFF467
+:10C5300020AEBDF80C00A5F878C1A5F87481A5F867
+:10C5400076E1A5F87A0185F87CA196F82AE096F8BC
+:10C550002900B5F82EC040EA0E20A5F87E0196F815
+:10C560002CE096F82B0040EA0E20A5F8800196F802
+:10C570002EE096F82D0040EA0E20A5F8820196F8EC
+:10C5800030E096F82F0040EA0E20A5F8840196F8D6
+:10C5900032E096F8310040EA0E20A5F8860196F8C0
+:10C5A000330096F834E040EA0E20A5F8880196F8AA
+:10C5B000350096F83660624540EA0620A5F88A0103
+:10C5C00000F097808E0795F872217FF5C2AD216843
+:10C5D000022060F30202032085F872210871BDE594
+:10C5E000634F39688D4208D0624841F2B201F7F7D3
+:10C5F0006DFA95F8703195F8722185F87131002344
+:10C600003B60A5F8CC30FFF7B9BA232A3FF4AFAAB4
+:10C61000D5F89421C5F8E420FFF7A9BA1A683A6062
+:10C620001F60C5E96D77FFF7E6B9116819601360FF
+:10C63000C5E96D33FEF7D4BE4E4841F26A31F7F7D3
+:10C6400045FA45E6232B3FF4CCADD5F89431C5F837
+:10C65000E430C6E5A5F85C20A5F86000C4E64845CE
+:10C660007FF4AAAEC4457FF4A7AE236803241C71EF
+:10C67000FFF7E3BB95F8043195F80521934206D006
+:10C680003C4841F29701F7F721FA95F8052195F812
+:10C690007211B5F87631A5F80831052363F302016C
+:10C6A00095F8060185F87211C1F3C0039B0020F0D4
+:10C6B000070043F001030343013A012485F80521F3
+:10C6C0000020B5F8782185F80631B5F87A3185F87B
+:10C6D0001441C5F81001A5F80A21A5F80C31FEF7A0
+:10C6E00023BD95F89A2112F0060F3FF417ABFEF721
+:10C6F00085BD2A8E029882427FF464AF40F2E24206
+:10C7000002FB0CF042F21072B5F8C66002FB0B029D
+:10C71000013AB2FBF0F292B296427FF453AFB5F811
+:10C72000722102F0F00242F00102A5F872212268A3
+:10C730000321117112E5288E50457FF408AD40F2B7
+:10C74000E24000FB01F142F2107000FB0212B5F86A
+:10C75000C600013AB2FBF1F292B290427FF4F7AC1C
+:10C76000DDE70B6813600A60C5E96D2208E400BFCD
+:10C77000EC380020685E01002DE9F8433D4F3E4E45
+:10C78000FA7804463D1D2EE042464FF4E4713046EF
+:10C79000F8F778FA828D9045034632D1D9F8041023
+:10C7A0000A79487902F00302022A35D0002834D1F0
+:10C7B000D3F8BC2100200860002A45D0D3F8C0215E
+:10C7C00002B11160C3F8C011FA78BB7879789A4247
+:10C7D00005D00133DBB2994208BF0023BB70013C96
+:10C7E00014F0FF0439D0BB783978934235D013FB6D
+:10C7F00001F315EB030930D035F80380B8F10F0FC2
+:10C80000C2D9D9F804100B796FF301030B714FF6FD
+:10C81000FF70FCF7FDFDD7E708B393F9AC010028E2
+:10C82000C6DA93F8AC01012A6FF3C71083F8AC01A4
+:10C83000BED10A79022060F301020A71D3F8BC214B
+:10C8400000200860002AB9D1D3F8B021C3F8BC1188
+:10C85000002AB3D1C3F8B011B4E7BDE8F88393F868
+:10C86000AC2142F08002404683F8AC21FCF7D0FDB9
+:10C87000AAE700BFB80400206C1C0020324B2DE951
+:10C88000F0471A68D0F8004180F84C11824204BF8A
+:10C8900000221A60828DA0F836210B2382B0064652
+:10C8A00000F11C0980F8343144B103252068214689
+:10C8B00044680D71FCF766FD002CF7D1D6F8B01175
+:10C8C00031B3DFF89080DFF888A006F16C0707E04D
+:10C8D000294620463A46F8F707FAD6F8B011B9B11A
+:10C8E0003046FDF7FBFB05464046F8F799F904464C
+:10C8F0000028EDD14FF4DB615046F7F7E7F8294601
+:10C9000020463A46F8F7F0F9D6F8B0110029E7D1F9
+:10C9100096F82C200D4BCDF800900532D2B20121B3
+:10C920000020F9F763FE30F0020304D0084840F21B
+:10C93000C561F7F7CBF84FF6FF73FF20B38502B060
+:10C94000BDE8F047FFF718BFEC380020C9A300008E
+:10C95000685E0100FC4100202DE9F041C669B28B00
+:10C960004FF6FF739A428AB052D090F82730F4689D
+:10C97000012B054600F02081022B43D0002B00F054
+:10C98000FC8094F82F11002940F0A580B6F824808F
+:10C99000AB8C099108F101070891BFB2DBB396F99E
+:10C9A0002D30002BC0F2188195F826300022A4F813
+:10C9B000C420A3BBB4F8C85025B9B4F8C650A4F835
+:10C9C000C8507DB3BD4240F21281ED1BABB2062BC5
+:10C9D0004FF00005A4F8C830B58440F2F38096F912
+:10C9E0002D30AB421EDAB8F1000F40F0EB80D4F8E6
+:10C9F000E0506B0815F0010518BF43F00043C4F880
+:10CA0000E0300FE03D2184F82F112046FFF736FF7C
+:10CA10000AB0BDE8F08195F82630002B75D00025CE
+:10CA2000A4F8C850B4F8CC302BB1BB4240F2E4803B
+:10CA3000DB1BA4F8CC30B4F8D4302BB1BB4240F2AD
+:10CA40008A80DB1BA4F8D430B4F8D02094F8E83006
+:10CA500094F8E91052B1BA4269D8B4F8CC20002059
+:10CA6000A4F8D00012B9994200F0D4805B1A03F008
+:10CA70000303022B63D094F8042194F805319A4201
+:10CA800000F0A2800022B284DDE908430DB94245DE
+:10CA90005BD0013291B20BB9002C44D0327F6E4F83
+:10CAA000F6680696002005320391CDE90100D2B266
+:10CAB0000495009405970121F9F748FD30F0020331
+:10CAC000A6D0FCF7F5FC8642A2D0644840F2D241E1
+:10CAD000F6F7FCFF9CE796F92D30002B95DB94F8D8
+:10CAE000DC3013F0020290D13D298ED0B6F82480BC
+:10CAF000A98C099208F101070892BFB200298AD0D7
+:10CB000043F0020384F8DC304EE7B4F8C430002B65
+:10CB10003FF450AFBB4240F28480DB1BB4F8C850F6
+:10CB2000A4F8C4304DE700296BD02346B6E75B1A62
+:10CB300003F00303D71B022BA4F8D0709BD194F809
+:10CB4000EA30013B012B96D89CE713B9002C3FF447
+:10CB50005FAF2946A2E7FCF743FC0146002855D009
+:10CB60000023B28BA4F8D4300E23C2800371006876
+:10CB7000FCF708FCFCF710FC66E796F86E30190726
+:10CB800004D494F85231DA077FF5FBAE338CB4F855
+:10CB9000D220991D8A42C4BFD31A063BB4F8CE10E6
+:10CBA000CCBF9BB21346994210D0A4F8CE30A4F863
+:10CBB000D030A4F8D420E4E60023A4F8D430A4F8BC
+:10CBC000D030DEE601252DE7B28C5DE7B4F8D41055
+:10CBD00000297FF4D6AEEAE708AA09A92846F5F7A6
+:10CBE000D3FED4F8B0310BB30023B384DCE6204687
+:10CBF0000821FFF743FE0BE720462221FFF73EFE08
+:10CC000006E7002D3FF404AF234647E70123A4F8CD
+:10CC1000D43019E78B1E052284F8E93084F8EA2025
+:10CC200029E720463E21FFF729FEF1E6FF20FFF726
+:10CC3000A3FDD4F8B021002AD6D1D6E91601F8F721
+:10CC40005BF80028D0D196F83030DB077FF5ACAE2A
+:10CC5000338CB384A8E600BF65A40000685E0100C1
+:10CC6000D0F8B031002B00F0DE8001392DE9F0471B
+:10CC7000DFF8B481DFF8B4910446CDB24FF0010A79
+:10CC800012E04046F7F7CCFF0746002866D0314651
+:10CC9000384604F16C02F8F727F8D4F8B031013DBA
+:10CCA000EDB2002B00F0818094F8AB21D10703D4C2
+:10CCB00094F8522192075ED5D4F8B421934274D1EE
+:10CCC000FF2D72D0D4F8B0112046FDF707FA037992
+:10CCD00003F00303032B0646D3D1C379033B142B84
+:10CCE000CFD801A252F823F045CD000045CD000079
+:10CCF00083CC000083CC000083CC000083CC0000F8
+:10CD000083CC000045CD00003DCD000083CC000069
+:10CD100083CC000083CC000083CC000083CC0000D7
+:10CD200083CC000083CC000083CC000083CC0000C7
+:10CD300083CC000069CD000069CD000094F93D303E
+:10CD4000002B9EDA94F8523143F0020384F85231FA
+:10CD50004046F7F765FF0746002898D140F24E514C
+:10CD60004846F6F7B3FE92E794F8AB3143F001037F
+:10CD700084F8AB3185E71A7902F00302032A9FD1C8
+:10CD8000DA79032A01D00A2A9AD194F8E91094F8A2
+:10CD9000E8208A420BD094F8EA20032A90D01A683F
+:10CDA0001AB1D4F8B4118A422CD0BDE8F08794F8B7
+:10CDB000190194F818118842F1D194F8250194F8DA
+:10CDC00024118842EBD194F8710194F870118842D3
+:10CDD000E5D194F8990194F898118842DFD194F83C
+:10CDE000A90194F8A8118842D9D194F8EC30023AFC
+:10CDF0006AF3010384F8E920032284F8EC3084F814
+:10CE0000EA205DE7D4F8B811D4F8C001C4F8B02125
+:10CE10000A681A600B60C4F8BC3100287FF450AF78
+:10CE2000C4F8C0314CE77047FC410020685E010047
+:10CE30000149F7F70FBF00BFFC410020014BD87834
+:10CE4000704700BF74020020F0B40B4B9C78DE7872
+:10CE50001F78B4420DD0043314FB07F405461819AB
+:10CE600005D02E701C5B43680C8013601868F0BC02
+:10CE700070470020FBE700BF7402002030B4094B6C
+:10CE80009C781D7884420BD0043314FB05F41819E8
+:10CE900004D01C5B43680C801360186830BC70477A
+:10CEA0000020FBE77402002010B40A4B9978DA786E
+:10CEB00018785C788A420AD04A1CD2B201FB003151
+:10CEC000944208BF002248689A7010BC7047002046
+:10CED000FBE700BF7402002070B50F4AD678557882
+:10CEE0009478731CDBB29D4208BF00239C420AD099
+:10CEF000154615F8044B14FB06F42E1903D02853DD
+:10CF0000D370716070BD054840F28C51F6F7DEFDBC
+:10CF100000231B80FFDE00BF74020020685E01005A
+:10CF2000F0B5537983B0144605460F465BB32379B9
+:10CF300003F00302032A16D04FF6FF7295420AD17E
+:10CF40006FF301032371002621462846FCF760FA9F
+:10CF5000304603B0F0BDB8482A464FF4E471F7F705
+:10CF600091FE0646F0E74FF6FF739D4211D1002671
+:10CF70003868844235D00028E6D0B04840F2AE513F
+:10CF8000F6F7A4FDE0E7AD4840F29B51F6F79EFDB1
+:10CF9000CDE7A9482A464FF4E471F7F773FEE37929
+:10CFA000023B0646162B18D8DFE813F01501F900EE
+:10CFB000460017001700170017001700E8005A0076
+:10CFC000170050001700170017004D00170017003A
+:10CFD000CF00A7001F002600D7003868A042CAD1A2
+:10CFE00020469749F7F736FEB2E790F8AA310222B9
+:10CFF00062F3010380F8AA3196F93D30002B14DA70
+:10D00000904996F8642096F8AA3103C942EA93033E
+:10D010000DF1080C0CE9030003F00703634413F857
+:10D02000083C63F3061286F8642096F8AB316FF380
+:10D03000000386F8AB319BE796F8523143F00203C8
+:10D0400086F8523194E7237A032B91D196F8523126
+:10D05000002223F0030386F85231A6F8CC2087E79C
+:10D0600090F93D30002BE7DB2379032243F00303E3
+:10D070001721E27108222371617100F25511A01885
+:10D0800007F00AFD96F85331237496F8543163740F
+:10D090000C2104F1120001F0BBFFD6F8B031002BD7
+:10D0A00000F0A38096F85221910700F19E8096F837
+:10D0B000AB21D20700F19980D6F8BC21934204BF7E
+:10D0C0001A68C6F8BC21D6F8B421002A00F0AC805A
+:10D0D000D6F8B8311A6822601C60C6F8B8412368D7
+:10D0E0003A68002B7ED0002A7FF432AF534840F2DA
+:10D0F000A751F6F7EBFC002073E790F8981190F831
+:10D1000099318B423FF434AF90F89A2102F0070333
+:10D11000032B05D0033303F00703012B3FF65DAF6C
+:10D12000B6F89E31A6F85C3002F00703B6F8A2010B
+:10D13000A6F86000052B71D0B6F8A431002B5FD1A2
+:10D1400086F89911A6F8CC3012E790F89A310222AD
+:10D1500062F3020380F89A310AE790F8EC3090F815
+:10D16000641090F8AB21C3F3820363F306116FF3ED
+:10D17000000280F8641080F8AB21F9E690F8523193
+:10D18000B0F8CA20A0F8CC2023F0060390F8502174
+:10D1900080F8512143F0060380F85231E8E6082276
+:10D1A00004F11201EE3007F077FC042204F11A01B9
+:10D1B00006F1980007F070FC96F85231B6F8CA10E4
+:10D1C00096F85021A6F8CC1043F0020386F85231AD
+:10D1D00086F85121CCE6217A132908BF1621FFF7E2
+:10D1E0004DFBC5E6C6F8C0417DE7D6F8B421002A5C
+:10D1F0007FF46EAF2360C6E96C44C6F8B8416FE7B0
+:10D20000002161F30202A6F89E31B6F8A63186F835
+:10D210009A21A6F8A411A6F8A231A9E6042363F383
+:10D22000020286F89A21A3E61A6822601C6023682D
+:10D23000C6E96D4454E700BF6C1C0020685E010025
+:10D24000F8390020A85E010090F8E93090F8E82055
+:10D25000934203BF013380F8E83000200C20704770
+:10D2600090F84810B0F84430C1F30212022A10D0EE
+:10D27000042A12D0DB080A3B9BB290F86220B0F877
+:10D280004000D20644BF043B9BB2984228BF1846D8
+:10D2900070479B080B3B9BB2EFE709074BBFA3F519
+:10D2A0001473A3F5D7739B111B11023B9BB2E4E7E8
+:10D2B000014B00221A607047EC38002000B970471B
+:10D2C00002484FF4F071F6F701BC00BFB45E0100F4
+:10D2D0002DE9F04105468846184629461C46174662
+:10D2E000F3F792FC50BB237C0133DBB22374FBB118
+:10D2F000134E144B3560002204F11C0C1146012022
+:10D300009E60C6F804803781C6F80CC0F7F760FD50
+:10D3100040B9FF20FFF730FA2046FF21BDE8F04179
+:10D32000FFF79EBC08484FF4CE71F6F7CFFBF0E74D
+:10D3300005484FF4C871F6F7C9FBD9E7BDE8F0819D
+:10D34000504400202C050020B45E0100012800D0CC
+:10D35000704710B50C46FCF7ABF8844206D0BDE828
+:10D36000104003484FF4EC71F6F7B0BB10BD00BF9E
+:10D37000B45E010070B50E461546FDF731FA00287F
+:10D3800040D004465EB990F8E82090F8E9309A421F
+:10D3900003D090F8EA30032B26D00C2070BD90F813
+:10D3A000520110F0040012D194F8E82094F8E9300A
+:10D3B0009A42F2D094F8EA30032BEED194F8EC3094
+:10D3C00084F8ED6060F3010384F8EC3070BD94F8EC
+:10D3D0002C2194F82D319342DFD1013384F82C3184
+:10D3E00084F82E61002070BD2946102200F25D10E5
+:10D3F00007F052FBB4F8EC3003F0FC033046A4F81D
+:10D40000EC3070BD022070BD704700BF00B970479E
+:10D41000024840F21731F6F759BB00BFF85E010031
+:10D420002DE9F04105468846184629461C46174610
+:10D43000F3F7EAFB88BB237C0133DBB2237433B3FD
+:10D440000120FFF799F901212046FFF709FC144E4E
+:10D45000144B3560002204F11C0C114601209E6023
+:10D46000C6F804803781C6F80CC0F7F7B1FC40B9A4
+:10D47000FF20FFF781F92046FF21BDE8F041FFF7CB
+:10D48000EFBB094840F20331F6F720FBF0E706480E
+:10D4900040F2F121F6F71AFBD2E7BDE8F08100BFB8
+:10D4A000684400203C050020F85E01002DE9F04FA3
+:10D4B00089B080460393BDF8503002930020BDF838
+:10D4C00054309DF84CA0BDF8587004938946164618
+:10D4D000FCF7D0FD002800F09881D0F824B0054674
+:10D4E000BBF1000F2ED0304600F0BAFD95F8333076
+:10D4F000FF226FF3000385F8333085F83420AEB196
+:10D50000AAF10203012B40F2538195F848306AF3E7
+:10D51000420385F8483001F035FF002840F054817F
+:10D520002846F3F7ADFA09B0BDE8F08F01F0A8FB8B
+:10D530000028E5D003981299324600F05DFF85F887
+:10D540003400DDE7FBF706FF0590002800F06A8154
+:10D55000FDF72AF90446002800F0668142464B4652
+:10D56000594605F11C000096F3F762FA95F832303F
+:10D57000039A129962F3451385F83230062205F1B9
+:10D580003B0007F089FA2F86C5F828B004F1240083
+:10D59000F7F72CFD04F11C08002840F03A81032124
+:10D5A00004F1280001F028FD029BA06F049AE38596
+:10D5B0004FF6FF732286A385002800F02F8104F127
+:10D5C0006C0204F16801F7F781FBB4F864309F49FD
+:10D5D00094F87E209E4820660B4043F4887343F005
+:10D5E00001034FF0000922F007024FF01B11A4F8CD
+:10D5F00064307F2384F87E20E16584F8C130C4F86C
+:10D600007890A4F87C90A4F83290C4F8349004F197
+:10D61000380000F057FA94F83D3060F3050384F8C1
+:10D620003D3001210DF11F0001F0E6FC9DF81FE0E7
+:10D63000884B208E94F83DC084F83F90A3FB0E23C6
+:10D64000DB0803EB4303AEEB830E029B824AA4F894
+:10D65000C89040F2E24101FB03F10EF1050E4B1EB2
+:10D6600084F83EE042F2107E0EFB0733DFF8F8E16B
+:10D67000B3FBF1F30A448E44B2FBF1F2A4F8C630D6
+:10D68000BEFBF1F193B200F1060E0CF03F0CA4F8D2
+:10D69000CA1073454FF00601A4F8CC90A4F8D490BA
+:10D6A000A4F8D090A4F8D23084F83DC0A4F8C410F7
+:10D6B00002DD181A063883B20598A4F8CE3094F823
+:10D6C000523194F8DCE094F8261194F87E2094F816
+:10D6D00072C1C4F8300194F89A014FF0000923F0A8
+:10D6E00007032EF0030E21F0030169F3041C22F05E
+:10D6F000180269F3C30084F85231584B84F8DCE017
+:10D7000084F8261184F872C184F87E20C4F81C3194
+:10D71000A4F8E89084F8EA90C4F80091A4F8049181
+:10D72000A4F81891C4F82091A4F8249184F82F91BA
+:10D73000A4F85091A4F87091A4F89891A4F8A49139
+:10D7400084F89A01FDF78EFBA4F8D600FDF790FB54
+:10D75000D4F8A821424BA4F8D8001340C4F8A8314B
+:10D76000FDF78CFB94F8AC3160F3020384F8AC3124
+:10D77000FDF78AFB94F8AC21C4F8C091030103F0D3
+:10D78000700322F07802134384F8AC31C4E96E9937
+:10D79000C4E96C99C5F8248094F82030C4F8189036
+:10D7A00069F30003C4F81490E46184F820309AE629
+:10D7B000002000F0F3FC95F8333043F001030AF049
+:10D7C000010A85F83330A0E66C6AE36D23B1254881
+:10D7D00040F22131F6F77AF904F1500104F14C00DE
+:10D7E000F7F778FA064650B32768E665D7F8304170
+:10D7F000FCB12046FBF7B4FD3846FCF7DBFF002305
+:10D8000003206B6209B0BDE8F08F0C2009B0BDE8C1
+:10D81000F08F14489721F6F759F9C0E604F170002B
+:10D82000A067CCE607207EE60598FBF799FD072068
+:10D8300079E60C4840F22A31F6F748F9D9E7094869
+:10D8400040F22331F6F742F9CEE700BF80F8FFFF40
+:10D8500048014801ABAAAAAA7FC3C901FF49010038
+:10D860000000FFF6F85E0100FF5962022DE9F04169
+:10D87000074682B00020FCF7EFFB20B3466A04465F
+:10D880000EB301460020FCF715FB0546B8B9366813
+:10D89000D6F8303106F59878D3B11846FBF760FD1D
+:10D8A0001C340A214FF6FF720223C6F8384186F86D
+:10D8B0003411A6F8362186F84C31C7F80080284686
+:10D8C00002B0BDE8F0810C25284602B0BDE8F08129
+:10D8D0000348019340F29111F6F7F8F8019BDCE759
+:10D8E000F85E01002DE9F041074600F0F7F80F253A
+:10D8F0004FF002084FF6FF762846FCF771FF04460A
+:10D90000D0B190F93D30002B16DBFFF79DFC0346AC
+:10D910000522394604F1ED009BB907F0BDF894F8F3
+:10D92000EC2094F8E83084F8EA8042F001020133F8
+:10D9300084F8EC2084F8E830013DADB2B542DBD18B
+:10D9400000231846BDE8F0812DE9F84388461646C5
+:10D9500099460746FCF744FF002863D090F8502111
+:10D9600090F851319A4204463DD190F8E82090F861
+:10D97000E9309A4203D090F8EA30032B33D0FCF719
+:10D9800043FF054678B34946102204F25D1007F0C4
+:10D9900083F894F87E3013F0180327D0182B1FD18A
+:10D9A0004146082204F2551007F076F8337884F8DF
+:10D9B0005331737884F854312B79012143F00303F8
+:10D9C0000A222B716971EA7138462946FCF728FF53
+:10D9D00030B994F85031013384F85031BDE8F88300
+:10D9E0002846FCF717FF0C20BDE8F8832B790322AB
+:10D9F00043F00303EA711720082241462B71687136
+:10DA0000A81807F049F833782B7473786B740821E1
+:10DA100005F1120001F0F0FA042105F11A0001F0FD
+:10DA2000EBFAD1E70220BDE8F88300BF0860704739
+:10DA3000C3680268996810B40C68488AE16810BC31
+:10DA40001033F5F719BB00BF10B50446D0F8F42029
+:10DA5000C16800F58873C08DF5F70EFBD4F810315E
+:10DA60000549D4F8F020A1FB03139B0AC3F3072157
+:10DA70001370517010BD00BF5917B7D100B590F9A0
+:10DA80003D30002B85B0BCBFD0F8E430C0F89431F5
+:10DA90004FF00002D0F88C31039201934FF0060250
+:10DAA0000DF10B038DF80B200093B8BF00F5CA727F
+:10DAB000B0F87631A8BF03AA0021F5F7E9F805B060
+:10DAC0005DF804FB08B50349052206F0E5FF024BAB
+:10DAD000187808BD4C0500201106002010B5064C32
+:10DAE00001460522204606F0D7FF20460521F7F71C
+:10DAF00065FA024B187010BD4C050020110600207D
+:10DB000070B4054600781B4C02FB01110A1884FB17
+:10DB100002011144491101EBC10401EB8401511AC6
+:10DB2000C8B2C20828709C5C9DF80C5001F0070137
+:10DB30000C4114F001041BD1B0FBF5F205FB1202FD
+:10DB4000D2B25D1E1E1D04F1080115F8013F2046EA
+:10DB5000CCB213F0010F00F101014FEA530302D0E0
+:10DB600032B1013AD2B2C8B28442F2D1B542EAD15E
+:10DB700070BC7047A7C867DDF0B52F4F2F4E80EA05
+:10DB800001050324280AEDB200EB802005EB852572
+:10DB900006EA401E07EA400C07EA450006EA45157A
+:10DBA0004CEA0E0C284300EB00250CEB0C2E00EB8E
+:10DBB00005200CEB0E2C4FEA1C4CC0F3074040EA4A
+:10DBC0000C2000EB0010013C084414F0FF0485B267
+:10DBD000D8D11B486940A0FB01500D1A00EB55003D
+:10DBE000400900EBC00500EB8500081AC0F3C4052E
+:10DBF00000F00706555D3541ED07C0B21AD401FBB0
+:10DC000003F3561EC3F30743043204F1080516F864
+:10DC1000011F2046ECB211F0010F00F101054FEA9F
+:10DC2000510102D033B1013BDBB2E8B2A042F2D1E4
+:10DC3000B242EAD1F0BD00BF1021020040840800CA
+:10DC40004D91CFBA2DE9F843884615460AB1FF2316
+:10DC50001370174E00F0010706F10209002404E0DA
+:10DC6000BA4214D00134082C0ED016F83430D9073B
+:10DC7000C3F34002F4D4002DF4D02B78FF2B08BF5F
+:10DC80002C700134082CF0D1FF20BDE8F883062267
+:10DC9000414609EBC40006F0EFFE30B1002DE1D0A3
+:10DCA00016F83430DB07DDD4E7E7E0B2EDE700BF7C
+:10DCB000A84600202DE9F84F214F224DDFF888902B
+:10DCC000DFF888A0A7F10208A5F1020B00241BF8D9
+:10DCD0003430012613F0010F384606FA04F62946BF
+:10DCE00007F106074FF0060222D099F8003063B121
+:10DCF00015F8013C072B03EB830C06D81AF83C30CF
+:10DD000013F0040F01D0DB0612D51BF8343098F85D
+:10DD100001E098F800C0C3F34003A3404EEA0303B8
+:10DD20004CEA060688F8013088F8006006F0B4FE78
+:10DD30000134082C05F10805C9D1BDE8F88F00BFF2
+:10DD4000EA460020AA460020AC4E002030450020C4
+:10DD50002DE9F041DFF86080164D08F10107AE1C97
+:10DD6000002402E00134082C21D004EB8403D90004
+:10DD700018F83330DA07F5D56A7895F800C0C3F3A0
+:10DD800080134FF0010E0EFA04FEA34004EB440092
+:10DD900013434CEA0E0C394406EB400006220134D2
+:10DDA0006B7085F800C006F077FE082CDDD1BDE869
+:10DDB000F08100BF704600203045002008B50020EB
+:10DDC000FCF764F9B0FA80F0400908BD08207047FC
+:10DDD00010B50020FBF772FF00BBFCF76FF910F0E5
+:10DDE00001001BD10E4A0F4C02EBC0035B78072BDE
+:10DDF00003EB830105D814F831306FF3451304F8B1
+:10DE0000313012F830306FF3000302F83030013057
+:10DE10000828E9D1044B0020187010BD0C2010BD5B
+:10DE2000A846002030450020AD4E002038B50446FD
+:10DE30000020FBF743FF78B9FCF740F910F001052B
+:10DE40000AD12078FF2809D0611C2A46FFF7FAFE84
+:10DE5000072807D9022038BD0C2038BD0D4B1D7096
+:10DE6000284638BD0C4A02EBC0035B78072B08D864
+:10DE70000A4903EB830311F8334065F3451401F8B5
+:10DE8000334012F830306FF3000302F830300020D6
+:10DE900038BD00BFAD4E0020A84600203045002010
+:10DEA00007282DE9F04104460D46904617D8114E3B
+:10DEB00004EB8403A70016F83330DB0714D527449E
+:10DEC000282116F83730C3F3801301FB04612B704F
+:10DED00040460131BDE8F041062206F0DDBD0648AE
+:10DEE000E921F5F7F3FDE2E70348EA21F5F7EEFD56
+:10DEF000E5E700BF30450020805F01000820704743
+:10DF0000F8B50020FBF7CEFE08B10C20F8BD0446A2
+:10DF1000FFF754FF0028F8D01A4B1B4993F8502004
+:10DF200093F800C093F8287093F8786093F8A050A5
+:10DF300093F8C8000C7064F3000293F8F01083F8B3
+:10DF4000502093F8182164F3000064F3000C64F38C
+:10DF5000000764F3000664F3000564F3000164F352
+:10DF6000000283F8C80083F800C083F8287083F8A3
+:10DF7000786083F8A05083F8F01083F818212046C9
+:10DF8000F8BD00BF30450020AB4E002038B5054637
+:10DF90000020FBF787FE08B10C2038BD0446FFF7D0
+:10DFA0000DFF0028F8D03DB1012D01D0122038BD61
+:10DFB000034B1D70204638BD014B1D70284638BDEF
+:10DFC000AC4E0020034A4FF47A7303FB00F3136056
+:10DFD000704700BFA4460020B0B10D4B1A6810B5C1
+:10DFE0004FF4004340F2E7300021E3FB02014FF41D
+:10DFF0007A720023F2F784F8BDE8104002460B461F
+:10E000000448054905F0CABE034807F048BB00BFF5
+:10E01000A4460020480A0020180900200D4A08B52F
+:10E020000023138070B90C4B0C4A1B780020108021
+:10E0300003B908BDFCF72AF80028FAD1BDE808406A
+:10E04000FFF786BE1846FCF739F8C307EBD4FFF795
+:10E0500031FEE8E7E8460020AC4E00207046002084
+:10E060000E4A08B500231380C2070ED40C4B0D4A8C
+:10E070001B780020108003B908BDFBF713FE0028B1
+:10E08000FAD1BDE80840FFF763BE1846FBF716FE5D
+:10E090000028EBD1FFF70EFEE8E700BFE8460020BE
+:10E0A000AC4E0020704600202DE9F84390F82A700D
+:10E0B000072F06460C4601F1020545D8DFF8D88047
+:10E0C00007EB87034FEA870918F83330190729D57A
+:10E0D0009A0759D5227809EB070308EBC30342F0EE
+:10E0E0004002596A22702846062206F0D5FC2378A1
+:10E0F00003F00F03012B25D1B94404F1080018F8EF
+:10E1000039305B0733D496F8D6302278C3F3C00396
+:10E1100063F3C712227006F1D7010622BDE8F84367
+:10E1200006F0BABC90F8D6002378C0F3400060F344
+:10E13000861323702946F8F703FB237803F00F03B7
+:10E14000012BD9D0BDE8F88390F8D6000B78C0F346
+:10E15000400060F3861323702946F8F7F1FA23781C
+:10E1600003F00F03012BEDD104F10800CBE7237876
+:10E17000282143F0800301FB078123701E31BDE895
+:10E18000F843062206F088BC02484FF41371F5F7F5
+:10E190009DFC9FE7805F0100304500202DE9F04F96
+:10E1A000824687B007F0D4FA4B014201B2EB000877
+:10E1B00043EAD06363EB01039B004FEA880243EA22
+:10E1C000987312EB000843EB0101C90041EA587152
+:10E1D0004FEAC8034FEAD338CE0B48EA41480196CC
+:10E1E000BAF1000F17D16E4BD3E900014C1C08BFE8
+:10E1F000B0F1FF3F0FD06B4B1A68B8EB000466EB31
+:10E2000001050023944275EB0303ACBF4FF00109F5
+:10E210004FF0000901E04FF00109634EDFF894B1BF
+:10E220003346A6F1240700244E46994604EB8403A6
+:10E23000A50017F83330DA0713D50EB9980710D4B4
+:10E240002B1917F83330590734D42B1917F83330FA
+:10E250001A0717D4254417F8353043F0020307F89E
+:10E2600035300134082C09F12809DFD126B14C4B97
+:10E27000019AC3F800805A60BAF1000F37D107B095
+:10E28000BDE8F08F02A9A9F11D0006F085FC002869
+:10E290007BD1464A04EB440302EB430302A9184630
+:10E2A0000622C9F80010009306F0F6FB009BC9F89F
+:10E2B0000030CFE73E4B19F80D2C03EB02120F3262
+:10E2C0000DF107030DF1170012F8011903F8011FF2
+:10E2D0008342F9D1A9F1060102A806F05DFC0028ED
+:10E2E000B3D040F216215846F5F7F0FBADE7002019
+:10E2F000FBF7CAFC04460028C1D090F8D6305B0773
+:10E30000BDD590F82A30072BB9D890F82C5090F84A
+:10E310002B1005EB8502C5EBC20202F111031C3084
+:10E320008D4200EB0306CFB207D084F82C70BFF308
+:10E330004F8F94F82B108F4230D00135EDB2022D63
+:10E3400029D02721022211FB052204F12B01C35CF5
+:10E35000885CC3F34017C3F3030343EA471320F079
+:10E360003F0003438F188B5420463946FFF79CFE2D
+:10E37000727807F10800063A06F1080106F08CFBF6
+:10E3800073787B7084F82C5079E740F2232158464B
+:10E39000F5F79CFB7DE702220025D6E70232D4E7A1
+:10E3A00010090020A4460020544500207844002095
+:10E3B000B0440020805F010010B50120FFF7EEFEA1
+:10E3C0000A4B1A6840F2E7304FF400430021E3FBA8
+:10E3D00002014FF47A720023F1F792FEBDE810407B
+:10E3E00002460B460248034905F0D8BCA44600206B
+:10E3F000480A0020180900202DE9F84F8B461646E0
+:10E400000AB1FF231370DFF8648000F0010908F1FE
+:10E41000010A002404E04A4519D00134082C12D026
+:10E4200004EB8405E80018F83530D907C3F38012EF
+:10E43000E7B2F0D4002EF0D033780134FF2B08BFC0
+:10E440003770082CECD1FF273846BDE8F88F5044D0
+:10E450000622594606F010FB0028F5D0002EDCD02D
+:10E4600018F83530DB07D8D4E6E700BF3045002088
+:10E470002DE9F041054682B00020FBF71FFC002883
+:10E4800040D1FBF71BFE10F001043BD12878FF2898
+:10E490003CD005F1010841460DF10702FFF7D2FB20
+:10E4A00007282BD99DF80760072E36D81E4F2A78EB
+:10E4B00017F8363007EBC60062F3410341460622E7
+:10E4C000023007F8363006F0E7FA2878224641464F
+:10E4D000FFF792FF072822D8144900EB800407EBCE
+:10E4E000C60211F83430507043F0200301F8343084
+:10E4F00017F8363043F0010307F83630002002B039
+:10E50000BDE8F0810C2002B0BDE8F081084B01228B
+:10E5100020461A7002B0BDE8F0810720F3E707EB50
+:10E52000C603FF225A70E3E7A846002030450020CA
+:10E53000AD4E00202DE9F04F064685B000200D4677
+:10E540001446FBF7AFFB18B10C2005B0BDE8F08F07
+:10E55000FFF734FC0028F7D0B1460DF10F0219F88F
+:10E56000010B4946FFF748FF072840F286809DF8D7
+:10E570000F80B8F1070F79D808EB8803474FDB000D
+:10E58000581C08EB880A062249463844019306F0D5
+:10E5900083FA317817F83A204FEACA0B61F38612F2
+:10E5A0002846102107F80B20F6F784FB17F80B20FC
+:10E5B000102160F38202204607F80B20F6F77AFB61
+:10E5C00017F80B20019B00F0010060F3C30212F06A
+:10E5D000040F07F80B2007EBCA0A4FEA880B1AD082
+:10E5E000DFF8C4E0DFF8C4C09EF800102C4A0CF835
+:10E5F00001808AF8171002EB011C01318EF800101F
+:10E600000CF1FF3C05F10F02691E12F801590CF8DC
+:10E61000015F8A42F9D190BB03F118000622002164
+:10E62000384406F064FA0BEB0803DC0017F83330CB
+:10E6300023F012033B55494630780022FFF702FBD6
+:10E64000072815D83B5D174A43F0200302EBC000B2
+:10E650003B5580F80180D844002017F8383043F04B
+:10E66000010307F8383005B0BDE8F08F07206CE7EC
+:10E670003B5D6FF345133B55EDE7122065E7D81D71
+:10E68000214610223844019306F006FA0BEB0802EB
+:10E6900007EBC2020021019B5162BDE7304500201B
+:10E6A000B0440020A8460020AB4E0020A844002023
+:10E6B0002DE9F04F054683B00020FBF7F3FA18B1BF
+:10E6C0000C2003B0BDE8F08F0446FFF777FB00286D
+:10E6D000F6D02F46224617F8010B3946FFF78CFE7D
+:10E6E0000728064603D9022003B0BDE8F08FDFF803
+:10E6F000BC8000EB800308EBC30118F833305B07E4
+:10E700004FEA80092ED5DFF8A8A09AF80020013A38
+:10E7100012F0FF0B23D0CB7D5B4521D02048019325
+:10E7200000EB0B11102200EB031006F0B5F9019B72
+:10E7300004EB840208EBC20118F8322012F0010F3A
+:10E74000E0B204F1010404D0520702D5CA7D5A4553
+:10E750001FD0082CECD19AF80020013A00E05A466C
+:10E760008AF80020287839460022FFF76BFA07283C
+:10E7700004D80C4B03EBC000FF2343704E44002031
+:10E7800018F836306FF3000308F8363003B0BDE8F0
+:10E79000F08F054C9AF80020E054CB75013ADFE782
+:10E7A000B0440020A8460020A844002030450020A6
+:10E7B000AB4E002038B51C465B7903F0C003402BFC
+:10E7C00000D038BD19B10022FFF716FE0246072A15
+:10E7D000F7D8094B02EB820113F83110C907F0D5C5
+:10E7E0001821282010FB0210184421460622BDE8FB
+:10E7F000384006F051B900BF3045002038B5034617
+:10E800000D4613F8010B00221946FFF7F5FD072806
+:10E8100001D9022038BD094C2823182213FB0020FF
+:10E82000044420460621F6F745FA0028F1D0214697
+:10E830002846062206F030F9002038BD3045002079
+:10E8400010B503460C4613F8010B00221946FFF7DA
+:10E85000D3FD072801D9022010BD064B00EB800034
+:10E8600003EBC0030622596A204606F015F9002082
+:10E8700010BD00BF3045002070B5054600200E4693
+:10E88000FBF710FA08B10C2070BD0446FFF796FAAA
+:10E890000028F8D02946224611F8010BFFF7ACFDFD
+:10E8A00007281AD876B1012E0AD100EB80030C4953
+:10E8B00011F8332042F0100201F83320204670BDD9
+:10E8C000122070BD064B00EB800013F8302066F379
+:10E8D000041203F83020304670BD022070BD00BF26
+:10E8E00030450020314A3249F0B40023314C1370D6
+:10E8F00004EBC3025278072A02EB820505D811F80F
+:10E9000035206FF3451201F8352014F833206FF3EA
+:10E91000000204F833200133082BE9D10F7891F875
+:10E92000285091F8504091F8782091F8A060002389
+:10E9300063F300070F70204F63F3000563F30004D7
+:10E9400063F300023B7081F828501C4F91F8C850C7
+:10E9500081F8504081F8782091F8F04091F8182122
+:10E960003B7063F3000663F3000563F3000463F395
+:10E97000000281F8A060124B124E134F81F8C8506C
+:10E9800081F8F0404FF0FF354FF0FF34C3E9004508
+:10E9900081F81821376020B1F0BC0C490C4806F012
+:10E9A00076BEF0BC0A4806F07ABE00BFAD4E00202D
+:10E9B00030450020A8460020AC4E0020AB4E002081
+:10E9C00010090020A4460020A0BB0D00B9E3000000
+:10E9D00018090020072807D8044B00EB800013F823
+:10E9E0003000C0F3C0007047002070473045002061
+:10E9F00007280DD800EB8000064911F830301A07BF
+:10EA00004FEAC00004D59B0702D50844406A70470E
+:10EA10000020704730450020024B1B7803700248ED
+:10EA2000704700BFAB4E0020B044002038B50C4604
+:10EA300050B107291AD81A4D15F83430DA071FD506
+:10EA400005EBC404607838BD072922D8154B04EBC8
+:10EA5000840213F83230DB0701D5204638BD124856
+:10EA60004FF42F71F5F732F8204638BD0C4D0E48A3
+:10EA700040F2B621F5F72AF815F83430DA07DFD47A
+:10EA800005EBC404084840F2B721F5F71FF8607899
+:10EA9000D9E7054840F2BA21F5F718F8D6E700BFE4
+:10EAA000A846002030450020805F010010B5144BBF
+:10EAB0001B78834204460CD9124B1C5D072C11D8DD
+:10EAC000114B04EB840213F83230DB0710D52046DB
+:10EAD00010BD0E4840F2C621F4F7F8FF094B1C5D4B
+:10EAE000072CEDD909484FF43271F4F7EFFFE7E74F
+:10EAF000064840F2C921F4F7E9FF204610BD00BFE7
+:10EB0000AB4E0020A844002030450020805F01006B
+:10EB100007281BD870B500EB80030D4E16F8333074
+:10EB2000DB0704464FEA800505D52C4416F834006F
+:10EB3000C0F3401070BD2C4406484FF43571F4F713
+:10EB4000C5FF16F83400C0F3401070BD00207047B8
+:10EB500030450020805F0100034A044B00280CBFB1
+:10EB600010461846704700BF70460020E846002057
+:10EB7000104B1B789BB1072970B50C460DD860B9B6
+:10EB80000D4E01EB81038D0016F83330DA070BD5FB
+:10EB90002C4416F83400430703D4012070BD012033
+:10EBA0007047C0F3001070BD04484FF43F71F4F794
+:10EBB0008DFFEDE7AC4E002030450020805F010066
+:10EBC0001C4B1B78FBB11378FF2B1CD12DE9F047B0
+:10EBD000194D06460023AF1F03EB83045FFA83FE43
+:10EBE00017F8344014F001004FEA830C03D0C4F34B
+:10EBF0008014B44209D00133082B05F12805EBD16C
+:10EC00000120BDE8F08701207047AC1F01F1FF38FB
+:10EC100014F801AF18F8019FCA45ECD1AC42F7D106
+:10EC2000634482F800E017F833305A07E9D5C3F39C
+:10EC30000010E6E7AC4E00203645002030B40E4B05
+:10EC40001C7874B1072A0CD80C4C02EB820514F81E
+:10EC500035502B0705D520B14B7903F0C003402B6D
+:10EC600002D0002030BC7047282000FB0240073053
+:10EC700030BC05F07EBF00BFAC4E00203045002008
+:10EC8000024B1878003818BF01207047AC4E0020A6
+:10EC9000684620F007018D4601B502F011FBF5F73B
+:10ECA000F7FBF5F7B9FDBDE801408546704700BFA9
+:10ECB00008B5094BD3F840213AB90120F6F7DCF842
+:10ECC000BDE808400220F6F7D7B80020C3F840019D
+:10ECD000F7F7B2FBF1E700BF00B000400020F6F705
+:10ECE000CBB800BF02F030BC012800D87047024802
+:10ECF0004FF41B71F4F7EABEC45F0100012800D88D
+:10ED00007047024840F27721F4F7E0BEC45F01008B
+:10ED100030B500228BB00B68124C13490892CDE934
+:10ED20000322CDE90122069207940591D3E900540C
+:10ED30009968A5422CBFC1EB0501C1EB0401034654
+:10ED4000009110461146F7F7E5FB022801D80BB0F9
+:10ED500030BD064840F295210BB0BDE83040F4F7D5
+:10ED6000B5BE00BFFDEC00006DEF0000C45F010008
+:10ED70002DE9F04385B004464FF0FF0C0DF10F0074
+:10ED8000DDF830809DF834908DF80FC00D461646A2
+:10ED90001F46FAF777FC18B91EE0FAF773FCD8B1F2
+:10EDA00090F820309B070DF10F00F6D1254B9A68A3
+:10EDB000AAB9B9F1000F2ED0012201920097334673
+:10EDC000294620464246FAF717FCD8B96FF04304AB
+:10EDD000204605B0BDE8F0831A4B9A68DAB1CDE958
+:10EDE00000793346294620464246FAF705FC48B9E1
+:10EDF000B9F1000FEAD1D8F80C10D8F80000FFF7ED
+:10EE000087FFE3E7104840F21121F4F75FFEB9F104
+:10EE1000000FDBD1EFE7D8F80C201A60C3E90145F9
+:10EE20004046B0470022094B009204461146104666
+:10EE3000F7F7DCFB0228CBD9034840F24B21F4F76B
+:10EE400045FEC5E720470020C45F0100E9EC000053
+:10EE5000F0B5444E8BB0FAF707FCB368FF228DF88B
+:10EE60000E209BB133688BB10DF10E00FAF70AFC4E
+:10EE7000044658B194F8203013F003050DF10E004C
+:10EE800006D0FAF7FFFB04460028F3D10BB0F0BD23
+:10EE900005ABD6E90027E169E068009304ABB84709
+:10EEA0000746002852D0B36831682846984717F1C2
+:10EEB0000B0F12D0483709D02B4840F2DF21F4F76E
+:10EEC00005FE03E090F820309B0739D00DF10E00CD
+:10EED000FAF7D8FB0028F5D1D8E7FF230DF10F0092
+:10EEE0008DF80F30FAF7CEFB08BB3268059B009314
+:10EEF00009920123002201933260D6E90101049BAB
+:10EF000006AAFAF779FB0028E0D0174840F2DD2185
+:10EF1000F4F7DCFDDAE743F0020380F82030836980
+:10EF200098470DF10F00FAF7ADFB0028DDD090F8FF
+:10EF300020309A07F5D4C26831689142F1D1EAE7EE
+:10EF4000C1680068FFF7E4FE0BB0F0BD94F8203014
+:10EF5000A269E16843F0020384F82030204690471C
+:10EF6000B4E700BF20470020C45F0100002208B5BD
+:10EF70001146064B0120F5F72BFF00B908BDBDE88F
+:10EF80000840034840F2A321F4F7A0BD5405002037
+:10EF9000C45F010010B5154804F052F9144B186015
+:10EFA00000B3144B00249C6000F0DCF9002818DB4F
+:10EFB000224621460120F5F753FA224621460B202E
+:10EFC000F5F74EFA224621461820F5F749FA0120B6
+:10EFD000F5F714FA0B20F5F711FA1820F5F70EFAE9
+:10EFE000204610BD6FF0120010BD00BF0C60010084
+:10EFF0001C47002020470020044A10B40346106834
+:10F0000084688AB21946236810BC18471C47002040
+:10F01000084B1B689A6810B4546834B18AB2A4468D
+:10F02000014610BC1846002360476FF0220010BC58
+:10F03000704700BF1C470020FFF7EABF0020704761
+:10F0400010B582B0049C009400240194FFF790FE58
+:10F0500002B010BD10B582B0009090F82040C36996
+:10F06000026904F00104D0E905010194FFF780FE74
+:10F0700008B1443001D102B010BD0348E42102B010
+:10F08000BDE81040F4F722BDC45F010030B504466E
+:10F0900083B0002835D0224B1A6882422BD0FF2340
+:10F0A0000DF107008DF80730FAF7ECFA034640B986
+:10F0B0001FE094420ED00DF10700FAF7E3FA034681
+:10F0C000B8B193F820209207F5D4DA6818461146B3
+:10F0D000002CEED193F820209D6942F0020283F8C3
+:10F0E0002020A8470DF10700FAF7CCFA03460028C4
+:10F0F000E7D103B030BD9B686BB121460020984733
+:10F10000CDE7074A9368002BC9D011680029C6D003
+:10F1100000209847C3E70348EE21F4F7D7FCBEE789
+:10F1200020470020C45F01000020704710B504464E
+:10F13000FAF79AFA3CB1E0B120681030FAF7D0FA49
+:10F1400080B1002010BD114CA368C3B1206800231A
+:10F15000A36023600028F1D000681030FAF7C0FAED
+:10F160000028EED10A484FF49E71F4F7AFFC00205E
+:10F1700010BD074840F21F11F4F7A8FCDCE7044873
+:10F180004FF49271F4F7A2FCE0E700BF20470020A3
+:10F19000C45F0100024B9868B0FA80F040097047E4
+:10F1A000204700206FF04700704700BFD0E90023E0
+:10F1B000002A04DB9A4238BF1A461046704780681E
+:10F1C000984238BF1846704710B51446F7F7B2FAA0
+:10F1D0002146F7F7B1FA0330030204D4092894BF9B
+:10F1E0000020012010BD002010BD00BF262810B552
+:10F1F00004461CD0272812D0252808D00A281ED95A
+:10F20000272821D80330400002F0EAF802E002206B
+:10F2100002F0E6F82046BDE8104002F0E7B85020C2
+:10F2200002F0DEF82046BDE8104002F0DFB81A20F8
+:10F2300002F0D6F82046BDE8104002F0D7B8023000
+:10F24000400002F0CDF8E5E702484FF4C371F4F74F
+:10F250003DFCDFE7C45F010002F036B902F040B9BF
+:10F2600008B502F071F9BDE8084002F03DBA00BFF0
+:10F2700008B502F069F902F037FABDE8084002F07B
+:10F28000E3B900BF08B502F05FF902F02DFA02F011
+:10F2900013FA02F065FCBDE8084002F0D5B900BFE2
+:10F2A00008B50146114802F01BF802F06DF950B1A3
+:10F2B00002F000FB00F0B2F800280CDBBDE80840CB
+:10F2C0000020FFF733BF02F027F902F0F3FA00F055
+:10F2D000A5F80028F2DA064840F2E911F4F7F6FB47
+:10F2E000BDE808400020FFF721BF00BFE5EC0000AB
+:10F2F000C45F010010B50446FFF7C4FF2046BDE817
+:10F300001040FFF7CDBF00BF01F1100004F0FCBBBF
+:10F3100030B504468BB00D460122002104A806F04A
+:10F3200035F900230E4A03932046032369460192D0
+:10F33000029305F00FF8002810DB4FF4004340F271
+:10F34000E7300021E3FB05014FF47A720023F0F768
+:10F35000D7FE02460B4604A804F0FCFB0BB030BD00
+:10F3600009F3000010B50120F4F73AFE0449012426
+:10F3700000238C60CB60BDE810404B6004F0EABF16
+:10F38000384700200C4B1A780AB10020704710B59E
+:10F3900001201870F4F724FE4FF4FA710446FFF7C9
+:10F3A000B7FF38B9204605F01EF802280CBF002030
+:10F3B0006FF0040010BD00BFAE4E002008B50A4B30
+:10F3C000BFF35B8F53E8002F511C43E80010002867
+:10F3D000F8D1BFF35B8F002A01DD002008BDF4F7F0
+:10F3E00007FE002008BD00BF3447002008B50020FC
+:10F3F000F4F7F6FDBFF35B8F074B53E8002F0132A4
+:10F4000043E800210029F8D1BFF35B8F0221BDE85A
+:10F410000840FFF77DBF00BF3447002008B50D4B03
+:10F420001A68002A12DDBFF35B8F53E8002F511ECC
+:10F4300043E800100028F8D1BFF35B8F012A01DDFB
+:10F44000002008BDF4F7EAFD002008BD6FF044007D
+:10F4500008BD00BF3447002010B50446FFF712FF77
+:10F4600002F020F92046BDE81040FFF719BF00BFA9
+:10F4700030B583B00446FFF7F3FE962002F044F95E
+:10F4800000231A461946184602F0B4F802F0A0F814
+:10F4900002F00EF802F064F8E8B91A48214601F0CB
+:10F4A0001FFFFFF7EDFB18BB02F060FA00210446D6
+:10F4B000084602F017F800210546084602F00EF84B
+:10F4C0002C44C334201A02F009FA02F041FA02F087
+:10F4D000ABF803B030BD0C4840F28111F4F7F6FAF6
+:10F4E0000848214601F0FCFEFFF7CAFB0028DBD0EC
+:10F4F0000DF10700FFF790FA01469DF8070002F0B2
+:10F50000F5FAD1E7F5F8000010600100037BC3F3C2
+:10F5100002132DE9F041002B044693FAA3F0B0FA50
+:10F5200080F008BF4FF0FF30451C53D0227B591E9E
+:10F530000B4063F30612227305F12400FFF756FE19
+:10F54000E27B217C8A42D3B23ED00133DBB2022B74
+:10F5500037D02725022215FB0325E373012704F189
+:10F560000F0808EB0506304601F0A8FF18F8053033
+:10F5700003F00F03022B3DD0204694F8601010F8E2
+:10F580005F2F9142D3B22ED00133DBB2022B3AD09F
+:10F590002722022112FB031284F85F30104402304C
+:10F5A0000622B11C05F078FA2146184801F098FEB1
+:10F5B000962002F0A9F8002002F00EF83046BDE8CF
+:10F5C000F0811D460023C8E72725022215FB0325ED
+:10F5D0000027C4E70E4840F27A21F4F777FA237B3C
+:10F5E000C3F30213A2E7002FDED0272303FB0100A1
+:10F5F0000230D4E70748214601F072FE02F006F817
+:10F600003046BDE8F0811A460023C5E771F40000DA
+:10F6100010600100E9F70000F0B5C5683C4B2C799B
+:10F6200083B014F00104019353D1064601F078FE33
+:10F63000204601F0C7FE2146204601F097FE2246F3
+:10F640002521082001F0FEFE01A801F0E1FE31496C
+:10F6500040F25B6001F0A2FF2B7BC3F3420262F336
+:10F6600006132B732846FFF751FFFFF709FB18BB62
+:10F670006B7B9B0744D12F6834683846FFF796FDB3
+:10F680000444726804F10901012002F049F802F013
+:10F690005FF92846FAF7EAFA811C2246C9B23846D1
+:10F6A000FFF792FDF8B11C48294601F019FE01F060
+:10F6B00033FF002003B0F0BD687B10F0030018BFDB
+:10F6C0000120FFF749FA4178821C007801F0CEFF53
+:10F6D000D1E7FFF7A3FE002814DB0020FFF726FD8B
+:10F6E000002003B0F0BD2846FFF71EFD0028E0D043
+:10F6F0000A4840F21B11F4F7E9F9002003B0F0BD0D
+:10F700000120DEE70548BE21F4F7E0F9E5E700BF98
+:10F71000D6BE898E5555550059F400001060010081
+:10F72000C36870B51E680446F7F704F8054630460E
+:10F73000FFF73CFD00232D1AC4E900532381204626
+:10F74000BDE87040FFF768BF824208B511D0127B58
+:10F75000D20702D46FF0470008BD104A1A60029A1F
+:10F7600000231360FFF72AFE00280FDB6FF00A006A
+:10F7700008BDD37B272101FB0322537C03F00F0339
+:10F78000012B14BF6FF04700002008BD044840F271
+:10F790004511F4F79BF96FF00A0008BD21F700004E
+:10F7A0001060010010B598B10C46FFF737FE002835
+:10F7B00004DB2046BDE81040FFF7B8BC084840F223
+:10F7C0006B11F4F783F92046BDE81040FFF7AEBC9B
+:10F7D000044801F085FDBDE8104001F09DBE00BF6A
+:10F7E0001060010059F4000010B50446FFF74AFD0F
+:10F7F000237B03F07102012A05D1C3F3420262F3B5
+:10F8000006132373DBB213F0700F06D101F04AFF29
+:10F810002046BDE81040FFF743BD2046FFF776FEC7
+:10F8200001F074FEBDE8104002F092B8002070476D
+:10F830000020704710B582B00446FFF7BFFD0028D6
+:10F8400012DB0C4A0C490D4800940023FFF7F8FB2B
+:10F8500008B1443001D102B010BD09486B2102B09B
+:10F86000BDE81040F4F732B905486821F4F72EF9E5
+:10F87000E7E700BF19F60000A5F7000049F7000010
+:10F88000106001002DE9F843457B9DF82080174664
+:10F89000EA0789461E460AD5B8F1000F17D099F835
+:10F8A0000030B7EBD31F19D00020BDE8F883044621
+:10F8B00011F8020B099AC0F38010FFF781F90028B4
+:10F8C000EDD1637BDB07EFD5B8F1000FE7D1099BE2
+:10F8D0001878FFF71DF90028E1D1E5E709F10801E3
+:10F8E0003046062205F0C8F8B0FA80F04009BDE8BD
+:10F8F000F88300BF2DE9F04F87B0044601F03AFECF
+:10F9000010F0FF0F0AD1FFF7BDFCB448214601F00B
+:10F91000E7FC01F001FE07B0BDE8F08F01F04AFE00
+:10F92000064601F0D1FE804601F0D8FE02F024F92F
+:10F93000074602F00FF9824601F08EFE8146FFF77E
+:10F94000A1FC16F0FF0FE0D017F0FF0740F0888011
+:10F95000FF208DF8170001F03BFEE57B064600789E
+:10F9600011234FF0270A0AFB053500F00F0204EBC4
+:10F97000050B032A5FFA88F80BF1020300F085807B
+:10F98000052AC2D17278222ABFD1625D02F00F022D
+:10F99000012A00F0B580627B910766D5B8F1000FAF
+:10F9A00000F0A480625D3078C2F38011B1EBD01F0B
+:10F9B000ABD102F00F02012A06F1080500F0CF805A
+:10F9C00029461846062205F057F8B0FA80F040099B
+:10F9D00000289AD0A368002B97D00420F9F7BEFD29
+:10F9E000002892D07E48214601F07AFC01F094FD77
+:10F9F00001F0B6FD002873D119F0FF0F6AD1237909
+:10FA000043F00102DB0722715ED4F9F7C5FD4FF622
+:10FA1000FF7305460A22C3803146027124221C303E
+:10FA200005F03AF8AC6001F03FFF286101F098FF63
+:10FA300000210446084601F051FD241A6C61002F94
+:10FA400040D09DF81730AB76F9F7A6FD2946E8605F
+:10FA50002868F9F7B9FDF9F7C7FD07B0BDE8F08FE1
+:10FA60005FFA8AF0FFF722F873E7C0F380100DF118
+:10FA70001702B11C0393FFF7A3F8039B002891D151
+:10FA8000627B92077FF541AF88E772780C2A7FF49A
+:10FA90003CAF625D02F00F0101293FF436AF0DF17A
+:10FAA00017010191CDF80080C2F380123146204643
+:10FAB0000393FFF7E7FE00285CD13078039B00F04A
+:10FAC0000F025DE7FF23BEE746484FF44471F3F7AA
+:10FAD000FDFF9AE701F0B2FDA36883F8A5008EE769
+:10FAE000404840F20231F3F7F1FF85E79DF8170037
+:10FAF0000393FFF70DF8039B00287FF453AF04E74F
+:10FB000006F10208C0F3801041460DF1170203937D
+:10FB1000FFF756F8039B00283FF4F7AE625D30789C
+:10FB2000C2F38011B1EBD01F7FF4EFAE02F00F02F1
+:10FB3000012A06F1080A47D051461846062204F069
+:10FB40009BFF00287FF4E1AE9DF81700FF2829D025
+:10FB5000A37BFF2B26D0C51A6842684138E70622EE
+:10FB600029461846039304F087FF00283FF432AF7C
+:10FB7000039B25E71948214601F0B2FB01F046FD41
+:10FB800094F85F000AFB0040613001F097FC01F03F
+:10FB9000E7FC00283FF4BFAE124840F2C521F3F75E
+:10FBA00095FFB8E63378625DC3F38013B3EBD21FE1
+:10FBB0007FF4ABAE41460BF10800062204F05CFF77
+:10FBC000B0FA80F0400903E7062251461846039335
+:10FBD00004F052FF0028B7D0039BADE7E9F700001F
+:10FBE00059F400001060010008B51946034801F0FF
+:10FBF00077FBBDE8084001F08FBC00BF2100010089
+:10FC0000F0B5C4686E4B25798DB015F001050B93E6
+:10FC100040F08880A37D65F30003A375064601F0DC
+:10FC20007FFB284601F0CEFB2946284601F09EFBCB
+:10FC30002A462521082001F005FC0120F9F78EFC59
+:10FC40000546002800F0B28005F11C0001F030FCF0
+:10FC50000BA801F0DDFB5B4940F25B6001F09EFC0C
+:10FC6000A07DC0F341002530FFF7C0FA2146564879
+:10FC700001F036FB962001F047FD00231A46194695
+:10FC8000184601F0B7FCFEF7FBFF002834D1A37D36
+:10FC900013F0180F79D1276835683846FFF786FAD0
+:10FCA0000544726805F10901002001F039FD01F0F9
+:10FCB0004FFE01F0B9FC2046FAF7C0F9011DC9B2A8
+:10FCC00038462A46FFF780FA0146002834D1A36A55
+:10FCD000002B40D1A3683BB13C4B01220221002004
+:10FCE0009E60F5F775F880BB2046FFF71DFA0028E7
+:10FCF00054D100200DB0F0BDA07DC0F3C000FEF7D0
+:10FD00002BFF05460DF12B00FEF786FE69780746AE
+:10FD1000AA1C287801F0AAFC9DF82B00394601F0B6
+:10FD2000E5FEB8E7FFF77AFB002844DB0020FFF789
+:10FD3000FDF900200DB0F0BD2548214601F0D0FAB4
+:10FD400001F0EAFB00200DB0F0BD224840F219118D
+:10FD5000F3F7BCFEC8E74FF48272009308921E4B83
+:10FD60001E4A079305922B46CDE90300CDE9010019
+:10FD700006940322F6F7CEFB30F00203AAD0154812
+:10FD800040F20511F3F7A2FEA4E70120FEF7E4FE1E
+:10FD90004178821C007801F069FC7CE70D484FF443
+:10FDA0008F71F3F793FE00200DB0F0BD0948A92133
+:10FDB000F3F78CFE48E707488B21F3F787FEB5E79A
+:10FDC000D6BE898E5555550041320000640500208D
+:10FDD000590001005C60010055FF0000E9FB0000D4
+:10FDE00030B583B00546FFF74DFA962001F08CFC44
+:10FDF000002318461A46194601F0FCFB0120F9F7CA
+:10FE0000ADFB0446C0B104F11C0001F051FBFEF74C
+:10FE100037FF38B901F008FC0A48294601F060FABA
+:10FE200003B030BD0DF10700FEF7F6FD01469DF869
+:10FE3000070001F05BFEEDE7034840F2FB11F3F72A
+:10FE400045FEE0E7413200005C60010010B5044669
+:10FE5000FFF7C6FFA37D6FF30003A37501F050FB0E
+:10FE6000BDE8104001F074BD70B582B00546FFF7E3
+:10FE7000F7F9962001F048FC002318461A46194667
+:10FE800001F0B8FB0120F9F769FB0446A8B304F1BF
+:10FE90001C0001F00DFB01F063FBD8B9FEF7F0FE8A
+:10FEA00008BB01F063FD00210446084601F01AFB7F
+:10FEB00000210646084601F011FB3444C334201AE1
+:10FEC00001F00CFD01F0B0FB0F48294601F008FAE3
+:10FED00002B070BD0D4840F2D111F3F7F7FDFEF707
+:10FEE000CFFE0028DDD00DF10700FEF795FD01469D
+:10FEF0009DF8070001F0FAFDD3E7044840F2CD1168
+:10FF0000F3F7E4FDC3E700BF413200005C6001008D
+:10FF1000C36870B51E680446F6F70CFC054630460B
+:10FF2000FFF744F900232D1AC4E90053238120462A
+:10FF3000BDE87040FFF764BE08B5FFF751FFF6F764
+:10FF4000F9FBC11C002001F057FCBDE8084001F09E
+:10FF5000FFBC00BF00B9704702484FF4BD71F3F712
+:10FF6000B5BD00BF5C60010010B598B10C46FFF74D
+:10FF700055FA002804DB2046BDE81040FFF7D6B84C
+:10FF800008484FF4B571F3F7A1FD2046BDE81040D5
+:10FF9000FFF7CCB8044801F0A3F9BDE8104001F028
+:10FFA000BBBA00BF5C60010059000100824210B57D
+:10FFB0001BD114461748114601F092F901F0ACFA32
+:10FFC000A37DC3F34100013000F00300032807D0F4
+:10FFD00060F34203A3752530FFF708F9002010BD38
+:10FFE0006FF34203A3752520F6E70B4A1A60029AC5
+:10FFF00000231360FFF7E2F9002802DB6FF00A002C
+:020000021000EC
+:1000000010BD06484FF4A071F3F760FD6FF00A00D1
+:1000100010BD00BF39FF000011FF00005C6001004F
+:1000200038B50446FFF7B6F800B138BD054601F013
+:1000300039FBA27DC2F34103013303F00303032B19
+:1000400014BF63F3420265F34202A2752046BDE885
+:100050003840FFF725B900BF10B582B00446FFF75E
+:1000600011F900230093194618460322F6F7BEFA49
+:1000700001F052FA204602B0BDE81040FFF7D0BFB1
+:10008000F8B5074603200E461546F9F767FAC8B1DA
+:100090000446F9F781FA4FF6FF720423E2802371D8
+:1000A0005FB97F20207621462068A676E576F9F7AD
+:1000B0008BFAF9F799FA0020F8BD01F0BFFA00F0C9
+:1000C0007F00EFE76FF03600F8BD00BF00207047FB
+:1000D0000020704710B582B00446FFF76FF9002882
+:1000E00012DB0C4A0C490D4800940023FEF7A8FFD0
+:1000F00008B1443001D102B010BD0948702102B0EE
+:10010000BDE81040F3F7E2BC05486D21F3F7DEFCD3
+:10011000E7E700BF01FC000069FF0000ADFF000041
+:100120005C600100F8B50646FFF7ACF8F9F7C8FACD
+:100130000446002833D01D4B1D491E4A1B880D78EC
+:100140001178A3800122A571E17122701BB196F98B
+:100150002130002B04DB3046BDE8F840FFF7A0B8A3
+:1001600096F8493003F00703022B16D0042B14BF76
+:1001700028274FF4BC7701F0DFFB054601F0E2FBD6
+:10018000726B2D1A0023C4E90327A5603046736300
+:10019000F363BDE8F840FFF783B81827EBE706489C
+:1001A00040F23321F3F792FCC5E700BF8E4A0020EE
+:1001B000B04E0020B14E0020A860010038B590F884
+:1001C000623043F0040380F86230054601F0FCF928
+:1001D00003780022012161F3010342700446037099
+:1001E000D5E91301F4F788FD2378003818BF012002
+:1001F00060F304132370204638BD00BF0020704711
+:10020000002070470720704714207047014B33F8D7
+:1002100010007047F460010005480649064A10B412
+:100220000023064C03700B701370238010BC7047C2
+:10023000AF4E0020B04E0020B14E00208E4A00206C
+:1002400010B590B10C46FFF7E9F8002804DB204612
+:10025000BDE81040FEF76ABF07487B21F3F736FC84
+:100260002046BDE81040FEF761BF044801F038F8B1
+:10027000BDE8104001F050B9A8600100250101005F
+:10028000F8B505460120F9F769F9044650B395F829
+:100290004960B5F8427006F007063046002101F0CB
+:1002A00065F895F8623072001B0704F11C0442F0F7
+:1002B00001020ED5391DC9B2082001F0C3F822464B
+:1002C000314605F1630001F063FBBDE8F84001F041
+:1002D000EFB8F9B2082001F0B5F82046BDE8F840C3
+:1002E00001F0E6B8024840F2A911F3F7EFFBCEE7C0
+:1002F000A860010038B50446FEF7B2FF962001F071
+:1003000003FA94F8482094F84900C2F3C00300F0BF
+:10031000070002F00702002101F06CF92046FFF708
+:10032000AFFF01F01DF9A0BB01F020FB054694F8DA
+:100330004900012100F0070001F0D4F894F8493099
+:1003400003F007030544022B05F1A3051FD0042B7E
+:1003500014BF28234FF4BC7394F84800C0F3C001C5
+:1003600000F007001D4401F0B9F8281A01F0B6FAB0
+:100370000B4B1B882BB994F92130002B01DB01F0CA
+:1003800053F921460748BDE8384000F0A9BF1823BB
+:10039000E2E7054840F27511F3F798FBC4E700BFA8
+:1003A0008E4A0020AD040100A8600100F8B50F4698
+:1003B00090F84810B0F8406001F007040546C1F31A
+:1003C000C001204600F0D2FF95F862306200DB06E3
+:1003D00042F00102F1B20DD50431C9B2082001F09A
+:1003E00031F8394605F1840001F02AFBBDE8F840F8
+:1003F00001F064B8082001F025F83846BDE8F8405F
+:1004000001F05CB82DE9F04390F862305B0783B0EF
+:1004100088463ED4044601AAD0E91301F4F76CFCE7
+:10042000814600283CD0019F94F8616094F86030C8
+:100430000437BD1913B96B7884F8603026B1BA5D02
+:10044000012161F30102BA559B1B6B70BB5D6FF319
+:100450000413BB552046FCF703FF6B78834204D995
+:100460006870BB5D43F01003BB55D9F80020236DC5
+:100470009A4203D0BB5D43F01003BB552B7800229A
+:100480006FF347132B70AA70C8F8005003B0BDE893
+:10049000F083FFF793FEC8F8000003B0BDE8F083D7
+:1004A0002046FFF78BFE0546E8E700BF2DE9F04F39
+:1004B00083B0044601F05EF810F0FF0F0AD1FEF79A
+:1004C000D7FEC348214600F00BFF01F025F803B02A
+:1004D000BDE8F08F01F06EF8C5B201F0BDF85FFA2B
+:1004E00080F8FEF7C5FEBB4A138801200133138054
+:1004F000F9F734F80646002800F0D680EDB9B64A80
+:100500001778002F6BD094F86230013FFFB201A939
+:1005100020461770C3F38009FFF774FF002F40F0E7
+:100520001E81AB48214600F0DBFE94F92130002B00
+:1005300080F2AD8001F06AF866E094F86230327FB4
+:1005400003F00101C2F38000884200F0B58094F905
+:10055000212081F0010161F30003002A84F8623058
+:1005600005DA94F8243043F0010384F8243094F839
+:10057000623013F0040A40F0D080D4E9130101AADC
+:10058000F4F7BAFB8346002800F0DE80019F94F860
+:100590006190043707EB09035A7852B194F862303E
+:1005A000D80606D5D4E92531013341F10001C4E96B
+:1005B000253194F860304A44D2B29A42C0F0CB80E0
+:1005C00000F0F680002594F92130002BC0F2E38082
+:1005D000327FD10640F1E38094F862306FE001236E
+:1005E00001A920461370FFF70DFF962001F08CF84B
+:1005F00094F8490000F0070000F0EEFF774821462C
+:1006000000F06EFE01F0A4F994F862200199C2F3A3
+:1006100040030878C2F300029B0043EAC20320F0C3
+:100620000C0213430B702046FFF7C0FE00F098FF4A
+:10063000002865D101F080F9B0B1DDB1208A4FF614
+:10064000FF73984262D02946FCF746FCA7B9F8F739
+:10065000CBFFB8F1000F3FF43AAF00F0EFFF84F8A2
+:10066000A50003B0BDE8F08F01F05AF901F05EF982
+:10067000002DE3D1002FECD0F8F78EFF0223337169
+:10068000238A3068F3803146F8F79EFFDFE700F0F9
+:1006900043FF00F065FF002875D194F8623069F3DC
+:1006A000820384F86230C5E74D48AA21F3F70EFAB9
+:1006B000002D3FF424AF40E74FF0000A5546C2F347
+:1006C000C002C3F340018A424BD000274249454A49
+:1006D00000200870C3F3800901A90123204613708C
+:1006E000FFF790FEBAF1000F7FF41BAF337FDB06FC
+:1006F0003FF57BAF019B5B78002B3FF412AF74E7B3
+:10070000374840F21511F3F7E1F993E734484FF415
+:100710009171F3F7DBF9208A95E76FF3820384F890
+:10072000623000F051FF94F92130002B0CDB327F56
+:1007300012F0100509D190F800A094F862308AF008
+:10074000100ACAF3001ABAE7327F94F862304FF009
+:10075000000A5546B3E784F86120002533E72F46A9
+:1007600043E70320F8F7FAFE90B194F8623083F083
+:10077000020384F86230737F53B194F862301A0731
+:1007800032D40127A2E71648DB21F3F79FF984E76B
+:1007900094F8623099E794F86230327F8FE717F867
+:1007A00009A094F862308AF0100ACAF3001A86E7AA
+:1007B0000022206DA4F8602004F14C01F4F7A4FAA3
+:1007C000019D2B68CBF80030C5F800B0FBE600BFF8
+:1007D000250101008E4A0020AF4E0020F5020100E5
+:1007E000A8600100B04E002001F054F900283BD071
+:1007F00001F072F930BBD4F87320D4F8773013438A
+:1008000004D1337F03F00303032B04D0194B0222DE
+:100810001A7000270EE700F0DBFE42781B2A014623
+:10082000F4D8033206F11C0004F036F9D4F8733022
+:10083000D4F8772013F1FF3342F1FF32C4F873305C
+:10084000C4F87720D4F87330D4F8772009490133FD
+:1008500004F1730042F10002C4F8733001274260D2
+:1008600094F862300F7031E7034840F2D121F3F77A
+:100870002DF9BDE7B14E0020A8600100704700BF10
+:100880002DE9F041C46882B00546FFF7C5FCE18A56
+:10089000668B94F82130481E3144002280B2618377
+:1008A0005906E282208304F11C0240F18B8030441F
+:1008B000618C80B203F03F03FDF75EF90746D4E98F
+:1008C0000C61E26AD4E90E0331448A4228BF0A4629
+:1008D000034400266263E3632663A66300F020FD01
+:1008E000304600F06FFD2046FFF7CAFC04F1080017
+:1008F00000F08EFD637BA27B217B1B0243EA024357
+:10090000194340F25B6000F049FE3846FEF76EFC8A
+:1009100021463D4800F0E4FC962000F0F5FE94F8F6
+:10092000482094F84900C2F3C003314602F00702A0
+:1009300000F0070000F05EFED4F800802F6840460B
+:10094000FEF734FC07446A6807F10901304600F0FD
+:10095000E7FE054600F0D0FF304600F0E7FF626B8F
+:10096000E36B94F84900303203EB420300F00700D8
+:1009700001211D4400F0B4FD94F8492002F0070263
+:10098000022A054435D0042A0CBF4FF4BC73282337
+:10099000104601211D4400F0A5FD284400F09EFFF3
+:1009A00000F042FE217C05313A464046C9B2FEF7CE
+:1009B0000BFCA0B92046FEF7B7FBE0B9002002B05F
+:1009C000BDE8F08103F03F0694F82210009613462C
+:1009D000024604F12300FDF793F807466FE70B4842
+:1009E000214600F07DFC00F097FD002002B0BDE83C
+:1009F000F0811823CCE70648FE21F3F767F80020C2
+:100A000002B0BDE8F08100BFAD040100F5F20000C6
+:100A10000461010030B583B0C4680546FEF7CEFC22
+:100A2000002821DB2B89A16AD4E90B2001339BB27A
+:100A300001FB0301E08A8A4228BF0A46034422637D
+:100A4000E3820C4A0C490D4800950023FEF7F8FAA2
+:100A500008B1443001D103B030BD09485B2103B077
+:100A6000BDE83040F3F732B805484821F3F72EF8D7
+:100A7000D8E700BF8108010041020100A5F1000094
+:100A800004610100F0B5C46885B00546FFF7C4FBFA
+:100A9000E18A668B94F82130481E3144002280B2EE
+:100AA00061835906E282208304F11C0261D530443F
+:100AB000618C80B203F03F03FDF75EF8064603A9A0
+:100AC0002046FFF79FFC94F862200398C2F340038E
+:100AD0000178C2F300029B0043EAC20321F00C023A
+:100AE0001343037000F01CFC002000F06BFC04F1C9
+:100AF000080000F08DFC637BA27B217B1B0243EA94
+:100B00000243194340F25B6000F048FD3046FEF7B7
+:100B10006DFB03992046FFF749FC2146214800F070
+:100B2000DFFB962000F0F0FD94F8490000F007008C
+:100B300000F052FD27682E683846FEF737FB064462
+:100B40006A6806F10901012000F0EAFD00F000FFEB
+:100B5000217C053132463846C9B2FEF735FBA8B1D3
+:100B60001148214600F0BCFB00F0D6FC002005B087
+:100B7000F0BD03F03F0694F822100096134602469B
+:100B800004F12300FCF7BCFF064698E72046FEF779
+:100B9000CBFA0028EAD00548D321F2F797FF0020CE
+:100BA00005B0F0BDF5020100F5F200005061010052
+:100BB00030B583B0C5680446FEF700FC002817DB9B
+:100BC0002389E88A0D4A0E4901330344EB820D481C
+:100BD00000940023FEF734FA08B1443001D103B089
+:100BE00030BD0948522103B0BDE83040F2F76EBF76
+:100BF00005484821F2F76AFFE2E700BF850A0100D5
+:100C000041020100A5F100005061010070B500F043
+:100C10009BFC00F069FD1E4B1E4A19781378CB1A15
+:100C2000DB0701D4117070BD00F09AFE054600F09C
+:100C300089FE064600F094FE174B184A04461178C8
+:100C40001878344400F040FC641B154905F26935FE
+:100C5000AD1BA1FB0535241A40F271216D0A01FB81
+:100C6000054400F089FE00F08DFE844203D204F2B8
+:100C70007124A042FBD800F0C9FC2146012000F0FD
+:100C8000F5FD00F039FEBDE8704000F061BE00BF28
+:100C9000B64E0020B54E0020B34E0020B44E0020CA
+:100CA0005917B7D170B516460C46054600F054F9F1
+:100CB000FEF79CFB00F034FB3046002100F010FBF7
+:100CC000032C25D80121013C154B164E197001FA51
+:100CD00004F4E0B2307000F049FB962000F014FDFF
+:100CE00000F076FB6800023000F07AFB0E4800F05E
+:100CF0008FFB0E4940F25B6000F050FC32785200EE
+:100D000002F0FE02FF21082000F09CFB002070BDD5
+:100D1000044E034B0420002130701970DBE700BF44
+:100D2000B44E0020B34E0020EC6301005555550031
+:100D300010B500F01FFC10F0FF0F05D100F004FC0F
+:100D4000BDE8104000F0D0BC00F034FC044600F0D8
+:100D5000FBFB00F0C9FC064B187800F03DFC14F0DA
+:100D6000FF0F03D0034A13880133138010BD00BF67
+:100D7000B34E0020904A0020072A2DE9F04106D802
+:100D800014465A1E032A02D82E4F3A781AB101256A
+:100D90002846BDE8F0812C4A0E461946FFF782FF2F
+:100DA00005460028F4D1294A13780133137000F066
+:100DB0000FFC631E80460230062B3ED8DFE803F0AE
+:100DC00038332E29241F04003246AA2103F08FFE57
+:100DD000404688F8004088F8016000F06FFB00F0A2
+:100DE00015FC00F0E3F80022C11C012000F098FC83
+:100DF00000F082FD00F0ACFD01233B70C8E73246F5
+:100E0000F02103F074FEE3E73246002103F06FFEA9
+:100E1000DEE73246FF2103F06AFED9E70C4932468D
+:100E200003F03AFED4E73246552103F060FECFE7E7
+:100E300032460F2103F05BFECAE70649324603F053
+:100E40002BFEC5E7B24E00200D0C0100B64E00206F
+:100E5000EC610100EC62010038B54B1E022B02D898
+:100E60000F4D2B7813B10124204638BD0D4AFFF7F2
+:100E700019FF04460028F7D100F0AAFB00F018FB88
+:100E8000094B187800F0A8FB00F090F82246C11C2E
+:100E9000204600F045FC01232B70204638BD00BFE2
+:100EA000B24E0020310D0100B34E0020F8B51E4DAA
+:100EB0002B7823B31D4C1E491E4E22780F783388A1
+:100EC000038097424FF00000D3B2308023D02278C5
+:100ED0000233DBB293420B7006D020BF40BF20BF6D
+:100EE00023780A789A42F8D100F0E4FCFEF796FAEB
+:100EF000002806DB00F040F800202870F8BD012033
+:100F0000F8BD0D4840F25311F2F7E0FD00F034F85F
+:100F100000202870F2E700F0FFFA00F0CBFCFEF7AB
+:100F20007DFA0028E6DAECE7B24E0020B54E00204C
+:100F3000B64E0020904A0020A0610100054B4FF4FE
+:100F400080320021C3F80815C3F84423C3F80423F2
+:100F5000704700BF00B00040054B1878421C1A7063
+:100F600018B9044B01221A6070470120704700BF76
+:100F7000B74E002000B0004010B5094C207848B1B1
+:100F80000138C0B2207018B9064B01221A6010BD9A
+:100F9000012010BD04482E21F2F798FD2078EFE7DC
+:100FA000B74E002004B00040F0630100014BD3F8BD
+:100FB0000405704700B00040024B00F5A87043F8EC
+:100FC0002010704700B00040F0B4124B124D0126C3
+:100FD000344600212C60C3F80405C3F80011C3F89F
+:100FE00004111C6005E0D3F8042132B9D3F80425BC
+:100FF0001AB1D3F80021002AF5D02E60D3F80421CD
+:10100000002AE7D1D3F80475002FE3D0F0BCC3F871
+:101010000425704700E0004004E0004070B58CB04B
+:101020000E4615460146102268461C46F3F734FE6C
+:1010300010220DEB02003146F3F72EFE6846FFF753
+:10104000C3FF25B12846102208A9F3F725FE24B1D5
+:101050002046102208A903F01FFD0CB070BD00BF90
+:101060002DE9F04FDFF84C82DFF83CA298F90070D0
+:10107000884B98F80060CAF8603507F10B03DBB2C3
+:10108000DB00854CDFF830E24FEAC60903F180430C
+:1010900003F5F83309F1804C0CF5F83C04EB860BB2
+:1010A00007F1080507F11004CAF864C5CE44C3F877
+:1010B00010B5E4B2EDB20FFA86FCE8B1022A4FEAAD
+:1010C000860A4DD04AF23C5949F6C470042A18BF2A
+:1010D0008146022900F0B180042940F0A4806F48C5
+:1010E00009F5EB4909F11409A0FB09094FEA99191F
+:1010F0006B48C3F8140540E0E400ED0004F18044BF
+:1011000005F1804504F5F83405F5F835654AC3F86E
+:1011100014254FF02809C4F81005C4F81405C5F8C3
+:1011200010B5C5F814E54FEA8C0C0CF1804C0CF5A9
+:10113000104C0136DCF840354B458ABFDCF84035B1
+:101140000123A3EB0903CCF84035574B06F0010609
+:101150004FF49062C3F8042588F80060BDE8F08F72
+:10116000022900F09080042900F08A804FF03109B4
+:101170004B48C3F814054B076BD5022A7DD04AF2C1
+:10118000B8104AF23073042A14BF02461A460237D6
+:10119000FFB2B800DFF824B100F1804006F5A87373
+:1011A00000F510405BF82330C0F8403546F2180BCC
+:1011B00042F2B843042914BF194659460A44374934
+:1011C000D0F84035A1FB0212B3EB921F88BFD0F8D4
+:1011D00040354FEA92118CBF5B1A0123E400C0F83E
+:1011E0004035ED002C4B31492F4A314804F1804401
+:1011F00004F5F83405F1804503EB870705F5F8356C
+:10120000274BC4F810755144C4F814354FF48023AB
+:10121000C5F81075C5F814E5C2F8A005C2F8A41504
+:10122000C2F804357FE71D4809F51A5909F12C0960
+:10123000A0FB09094FEA99199AE7184A1849C3F817
+:10124000141509F5AB5909F11C09A2FB09394FEA3C
+:101250009919E400ED0004F1804405F1804504F59E
+:10126000F83405F5F8350023C4F81035C4F8143502
+:10127000C5F810B5C5F814E555E749F6346286E7B8
+:101280004FF0460934E7064AC3F814254FF02D09FC
+:10129000DFE700BF0C11004040910040D34D6210C9
+:1012A000001000400410004000F001404090004059
+:1012B00050110040B84E002004F001400090004062
+:1012C000044BD3F8103123B1034A044B10681B6858
+:1012D00018477047001000406C4900206849002002
+:1012E00038B5044601200D46F3F798F8084A094836
+:1012F000094B0A491560102502220460C1F8045305
+:101300000120C3F88021BDE83840F3F777B800BF6B
+:101310006C4900206849002000E100E00010004016
+:1013200038B50120F3F77AF80B4B0C490C4A0D4CF9
+:101330000D480025C3F8FC5F0125C3F8FC5F0B686E
+:1013400023F0807323F0010343F080730B60C2F835
+:101350000048C2F8040838BD00100040741700406F
+:1013600000F001400009010000120200134A0228A7
+:1013700013680FD0042812D023F000431360032118
+:101380000F4BC3F81015D3F8502642F00102C3F8F2
+:101390005026704723F0004313600421F0E743F028
+:1013A00000431360136823F0FF0301F0010143F0D1
+:1013B0005C03C1F106011360E2E700BF3C17004087
+:1013C00000100040014BC3F80C05704700100040AE
+:1013D000024B0822C3F80C25704700BF00100040E4
+:1013E000014BC3F80805704700100040074BC3F8D5
+:1013F0005405D3F8182522F00072C3F81825D3F845
+:10140000182542F00072C3F81825704700100040FC
+:101410000B4A0021012310B4C2F82C15C2F8303554
+:10142000C378C2F824354378847801781B0443EAF2
+:10143000046343EA012310BCC2F81C35704700BFA7
+:1014400000100040C2F34203022B10B402F001026C
+:1014500024D0042B14BF00244FF0C7440AB144F435
+:101460008014C0F108031B0400F00F00204303F4B4
+:1014700070230D4A10BC034343F48073C2F8143543
+:10148000D2F8183509481840C2F81805D2F81835AE
+:10149000194341F44031C2F8181570474FF0807479
+:1014A000002ADED0DBE700BF001000400000F8FE9D
+:1014B000014BC3F80405704700100040014BC3F80E
+:1014C0000405704700100040022804D0042814BF0F
+:1014D00029202A2070472820704700BF012070472C
+:1014E00029207047022809D0042805D111F0010FE6
+:1014F00014BF1E20192070470A207047052070472E
+:10150000014B01221A60704704100040014B012278
+:101510001A6070470010004030B4084A0848094972
+:1015200001234FF490650024C2F808555360D3603E
+:10153000C0F8004230BC0B60704700BF00F00140B3
+:101540000010004010100040044B0022C3F800219E
+:10155000C3F80C21C3F81021704700BF00100040F1
+:10156000034BD3F80001003818BF0120704700BFBB
+:1015700000100040034BD3F80C01003818BF0120C5
+:10158000704700BF00100040034BD3F85005B0FA7D
+:1015900080F04009704700BF00100040044B40F24B
+:1015A0000312C3F83425C3F83805C3F83C15704757
+:1015B00000100040034BD3F80004003818BF01208E
+:1015C000704700BF0010004000487047604800208E
+:1015D0000048704764480020054B10B400210324E4
+:1015E0000246C3F80042084610BCFFF739BD00BFF1
+:1015F00000100040044B10B403240146C3F800421D
+:10160000012010BCFFF72CBD001000400449054B21
+:1016100003204FF49062C1F80002C3F80825704718
+:101620000010004000F00140034AD2F8003243F4B9
+:101630008873C2F80032704700100040014BD3F8A5
+:101640004805704700100040024B0022C3F81C21DF
+:10165000704700BF00100040034BD3F81C01003856
+:1016600018BF0120704700BF0010004030B40024B4
+:10167000A30003F1804303F580531568C3F80056B7
+:1016800001349588C3F82056082C02F10602EFD1E8
+:10169000034B40EA012030BCC3F84006704700BF4E
+:1016A00000100040034AD2F8403623F0FF03C2F88E
+:1016B0004036704700100040024B0022C3F814214E
+:1016C000704700BF00100040034BD3F814010038EE
+:1016D00018BF0120704700BF00100040014BD3F835
+:1016E00010047047001000400449054B054A4FF4B0
+:1016F0008020C1F84803C3F80825704700B00040B7
+:1017000000F001406020740E034B044A1B7803F57F
+:10171000A87342F823007047B84E002000900040A4
+:10172000F0B4A2F574232A4DA3F51073AB4204461E
+:1017300006D902F1E87202F5D43202F5A572013938
+:10174000244D254B254801262E600026C3F804654C
+:10175000234DA0FB02020426C3F81065900C02265C
+:10176000C3F808651F4AC3F84005C5F848154FF48B
+:101770008021C5F844131C49C2F838152021C2F84D
+:101780003C35C2F80415E4B14FF40013C2F8083533
+:101790004FF48014134A154B1549C2F8044500252F
+:1017A0000124144E0C600427C3F80455C3F81075C7
+:1017B000C3F808551C60C2F84865F0BCC2F84C1567
+:1017C00070474FF48013C2F808354FF40014E1E776
+:1017D000BFBDF07F0C8000400080004083DE1B43D3
+:1017E00000B0004000F0014048B1004000900040CF
+:1017F0000C9000400C110040F0B4164C164F174EE0
+:10180000174D184B01223A603260C4F840254FF45E
+:101810008022C5F84815C5F844231349C3F8381584
+:101820002022C3F83C45C3F8042558B14FF40012F8
+:10183000C3F808254FF480130A4A0120F0BCC2F80F
+:10184000043570474FF48012C3F808254FF4001395
+:10185000F2E700BF00800040048000400C800040A0
+:1018600000B0004000F0014048B100400C4BC3F80C
+:10187000401550B10B4B4FF40012C3F80825094A2C
+:101880004FF48013C2F804357047064B4FF48012B2
+:10189000C3F80825034A4FF40013C2F80435704713
+:1018A0000080004000F00140014BD3F8480570472C
+:1018B00000B0004010B40548054C0649064A012313
+:1018C0002360036010BC0B60136070471080004001
+:1018D0000480004004900040109000400449054BF3
+:1018E000C1F844054FF08862C3F80425704700BF73
+:1018F0000080004000F00140054B06480649074AB9
+:10190000C3F84005C3F84415C3F80425704700BF69
+:1019100000F0014000110040408000404000000401
+:10192000014BD3F84405704700800040014B18601C
+:10193000704700BF70490020014B1868704700BF16
+:1019400070490020014BD3F84005704700800040EB
+:10195000024B4FF00062C3F80425704700F00140CD
+:10196000014BD3F84805704700800040014BD3F885
+:101970004805704700800040014B01221A60704703
+:101980004C800040014BD3F84C057047008000406C
+:10199000F0B4214B02240025A142C3F800550646AD
+:1019A000C3F8004535D0042931D11C491C4C1D48D1
+:1019B0000325C3F81C55C1F878454FF400531A4C61
+:1019C000C1F87C05C1F804351849134BD1F8181536
+:1019D0001748124D174FC9B2C3F81815C3F804457C
+:1019E0000021C3F808654FF00074C3F80C05C3F874
+:1019F00010250122C3F81475C3F80012C3F80411AE
+:101A0000C3F80811C5F80445F0BC1A6070470A4CC9
+:101A1000DAE70A4CD8E700BF00F0004000F00140D0
+:101A2000501100400CF00040010002010010004085
+:101A3000644800205447002001000001010001011A
+:101A400070B4104B104D114E044600220220C3F812
+:101A50000025C3F80005C3F80465C3F808450C4E1B
+:101A6000C3F80C150124C3F810552846C3F81465B3
+:101A7000C3F80042C3F80421C3F808211C6070BCFD
+:101A8000704700BF00F000406448002000000101E2
+:101A9000544700200E4A0223C2F80433D2F804311E
+:101AA00033B920BF40BF20BFD2F80431002BF8D09B
+:101AB000074B084A02204FF40041C3F80803C2F85C
+:101AC0008011D3F80801B0FA80F04009704700BFD8
+:101AD00000F0004000E100E0034BD3F800040038C0
+:101AE00018BF0120704700BF00F00040154B164A98
+:101AF00030B40324C3F80045C3F80405C3F808153F
+:101B0000D2F80405114D124C0138C3F8100500211C
+:101B10004020C3F81455C3F80011C3F80411C3F8EA
+:101B20000811C2F86005D2F800324FF4000043F00B
+:101B30004003C2F80032C2F82811C4F8040530BCD2
+:101B4000704700BF00F000400010004050470020E8
+:101B500000F00140014BD3F80004704700F0004052
+:101B60000349044A0023C1F82831C2F80035704700
+:101B70000010004000F00040084BD3F8280160B18D
+:101B800003F56043D3F8000138B1D3F8040120B164
+:101B9000D3F80801B0FA80F0400970470010004007
+:101BA000022910B5144603D006481F21F1F78EFF15
+:101BB0000B201CB1BDE81040F2F720BCBDE810407E
+:101BC000F2F72CBC3C64010029B10139012905D888
+:101BD0000B20F2F737BC1820F2F734BC08B50348E5
+:101BE0003721F1F773FF002008BD00BF3C640100FE
+:101BF000884213D028B9481E01288CBF002001203C
+:101C00007047012806D159B1A1F10200B0FA80F065
+:101C100040097047022804D0002070470120704717
+:101C2000704701298CBF002001207047012906D090
+:101C3000022904D049B108486821F1F747BF074B92
+:101C40004FF40062C3F800217047044B4FF08072DC
+:101C5000C3F80021704700BF3C64010000E100E0D0
+:101C6000032810B5044604D8094B1C5D4CB120462E
+:101C700010BD08482B21F1F729FF054B1C5D002CF6
+:101C8000F5D104482E21F1F721FF204610BD00BFF9
+:101C9000DC6401008C640100013810B41C46042887
+:101CA00053D8DFE800F00A18111F0300042922D0DE
+:101CB000284810BCBA21F1F709BF042929D02548CA
+:101CC00010BC4E21F1F702BF04291BD0214810BCE3
+:101CD0007C21F1F7FBBE032922D01E4810BC6521F0
+:101CE000F1F7F4BE032929D0042920D0194810BCEB
+:101CF000A221F1F7EBBE184B02219C60032010BC1F
+:101D0000F3F766B8154B02219C60012010BCF3F775
+:101D10005FB8134B02219C60002010BCF3F758B849
+:101D2000104B01219C60084610BCF3F751B80E4BD4
+:101D300002219C60084610BCF3F74AB80B4B012106
+:101D40009C60022010BCF3F743B8024810BCC021CD
+:101D5000F1F7BCBE8C640100C4050020940500208E
+:101D60007405002084050020B4050020A40500208F
+:101D700001460020FFF720B94FF08053D3F8A4208C
+:101D8000013208D04FF08052D2F8A03013F0010396
+:101D90000FD100207047D3F8A8304FF6FF729BB2E6
+:101DA0009342F6D04FF08052D2F8A03013F00103E6
+:101DB000EFD0D2F8A430190C10B503700C0AC3F39D
+:101DC00007238170C4704370D2F8A8300371C3F345
+:101DD000072363F03F034371D2F89030013335D0CD
+:101DE000D2F89430013331D0D2F8983001332DD06D
+:101DF000D2F89C30013329D0D2F890308371190C7D
+:101E00000C0AC3F3072301724472C371D2F89430F1
+:101E10008372190C0C0AC3F3072301734473C37252
+:101E2000D2F898308373190C0C0AC3F3072301749A
+:101E30004474C373D2F89C3083741A0C110AC3F330
+:101E4000072302754175C374012010BD10220021C3
+:101E5000063002F04CFE012010BD00BF10B510226C
+:101E60000C46002102F043FE4FF08053D3F880204F
+:101E7000013234D0D3F88420013230D0D3F8882016
+:101E800001322CD0D3F88C20013228D0D3F8802016
+:101E90002270110C080AC2F30722A170E070627070
+:101EA000D3F884202271110C080AC2F30722A17111
+:101EB000E0716271D3F888202272110C080AC2F313
+:101EC0000722A1726272E072D3F88C3023731A0C6D
+:101ED000110AC3F30723A273E173637310BD204695
+:101EE0001022BDE81040002102F001BE8379054AAE
+:101EF000282101FB03235B6AC01A034BC01058431F
+:101F0000704700BF10070020ABAAAAAA10B50A4A62
+:101F10008379282404FB03230A681B6A5C6823680E
+:101F20009A4294BF0A600B60FFF7E0FFD4E90023F8
+:101F300002FB003010BD00BF100700202DE9F34761
+:101F4000054601911046194616461F4603F002FC4D
+:101F5000804689464FF02003EFF3118A83F31188FE
+:101F6000BFF36F8F6B8B002B54D02A8B9A423DD9D5
+:101F700000220023284601F075FA0446002835D0D7
+:101F80008AF31188BFF36F8F019B002B52D056EA62
+:101F9000070310D07B1C08BFB6F1FF3F0BD002F047
+:101FA0007DF8B8EB000669EB0107002E77F100031E
+:101FB000BCBF00260027A379DFF89080282202FB0F
+:101FC000038301A91B6A1B6832461D6820463B46F5
+:101FD000A8470546206170BBA07900EB8000214630
+:101FE00008EBC00003F0B6F92C461FE0688B431ED7
+:101FF0006B838AF31188BFF36F8F2C8B241A686A66
+:10200000182303FB04041148114B2D1AED105D43F6
+:10201000A571B9E78AF31188BFF36F8F32463B464B
+:10202000284601F01FFA04460028ADD1204602B030
+:10203000BDE8F0872361002301222360A280A381F1
+:10204000019A2369E281A360F0E700BF1007002036
+:10205000CDCCCCCC2DE9F041174D044600262827E5
+:102060000CB9BDE8F0812379D4F80080013BDBB2E4
+:102070002371002BF5D1216959B163799B0707D4EE
+:10208000A37907FB035320461B6A1B689B6898478C
+:102090002661A079A66007FB00532660DB691BB1AF
+:1020A000204698474446DBE700EB8000214605EBDD
+:1020B000C00003F04FF9F5E71007002008B5094B01
+:1020C0001A786AB90121197006200521F2F7C8F9BA
+:1020D0000620F2F793F9044B4FF00042C3F80423B3
+:1020E000002008BDB94E0020006000402B4BF0B529
+:1020F00044682B481340834241D00DD8062B15D09D
+:1021000005D89BB1022B3CD06FF0150036E0B3F53B
+:10211000801FF9D1012309E02248834233D0B3F56F
+:10212000A00F32D0B3F5800FEED10223D00654BFFA
+:10213000C2F34016032682F480759705C2F340204F
+:10214000C5F3002507D512F4006F67681FD0012280
+:102150008A40C7F80825227A134C012A01F01F0192
+:1021600040EA450218BF4FF0A04442EA032301F5BC
+:10217000E07143EA860344F821300020F0BD0723D4
+:10218000D4E70423D2E70523D0E70323CEE75205A3
+:1021900042BF01228A40C7F80C25DCE70600F000A8
+:1021A00006001000020040000003005000F01F0273
+:1021B0004009084B012818BF4FF0A04303EB8203EE
+:1021C000D3F8002722F4403242EA0142C3F8002744
+:1021D000704700BF00030050F8B50D464168C7685E
+:1021E000087A05F01F06B2F5A03F46EA401610D166
+:1021F0007009012806F01F016B4801F5E07118BF56
+:102200004FF0A04050F82110CC0707D56FF0220006
+:10221000BDE0B2F5005FF96800F0AA80F86801211E
+:10222000A94001437869F9600121A940B2F5A03FB6
+:10223000BA690CBF08438843B3F5C02F0CBF0A43EB
+:102240008A43BA613A697861B3F5802F0CBF1143B4
+:1022500022EA0101554A3961D2F804130023C9B2B8
+:1022600003F5A27052F82000C0F30520864240F02A
+:10227000848021FA03F0C0077FD5012199404C48A2
+:10228000BFF35B8FCC4350E800CF0CEA040C40E86E
+:1022900000CEBEF1000FF6D1BFF35B8F9B0003F1C0
+:1022A000804303F5C043D3F8100520F00100C3F8C4
+:1022B0001005C2F8081300213046FFF777FFFB68CE
+:1022C000EB4013F0010351D07B69EB4013F00104A4
+:1022D0005ED0BB69EB40DB075FBF396921FA05F5CA
+:1022E00005F00105C5F10205314954BFEDB20325E2
+:1022F0000022012707FA02F4BFF35B8F51E8000FB9
+:1023000040EA040341E8003CBCF1000FF6D1BFF302
+:102310005B8FD04010F0010334D1910001F1804176
+:1023200001F5C0414032D1F8100520F44F3020F4BF
+:1023300040709200C1F81005360292B2D1F8100533
+:1023400006F47C5602F1804202F5C04246EA054698
+:102350000643C1F8106513601268D1F8102542F0E9
+:102360000102C1F81025114AC2F8044318460EE0D4
+:102370000120A84021EA000154E70133082B7FF433
+:102380006FAF98E70132082AB4D16FF01200F8BDA0
+:102390003969E94001F00101C1F103013046C9B2D8
+:1023A000FFF704FF2046F2E7000300500060004002
+:1023B000DC490020F7B50026CDE90066264D2C68E3
+:1023C0004CB1264802F00FFD0090254802F00BFDAD
+:1023D00001902E602B68234D002201269446D5F8EB
+:1023E000043306FA02F119421BD0910001F1804139
+:1023F00001F5C2410B68A3B102F5A27302AF55F813
+:102400002330C1F800C0C3F3403007EB8000C3F3B2
+:10241000042350F8087C06FA03F33B4340F8083CD9
+:102420000B680132082ADAD1009A1AB10B490E481A
+:1024300002F06FFC019A1AB109490C4802F069FCDC
+:1024400044B1064802F0F8FC054803B0BDE8F0408E
+:1024500002F0F2BC03B0F0BD7C61004064060020D5
+:102460007406002000600040A8490020C4490020F4
+:10247000054B1B682BB9054B1878003818BF012095
+:1024800070470120704700BF1C210040BB4E002058
+:10249000064B1A683AB1002018601B68044BD3F849
+:1024A00018350B7070474FF0FF307047082100401F
+:1024B00000200040024BD3F88004C3F8800470472A
+:1024C00000200040F0B50023084C094F1E46D8B24A
+:1024D000151A002D02DD2568013305B9F0BD26600F
+:1024E0002568D7F818550D54F1E700BF08210040C2
+:1024F00000200040014B01221A707047BA4E0020A4
+:10250000024B0422C3F80423704700BF00200040A0
+:10251000024B0422C3F80823704700BF002000408C
+:10252000024B1868003818BF01207047082100408E
+:10253000024B4FF40072C3F80423704700200040A0
+:10254000024B4FF40072C3F808237047002000408C
+:10255000024B1960024B1A60704700BFE04900202F
+:10256000E449002008B50F4B00221A7002F0C5FDA7
+:102570000D4B01221A608022C3F8FC224FF020028A
+:10258000EFF3118382F31188BFF36F8F074A12783C
+:102590001AB1074A0421C2F8001183F31188BFF36E
+:1025A0006F8F08BDBA4E002008200040BB4E0020AF
+:1025B00000E100E008B5074BD3F8040310F08000F9
+:1025C00004D0054B1B7813B9FFF752FF08BD00205C
+:1025D000FCE700BF00200040BA4E002008B50C4BBD
+:1025E000D3F8042312F0800F1A4605D1D2F8040361
+:1025F00010F0040006D108BDFFF7DCFF0028F5D07D
+:102600000120F8E7034B1868003818BF0120F2E7F3
+:10261000002000400821004010B5114C22780346EC
+:102620006AB1104A126852B10F4B8022C3F80823D6
+:102630000122DA6002F062FD0023237010BD0B4A14
+:10264000116811B1002111601268094A1268002A4C
+:10265000F4D00849BDE8104009681846104700BF8B
+:10266000BA4E00201C2100400020004024210040E0
+:10267000E0490020E449002070B54B79012B24D0BB
+:10268000032B1FD110268B79032B1BD1CC790CB1D6
+:10269000012C17D10A7912B1022A13D10E220B682C
+:1026A000B3F5164F62D02DD8B3F5165F60D016D8AB
+:1026B000B3F5966F5ED00AD8B3F5967F5DD0B3F5CB
+:1026C000167F5DD06FF022004FE00026DBE7B3F508
+:1026D000166F58D0B3F5965FF4D1354B39E0B3F5AA
+:1026E000E14F53D007D8B3F5615F51D0B3F5964FA2
+:1026F000E8D1304B2DE047F61225AB42E2D14FF442
+:10270000000326E0B3F5613F45D011D8B3F5963FFD
+:1027100043D008D84DF6C025AB4240D0B3F5614F49
+:10272000D0D1254B15E0B3F5E13FCBD1234B10E0E1
+:10273000B3F5612F36D007D8214DAB4234D0B3F575
+:10274000E12FBFD11F4B04E01F4DAB42BAD14FF078
+:1027500080531E4D34432243C5F82435C5F86C25FB
+:10276000C36803C983E80300002070BD184BF0E77D
+:10277000184BEEE74FF49E23EBE74FF4A033E8E766
+:102780004FF41C33E5E74FF41D23E2E7124BE0E77B
+:102790004FF46C13DDE7114BDBE7114BD9E74FF436
+:1027A0006503D6E70F4BD4E74FF08063D1E700BF56
+:1027B00000B0130000A04E0000F0EB0000E0D701D5
+:1027C00090D0030000705F0740420F0000200040DF
+:1027D00000509D000050270000F0750000B0AF03CE
+:1027E00000903A0100D0BE0EF8B50E4602F0DEFEB3
+:1027F0001B4D88BB64240127BFF35B8F55E8003F66
+:10280000002B03D145E80072002AF7D1BFF35B8F9C
+:1028100007D021200021013C01F050F914F0FF0401
+:10282000EAD1104A0023136012680F4A13700F4B4D
+:1028300001221A604FF47A74C3F81465FFF718FE8A
+:1028400020B9012002F04DFC013CF7D1084B0122D8
+:102850001A6000232B60F8BD01232B60E1E700BF65
+:10286000E84900201C210040BB4E00200820004009
+:102870000C20004000F01F0140090128044B4FF0DC
+:10288000010218BF4FF0A0438A40C3F808257047E3
+:10289000000300502DE9F0410B4E0C4FDFF8308063
+:1028A0000024E5B2531B002B03DDFFF7E1FD0134EB
+:1028B00010B92846BDE8F0810023336030683B70D2
+:1028C0004B5DC8F81C35ECE71C210040BB4E0020D6
+:1028D00000200040F8B51E4C00260546C4F80065EF
+:1028E0000620FFF7C7FF4FF0A047062002F0D4FAFA
+:1028F0000823C7F82067C4F814350623C4F80C353C
+:102900000520FFF7B7FF052002F0C6FA0523C7F838
+:102910001C67C4F808350723E968C4F81035284651
+:10292000FFF7AAFE054680B90423C4F80035094B19
+:1029300018601B68084B01212160024602201970B3
+:10294000F1F78EFD0220F1F759FD2846F8BD00BFD2
+:102950000020004008210040BB4E0020F0B54B791C
+:10296000012B29D0032B24D110268B79032B20D1C6
+:10297000CC7924B1012C1CD143681B79CBB10A79E5
+:1029800012B1022A15D10E220B684568B3F5164F15
+:102990002D6865D02DD8B3F5165F64D016D8B3F581
+:1029A000966F62D00AD8B3F5967F61D0B3F5167FE3
+:1029B00061D06FF0220052E00026D6E7B3F5166F23
+:1029C0005CD0B3F5965FF4D1374B3CE0B3F5E14F03
+:1029D00057D007D8B3F5615F55D0B3F5964FE8D11E
+:1029E000324B30E047F61227BB42E2D14FF40003EE
+:1029F00029E0B3F5613F48D013D8B3F5963F47D0EF
+:102A000009D84DF6C027BB4244D0B3F5614FD0D1B1
+:102A10004FF46B0317E0B3F5E13FCAD14FF0EB730E
+:102A200011E0B3F5612F38D008D8214FBB4237D021
+:102A3000B3F5E12FBDD14FF0E86304E01D4FBB4279
+:102A4000B7D14FF08053C5F82435C36803C9344368
+:102A500022430433C5F86C2583E803000020F0BD51
+:102A60004FF41D03EFE7144BEDE74FF49E23EAE725
+:102A70004FF4A033E7E74FF41C33E4E74FF41D2392
+:102A8000E1E70E4BDFE70E4BDDE74FF06C73DAE763
+:102A90000C4BD8E74FF46503D5E74FF07063D2E7EE
+:102AA0004FF08063CFE700BF00B0130000A04E00DE
+:102AB00090D0030040420F000050270000C0750076
+:102AC00000F03A0000903A0100F01F02400901288E
+:102AD000044B02F5E07218BF4FF0A043032143F806
+:102AE000221070470003005000F01F014009012828
+:102AF000044B4FF0010218BF4FF0A0438A40C3F8C7
+:102B00000825704700030050F8B501210546002252
+:102B10002820F1F7A5FC2820F1F770FC6B68EE681F
+:102B20001C680027C4F8007522203560FFF7DCFF21
+:102B30002220FFF7C9FF164BE968C3F80477222368
+:102B4000C4F80C352123C4F814354FF0FF33C4F812
+:102B500008350431C4F810352846FFF7FFFEB0B938
+:102B60000823C4F80035F268C4F81001D4F8103115
+:102B7000926806F11403C4F834350123C4F83835DB
+:102B80002360C4F84425C4F84805A360E360F8BD99
+:102B9000000300504FF02003EFF3118283F31188FC
+:102BA000BFF36F8F084B196859B10849D1F8080570
+:102BB000002119601B68C0B282F31188BFF36F8FC8
+:102BC00070476FF00A00F7E700D1004000D00040E6
+:102BD0002DE9F041044690F802C0C6784FF020037A
+:102BE000EFF3118583F31188BFF36F8F90F800E046
+:102BF00090F80180ACEB0E0C0CEA060C62458CBF21
+:102C00001FFA8CF010460EEB000232407346227021
+:102C100085F31188BFF36F8F421E92B268B1013203
+:102C20008F18E51801336D7901F8015BB94203EAA9
+:102C30000603F6D192B2ACEB020CC6450DD14FF0B3
+:102C40002002EFF3118382F31188BFF36F8F227894
+:102C5000627083F31188BFF36F8F2379634522BFBE
+:102C6000024B01221A60BDE8F08100BF00D0004095
+:102C7000DB432DE9F04713F001050E46144604D05E
+:102C80002148FFF7A5FFBDE8F087002A33D04FF0B9
+:102C90002003EFF3118883F31188BFF36F8F0D20AA
+:102CA000F1F7D0FB07460D20F1F7B8FB88F3118848
+:102CB000BFF36F8F154A15601368154B012119601A
+:102CC00014494FF40053C1F88031254691468A4695
+:102CD0009846D9F8003083B1FFF75CFF031ECAF8AD
+:102CE0008081F6DB013DADB27355002DF1D117B1F6
+:102CF0000D20F1F783FB2046C5E7BFF34F8F20BFC0
+:102D000040BF20BFE5E700BF1C4A002000D10040C3
+:102D100000D0004000E100E02DE9F843134F0D46DC
+:102D2000144607F1450807F1180914B92046BDE813
+:102D3000F8834FF0FF334FF0FF32384600F00AFFC0
+:102D4000224629464046FFF743FF0646384600F034
+:102D5000DBFE3EB94FF0FF324FF0FF33484600F044
+:102D6000F9FEE2E7A41BA4B23544DEE7EC490020FB
+:102D700038B5194C01221146204602F007FC012209
+:102D8000002104F1180002F001FC40F20743A4F80E
+:102D900048304FF0706323630C2384F834300025EF
+:102DA0000E4B84F84550A4F84650D3F8042542F061
+:102DB0000102C3F804250A4A012115601268C3F80C
+:102DC00004132A4619600D20F1F74AFB0D20F1F794
+:102DD00015FB284638BD00BFEC49002000D000405C
+:102DE00000D1004010B5FFF7D5FE002820DB174BBF
+:102DF00093F8322093F8311093F83340511A34EAA3
+:102E00000101C0B20DD193F8472093F8461093F812
+:102E10004840511A34EA01010BD10D4B01221A60CE
+:102E20000EE099180132224081F8350083F83220F3
+:102E300010BD99180132224081F84A0083F84720DA
+:102E40000448BDE8104000F05FBE00BFEC49002020
+:102E500004D00040044A0020034B1868A0F1080386
+:102E600058425841704700BF30010010064B1B68A4
+:102E7000082B06D1054B1B68032B02D8044AD05CF3
+:102E800070470020704700BF30010010340100106F
+:102E90005066010008B5FFF7DFFF40B14FF08043F7
+:102EA0000022C3F80C21C3F81021C3F83825FFF71E
+:102EB000D3FF002846D04FF08052584BD2F804146C
+:102EC000C3F82015D2F80814C3F82415D2F80C144E
+:102ED000C3F82815D2F81014C3F82C15D2F814141E
+:102EE000C3F83015D2F81814C3F83415D2F81C14EE
+:102EF000C3F84015D2F82014C3F84415D2F82414AE
+:102F0000C3F84815D2F82814C3F84C15D2F82C147D
+:102F1000C3F85015D2F83014C3F85415D2F834144D
+:102F2000C3F86015D2F83814C3F86415D2F83C140D
+:102F3000C3F86815D2F84014C3F86C15D2F84424CD
+:102F4000C3F87025FFF792FF10B1354B354A1A6070
+:102F5000FFF78CFF18B1344BFB22C3F81825FFF79D
+:102F600085FF48B13149324B0A681B6822F00F02D5
+:102F700003F00F0313430B60FFF778FF18B12D4BDD
+:102F80004FF400721A60FFF767FF48B14FF08043BB
+:102F9000D3F80024D20744BF6FF00102C3F8002425
+:102FA0004FF01023D3F80022002A03DBD3F80432B9
+:102FB000002B2FDA204B0122C3F80425D3F800247C
+:102FC000002AFBD04FF010221221C2F80012D3F8D1
+:102FD0000024002AFBD04FF010231222C3F8042251
+:102FE000154B1A46D3F800140029FBD00021C3F872
+:102FF0000415D2F80034002BFBD0BFF34F8F0F49DC
+:103000000F4BCA6802F4E0621343CB60BFF34F8FEB
+:1030100000BFFDE70B4B0C4A1A6008BD00C0004022
+:103020008C5600404881030000F00040E40E004050
+:10303000580200104096024000E0014000ED00E020
+:103040000400FA05040600200090D003044B1A790E
+:1030500022B9012218609A800248704702487047DE
+:10306000404A00200000AD0B0C00AD0B10B1012850
+:1030700020D070474FF08043D3F81824D3F81814A9
+:1030800011F4803F194611D002F00302012A0DD13C
+:10309000C3F818250C4B00221A601B684FF08043C0
+:1030A0000222C3F8042301229A6070470023C1F86A
+:1030B0001835EFE7054B00221A601B684FF080437C
+:1030C000C3F8040318607047040100400001004089
+:1030D00038B510B1012818D038BD4FF08043022216
+:1030E000C3F80823184A10601268184A01211160B9
+:1030F00042F210751C46D4F81834DB03ECD50120DD
+:1031000001F0EFFF013DF6D1E6E7114B4FF08044AF
+:103110000022C4F808031A601B680E4B42F21075B7
+:103120001860D4F80C34D4F80C24D20303F0010353
+:1031300005D523B1012001F0D4FF013DF1D1064BAB
+:1031400000225A71C8E700BF040100400C00004093
+:103150000001004004000040404A0020164B1A685D
+:1031600010B56AB100221A601B684FF0804301223B
+:10317000C3F80823114B587910B95A711B68984746
+:103180000F4B1A6872B100221A601B684FF080431F
+:10319000D3F81824D3F81814920704D10122C3F8E5
+:1031A00018259A6010BD0222C3F80823034BBDE81E
+:1031B00010401B680120184700010040404A0020D1
+:1031C00004010040F8B5104B104F53F82050013067
+:1031D00053F82060AE4200D8F8BDD5E9003420464F
+:1031E000984770B16CB1E41B24116109084A04F0DE
+:1031F0001F0452F82100012303FA04F4044342F8A7
+:1032000021400835E6E700BFD06501001406002024
+:1032100094060020084BC01A0011084B420900F028
+:103220001F0053F82220012303FA00F010420CBFC4
+:1032300018460020704700BF1406002094060020A6
+:10324000114970B5114C05460E468C4204D10F4C05
+:10325000B4420AD1002414E02046FFF7DBFF10B18E
+:103260002368AB420DD01034EFE72046FFF7D2FFC2
+:1032700008B91034ECE72168284601F0F1FB00287A
+:10328000F7D1204670BD00BF940600201406002030
+:1032900008B50B4D4FF02002EFF3118382F3118834
+:1032A000BFF36F8F02F026FA012102280446D8BF2F
+:1032B000084602F02FFA2C62F1F74EF9EAE700BF58
+:1032C000484A00200248034A0021121A01F00FBCAC
+:1032D00088070020E04E002008B50648064A074946
+:1032E000121A01F0D9FBBDE80840054A0549064815
+:1032F00001F0D2BB00000020880700206C660100AE
+:10330000000000006C6601000000002008B5094BB9
+:10331000012202201A70FFF755FF0320FFF752FF2A
+:1033200000F0B8FCF0F726FC034A137B23F00103FE
+:10333000137308BDDC4E0020C80900202DE9804829
+:10334000DFF8F490A7B089F30888334D334E6B69EA
+:10335000DFF8E8A0324F43F4007300246B61E023F0
+:1033600085F82230EC772C766C76AC766B6A43F479
+:10337000E0236B62F1F748FAF1F7E8F84FF0FF331A
+:10338000AB62EB62274D40F20113ADF8243006AB7F
+:10339000AB602046CDE92044FFF714FF0120FFF782
+:1033A00011FF4FF0010B00F02FFB1F4B6E621F4906
+:1033B00005934FF480625346CDE9034BCDE90144B8
+:1033C0000094304600F008FC737B804623F0040331
+:1033D0003046737302F04AF80F23CDE902431449D3
+:1033E000144B4FF4A072CDE904B4CDE90044384643
+:1033F00000F0F2FB7B7BEF6023F004037B7305F1AD
+:103400001803C5E906332C75C5F8049052464146A9
+:103410003046F1F781F800BF00ED00E0C809002058
+:1034200048090020484A0020546601000057002047
+:10343000205B002091320100A06400200D330100C8
+:1034400038B5064C064DAC4201D3002038BDD4E956
+:103450000112204601F07CFE1434F4E798060020A7
+:1034600098060020F7B516461F464FF02003EFF3ED
+:10347000118583F31188BFF36F8F04689CB12368B3
+:10348000426823F003039442036008BF43600121B4
+:10349000204601F042FF044685F31188BFF36F8F89
+:1034A000204603B0F0BD56EA0703F5D000F108024C
+:1034B000CDE900672946104600F064FA0028EFD1F4
+:1034C000014B9B685C69EBE7484A002010B5084C4B
+:1034D00023685BB1F0F7F4FE03462068054A034415
+:1034E000BDE810401361002102F014B910BD00BF07
+:1034F000804A0020484A0020F8B505460C464FF0A7
+:103500002003EFF3118683F31188BFF36F8F0D4B08
+:1035100000224FF4004740F2E73000211A61E7FB38
+:1035200005014FF47A720023ECF7EAFD064B1860B0
+:10353000064B1C60FFF7CAFF86F31188BFF36F8F3D
+:10354000F8BD00BF484A0020804A00207C4A002085
+:1035500049B9EFF3058030B9054B5A6A9B689A4226
+:1035600001D0F0F7F7BE81F31188BFF36F8F70477A
+:10357000484A00204FF02003EFF3118183F31188B4
+:10358000BFF36F8F044B9A68D37B013BD37381F3F6
+:103590001188BFF36F8F7047484A0020094B03F131
+:1035A0002802824205D19B688B4202D14B7BDB060D
+:1035B00006D1D1E9003213605A600023C1E900331B
+:1035C000704700BF484A002070B5104C064604F111
+:1035D000280001F041FFA368597B0546880644BFD7
+:1035E00041F00801597305B9E5684EB95A7BD20616
+:1035F00006D1AA6922B9DA897F2A01D9636270BD2E
+:10360000AB4201D0FFF762FF6562F8E7484A00204D
+:1036100010B54FF02003EFF3118483F31188BFF34B
+:103620006F8F084B9A68D37B0133D3730020FFF769
+:10363000CBFF84F31188BFF36F8FBDE8104001F01A
+:10364000DFBE00BF484A002070B4437BDB062AD1AE
+:10365000836943BB154A114651F8284F8C4218BF65
+:103660002346002BD46A38BF0023B3B190F90E6013
+:1036700093F90E50AE4203DBA3420ED01B68F4E771
+:103680005A68C0E9003210605860437B63F07F03E2
+:10369000437370BC0020FFF797BFC0E90014D36AE2
+:1036A0001860D062F1E770BC704700BF484A002044
+:1036B00010B54FF02002EFF3118482F31188BFF3AD
+:1036C0006F8F427B510704D484F31188BFF36F8F4F
+:1036D00010BD22F004024273FFF7B6FF21460248F4
+:1036E000BDE81040FFF734BFDD4E002070B590F903
+:1036F0000D30002B014602DA1748FFF74FFF174A3B
+:103700001046D46A50F8283F834208BF0023002B9C
+:1037100038BF0023D3B191F90E6093F90E50AE4239
+:1037200003DBA34212D01B68F4E75868C1E90030FC
+:10373000016059604B7B906863F07F034B73431AC1
+:103740005842BDE870405841FFF73EBFC1E9000450
+:10375000D36A1960D162EDE7704A0020484A002020
+:1037600070B501464FF02003EFF3118483F3118805
+:10377000BFF36F8F164B174A98681568A8421D460D
+:1037800006D1FFF7A3FE84F31188BFF36F8F70BDDE
+:1037900000261660104A1268BAB1C2897F2A14D86E
+:1037A000427BD20611D10D4A90F90E601268964202
+:1037B0000BDB0B4A904208D01A698A4202DCFFF701
+:1037C00095FFDEE7521A1A61DDE700232B61DAE785
+:1037D000484A0020784A0020804A00207C4A002085
+:1037E0004809002070B50446183001F06DFF4FF015
+:1037F0002003EFF3118683F31188BFF36F8F94F9E1
+:103800000D30002B07DA0F482146FFF7C7FE637B18
+:1038100003F07F0363730C4D637BA86843F01003D0
+:103820006373031B58425841FFF7CEFE86F311889D
+:10383000BFF36F8FAB68A34203D1BDE8704001F0C6
+:10384000DFBD70BD704A0020484A0020036E2DE99C
+:10385000F041044603B1984704F1180001F034FF29
+:103860004FF02003EFF3118683F31188BFF36F8FBE
+:10387000637BD80623D1A2690ABB190607D51F4866
+:103880002146FFF78BFE637B03F07F0363731C4BC2
+:103890009868021B50425041FFF796FE637B43F04D
+:1038A0000803637304F130080027256B454500D0F9
+:1038B00095B986F31188BFF36F8FBDE8F0819B0740
+:1038C000ECD5A0682146FFF769FE637B23F0020375
+:1038D00063730023A360E1E705F1180001F0F4FE33
+:1038E000A8682946FFF75AFE6B7BAF6023F00203FE
+:1038F0006B73EF672846FFF7A7FED6E7704A0020F4
+:10390000484A002008B590F90D30002B014606DA30
+:103910000748FFF743FE4B7B03F07F034B73054BD8
+:103920009868431A58425841BDE80840FFF74CBE1A
+:10393000704A0020484A00202DE9F041064614460E
+:103940001D464FF02003EFF3118783F31188BFF377
+:103950006F8F01F0BBFD87F31188BFF36F8F6B1C76
+:1039600008BFB4F1FF3F08D022462B4606F11800ED
+:103970000349BDE8F04100F09DBABDE8F08100BF09
+:103980008D54010010B5074B9868074B0C46186022
+:103990001146DDE90223FFF7CFFF2046BDE81040C6
+:1039A000F0F7D8BC484A0020784A0020F8B5054610
+:1039B00001F0CAFE2C184FF02003EFF3118783F3B8
+:1039C0001188BFF36F8F0D4E0D4BB0681860FFF775
+:1039D00099FFB0680B492A46EB17183000F06AFAD5
+:1039E000B268537B43F0100353733846F0F7B2FCD0
+:1039F00001F0AAFE201A20EAE070F8BD484A002033
+:103A0000784A00208D540100044B002103F1280264
+:103A1000C3E90A220846FFF76FBD00BF484A0020ED
+:103A2000F8B5244C244BA2689A4230D04FF02003C2
+:103A3000EFF3118583F31188BFF36F8FA16804F151
+:103A40002800FFF7ABFDA36AA268E16A834208BFC2
+:103A50000023002B38BF00232BB392F90E7093F98B
+:103A60000E60B74203DB8B421DD01B68F4E7596838
+:103A7000C2E900310A605A60537B63F07F035373DD
+:103A80000120FFF7A1FD85F31188BFF36F8F4FF081
+:103A90002003EFF3118083F31188BFF36F8FBDE82C
+:103AA000F840F0F757BCC2E90001E36A1A60E2622D
+:103AB000E2E700BF484A0020480900200B460133D6
+:103AC00008BFB0F1FF3F10B506D10B4B9868FFF768
+:103AD00089FE4FF0FF3010BD044648B9FFF7A0FF44
+:103AE0004FF47A7084FB0034D80B40EA4440F2E78C
+:103AF000FFF75CFF0446F3E7484A0020014B986853
+:103B0000704700BF484A002038B504464FF02003F4
+:103B1000EFF3118583F31188BFF36F8F01F001FD7F
+:103B200048B10022C26701F0A1FC29460848BDE85F
+:103B30003840FFF70DBDD4E902329A4218BF013375
+:103B4000A360022104F1100001F02EFFEDE700BF99
+:103B5000DD4E002037B514461D464FF02003EFF32D
+:103B6000118183F31188BFF36F8F836843B1013BE9
+:103B7000836081F31188BFF36F8F002003B030BDE5
+:103B800054EA050306D181F31188BFF36F8F6FF0FC
+:103B90000F00F3E70246CDE900450248FFF7F2FEC9
+:103BA000ECE700BFDD4E002010B5084C08494FF08F
+:103BB000FF334FF40072204600F0CAF8054904F1C3
+:103BC000180001F0FBFC002010BD00BF480A0020D7
+:103BD000A0640020596601002DE9FF4100F1300585
+:103BE000C0E90C550E9D0573042545730F460D9DC8
+:103BF0008573D61D00250C9AC57326F0070620375D
+:103C0000C0E90655C0E91A76056706F12008029258
+:103C10000B9A019288440A9A009242460446F0F7B1
+:103C200045FC054B9B68C4E9175503B15B6F63679F
+:103C3000404604B0BDE8F081484A0020F0B587B0A6
+:103C400000250595109D04950F9D03950E9D0295E9
+:103C5000DDE912670D9D01950C9D00950446FFF767
+:103C6000BBFF7B1C08BFB6F1FF3F05D056EA070338
+:103C700005D12046FFF71CFD204607B0F0BD0449E2
+:103C800032463B4604F1180000F014F9F4E700BF97
+:103C90008D5401002DE9F0472A4E2B4D86B0B046D9
+:103CA000B54205F1300410D3FFF764FC264CDFF871
+:103CB0009CA04FF4004940F2E7360027444521D349
+:103CC00006B0BDE8F047FFF7A3BC54F8043C0593E9
+:103CD00054F8103C049354F8143C039354F8183CE3
+:103CE000029354F81C3C019354F8203C009354E98F
+:103CF0000A2354E90C01FFF76FFF54F8303CDD65EF
+:103D00002546CDE7636A5A1C0DD023EAE37330469B
+:103D10003946C9FB0301B94208BFB042256804D146
+:103D20002846FFF7C5FC3034C8E74FF47A72002309
+:103D3000ECF7E6F902460B4605F11800514600F093
+:103D4000B9F8F0E798060020980600208D5401008D
+:103D50002DE9F041044688B00D4616461F4601F095
+:103D6000E8FA04F1180800220023CDE90623CDE982
+:103D70000372CDE90122074B0094324629464046A2
+:103D8000FFF75CFF0449404608B0BDE8F04101F090
+:103D900015BC00BF45440100626601002DE9F843EF
+:103DA00006460D46904699464FF02003EFF31187E3
+:103DB00083F31188BFF36F8F8B6A7BB1834228D165
+:103DC000284601F01BFC10F1450F044608D00028DE
+:103DD00007DA87F31188BFF36F8F0FE00028EFD069
+:103DE000002458EA0903AE620BD187F31188BFF3B0
+:103DF0006F8F2946304601F0E4FB00242046BDE8E1
+:103E0000F883054942464B4605F1100000F052F890
+:103E1000DFE76FF02F04DCE7F3550100034B1B686D
+:103E20000BB9F0F74DBA0020704700BF844A00205C
+:103E300030B5036868B10A4A5268904209D043B16C
+:103E4000D3E90421D0E90445121945EB0101C3E986
+:103E50000421426813605A600023C0E9003330BD7A
+:103E60000806002038B5114B1C689C4208BF00248E
+:103E7000FFF7D4FF0546ACB1D4E90401401B61EB68
+:103E8000E571B0F1004F71F100030BDA002871F118
+:103E9000000300DA0020064B1B6913B19842A8BF4B
+:103EA000184638BD6FF00040F5E700BF0806002057
+:103EB000484A00202DE9F74F019119464B1C08BFD5
+:103EC000B2F1FF3F82466CD0541C6FF0010341F108
+:103ED00000054FF0FF3BB3EB04086BEB0509B8F1AD
+:103EE000000F79F100030FDBFFF798FF334AD2E9A7
+:103EF000001C6FF001035B1A6BEB0C021E1B62EBE4
+:103F00000507341A67EBE075019BCAF808304FF0DB
+:103F10002003EFF3118683F31188BFF36F8FFFF750
+:103F20007DFF012C75F10003254BB8BF01241A68F1
+:103F3000B8BF0025241845EBE0759A42CAE904454C
+:103F400001D05F6852B95A68CAF804205A68CAF8A2
+:103F50000030C2F800A0C3F804A014E0D2E904893C
+:103F6000DAE90445444575EB09011DDAB8EB0400B4
+:103F700069EB0501C2E904015168CAE90021C1F8F1
+:103F800000A0C2F804A01A689A4206D0924504D153
+:103F9000FFF768FF0021F0F731F986F31188BFF3CE
+:103FA0006F8F03B0BDE8F08FB4EB080065EB09013B
+:103FB000BA42CAE90401C6D01268C3E7E00A002089
+:103FC000080600202DE9F74F0646FFF7C9FB4FF022
+:103FD0002003EFF3118483F31188BFF36F8F2C4D0F
+:103FE000DFF8B0A0DFF8B0B02E605146D5F800C0C1
+:103FF000DBF800006246D3175845DAE90089CDE9BD
+:1040000000230DD060B1D0E90467B445BB411EDA8E
+:10401000009BB6EB030C019B67EB0306C0E904C6EB
+:10402000009B13EB0802019B4FF0000643EB0903D2
+:10403000C1E900232E60FFF715FF3146F0F7DEF8E7
+:1040400084F31188BFF36F8F03B0BDE8F08F18EBD6
+:1040500006084FF000024FF0000349EBE679C0E993
+:104060000423ACEB0606CAE900892E60FFF7E0FEE8
+:1040700084F31188BFF36F8F836898474FF0200354
+:10408000EFF3118483F31188BFF36F8F0149ADE71C
+:10409000844A0020E00A00200806002010B54FF0F6
+:1040A0002003EFF3118483F31188BFF36F8FF0F7D0
+:1040B00007F9064BD3E90023121843F1000384F3F8
+:1040C0001188BFF36F8F1046194610BDE00A00201B
+:1040D0002DE9F04389B01F4601238DF81430294B98
+:1040E0009B680693284B079352EA070316460CBFBA
+:1040F0000123002305AA054601F0F5FB80464FF099
+:104100002003EFF3118983F31188BFF36F8F9DF8BC
+:10411000143003F0FF0463B901464A46284601F013
+:1041200042FB89F31188BFF36F8F204609B0BDE8C9
+:10413000F08300238DF8143056EA070306D189F383
+:104140001188BFF36F8F6FF00A04EEE703AACDE981
+:10415000006749460D48CDE90322FFF713FC0446EA
+:104160004FF02003EFF3118683F31188BFF36F8FB5
+:1041700032464146284601F016FB86F31188BFF30C
+:104180006F8FD2E7484A002033580100DD4E0020EF
+:1041900038B503464FF02002EFF3118582F3118802
+:1041A000BFF36F8FC160012181600068834206D137
+:1041B00085F31188BFF36F8F0024204638BDD0E906
+:1041C000003213605A600023C0E9003301F016FB8F
+:1041D000294604460148FFF7BBF9EEE7DD4E002013
+:1041E00010B5044601F0E2F940B9054B9B68586FE1
+:1041F00020B12146BDE8104001F0E4BB002010BD15
+:10420000484A002083689B6903B1184718467047E5
+:1042100083681B6A03B11847704783685B6A03B100
+:104220001847184670478368DB6A03B11847704720
+:1042300083685B681847034640B1426802F0030296
+:10424000022A06D0032A04D0012A05D06FF01500F7
+:1042500070471A68002AF9D00020986070474268B9
+:1042600002F00302022A10B5034681600AD0032A35
+:104270000BD10468002000225A6008B1FFF788FFC4
+:10428000204610BD00680024F5E700242046F2E730
+:10429000038B13F0070305D10368002B0CBF00202C
+:1042A00003207047022B05D1438B002B14BF002045
+:1042B00004207047012B05D10368002B0CBF0020A0
+:1042C00005207047002070472DE9F0410D46074654
+:1042D0001946281D90461E46FFF7C1FF044638B117
+:1042E0003346424629463846A446BDE8F041604779
+:1042F000BDE8F08110B44FF02004EFF3118284F395
+:104300001188BFF36F8F416110BC0121EFF772BCC0
+:1043100010B50C4640B139B1081DFFF78CFF28B924
+:10432000A36833F0030301D06FF0150010BD38B55A
+:104330000C46054658B151B10B6843B14B6833B1D7
+:104340001C22002100F0D3FB2C61002038BD6FF04F
+:104350001500FBE770B504460E46FFF7D9FF051EB2
+:1043600031DB4FF02003EFF3118183F31188BFF3AA
+:104370006F8F638B208B4FF6FF75AB4200F0070207
+:104380002ED0022A0ED1013363831546012381F317
+:104390001188BFF36F8FB3B1002331462046FFF77A
+:1043A00093FF10E0830701D0062A0ED1002333606B
+:1043B000636893B9C4E90066154662B90A462046A7
+:1043C0000221EFF717FC284670BD052A0CBF6FF0DD
+:1043D00022056FF004050023D9E71E606660EBE755
+:1043E0006FF00A05F7E710B54FF02003EFF31182E5
+:1043F00083F31188BFF36F8F048B04F00704022C42
+:104400000AD0012C0CBF6FF004006FF0220082F381
+:104410001188BFF36F8F08E0438B013B9BB243834E
+:1044200023B92146EFF7E6FB204610BD2046EEE714
+:10443000044608B5084611461A46A047FFF75EFB3A
+:10444000F0F704FA10B504464FF0FF334FF0FF3297
+:104450002046FFF707F803460028F5D008334268E6
+:10446000BFF35B8F53E8001F21F0010C43E800CE3F
+:10447000BEF1000FF6D1BFF35B8FCB0700D590479D
+:10448000FFF7CEFAE0E7836800EBC101B3F5004F18
+:104490002CBF51F8220031F81200704700EBC10127
+:1044A0008068B0F5004F2CBF41F8223021F812305F
+:1044B000704708B50122FFF7E6FF400808BD836892
+:1044C000B3F5004F00EBC10108D34B681AB143F0BC
+:1044D00001034B60704723F00103FAE74B881AB1E0
+:1044E00043F001034B80704723F00103FAE75300C8
+:1044F0000122FFF7D3BF80680131B0F5004F2CBF18
+:1045000002200120081AB0FA80F0C0F11F007047A5
+:104510002DE9F041164604460F46FFF7CAFF314623
+:1045200005462046FFF7C5FF05442A463946204682
+:10453000FFF7DDFF31462046FFF7BBFF2B46311862
+:1045400000222046BDE8F041FFF7A8BF2DE9F04169
+:10455000144605460E46FFF7ACFFA4EB0608371BD2
+:104560000744424631462846FFF7C1FF3A462146F6
+:104570002846FFF7BCFF4346002221462846FFF7A6
+:104580008DFF21462846FFF794FF3B462118002265
+:104590002846BDE8F041FFF781BF2DE9F0411746FD
+:1045A00003220E460446FFF76EFF8642054607F1DA
+:1045B00004080BD1012303FA07F7E36823EA070392
+:1045C000E360002344F82830BDE8F0813146022240
+:1045D0002046FFF758FF2B460646014644F8285070
+:1045E00020460322FFF75AFF33462946204602227F
+:1045F000BDE8F041FFF752BF38B504460D46FFF75E
+:1046000058FFA368B3F5004F014601D3012809D034
+:104610002046FFF770FF294602462046BDE8384095
+:10462000FFF7BBBF38BD2DE9F04704468846FFF7CA
+:1046300062FFA16805462046FFF75DFFA84203DA46
+:1046400000263046BDE8F08704EB850ADAF81090C2
+:10465000B9F1000F19D00327DAF81060204631466F
+:10466000FFF727FF404505D32A4631462046FFF78E
+:1046700094FFE6E7032231462046FFF704FF013F9F
+:10468000CAF8100001D08145E6D1E36801354FF04A
+:10469000FF32AA401A40D3D092FAA2F2B2FA82F2C2
+:1046A000131D54F82360E0E72DE9F04104460D4660
+:1046B000FFF7FFFEA368B3F5004F014601D30128C1
+:1046C00035D02046FFF717FF04EB800216699EB92C
+:1046D000012303FA00F0E3680343E3602946156110
+:1046E0002B4602222046FFF7D9FE03222946204608
+:1046F000BDE8F041FFF7D2BE022231462046FFF767
+:10470000C2FE02220346074629462046FFF7C6FEA0
+:104710003346032229462046FFF7C0FE03223946CE
+:104720002B462046FFF7BAFE02223146DFE7BDE8FE
+:10473000F081F8B5002950D00568AB68B3F5004F9B
+:104740002CBF082404240C1B641B48BF0734E4104E
+:10475000002221462846FFF7B2FE2146FFF7A9FEB8
+:104760002618012231462846FFF78DFEC3070CD4D8
+:1047700031462846FFF740FF21462846FFF799FEBD
+:10478000214622182846FFF7C3FE0022214628466C
+:10479000FFF779FE271A012239462846FFF773FEF4
+:1047A00010F0010613D139462846FFF725FF2146B0
+:1047B00032462846FFF767FE2246211A2846FFF7B1
+:1047C000A7FE214632462846FFF75DFE241A214601
+:1047D0002846BDE8F840FFF767BFF8BD70B509B9D6
+:1047E000002070BD0568AB68B3F5004F2CBF0822F0
+:1047F0000422CC1D1444E40821462846FFF713FF89
+:1048000006460028ECD001462846FFF752FEA0429B
+:1048100009D93444314628462246FFF797FE2146FF
+:104820002846FFF741FF284601223146FFF747FEA1
+:10483000AB68B3F5004F2CBF0820042000EBC60086
+:104840002844CEE7B2F5802FF8B52CBF0825042503
+:10485000551BCC1D0D4424F0070425F0070500224C
+:1048600000232D1B0460ED08C4E900230023294622
+:10487000A560E3602046FFF73EFE86001B36411C24
+:10488000F60804F1100218468B4229DB3246204616
+:104890000021FFF72CFEAF1B204601220021FFF76D
+:1048A0000EFE3A463146FFF722FE33463146204699
+:1048B0000022FFF7F3FD294620460022FFF717FEEE
+:1048C0003B46294620460022FFF7E8FD29462046C0
+:1048D0000122FFF7F4FD3146BDE8F840FFF7E4BEE2
+:1048E00042F8040B0133CFE77047C268CBB20C210A
+:1048F00003FB0121086C00F0070070474FF0200314
+:10490000EFF3118283F31188BFF36F8F036813F005
+:10491000C00301D08B4207D101230360002082F342
+:104920001188BFF36F8F70474FF0FF30F7E710B576
+:104930004FF02003EFF3118283F31188BFF36F8FE1
+:10494000036803F00704012C06D10160002082F304
+:104950001188BFF36F8F10BD03F0C0038B4214BFEB
+:104960004FF0FF306FF00F00F1E74FF02003EFF34F
+:10497000118283F31188BFF36F8F036803F0C003C4
+:1049800043F00203036082F31188BFF36F8F704717
+:10499000C06810B4CBB21C2403FB0400002110BC7F
+:1049A00010471046FFF7B0B80020FEF791BB00207B
+:1049B000FEF75CBB38B5CCB20C2305466343C06838
+:1049C000403380211844FFF799FF002805DB696810
+:1049D00001EBC40463689847002038BD2DE9F0411D
+:1049E000CDB24FF00C08C46808FB05F8064608F184
+:1049F0004000802120441746FFF799FF002809DB7B
+:104A000044447B68A363BB68E363736853F8353041
+:104A100098470020BDE8F08170477047EFF76ABC07
+:104A200008B5FFF7FBFF002008BD0021012000F0C2
+:104A300000B800F070BB0146006800F06CBB08B520
+:104A4000EFF7A2FDBDE80840EFF7E6BE01390346E7
+:104A500011F8012F0AB91A70704703F8012BF7E714
+:104A6000431E013913F8012F11F8010F824201D1C1
+:104A7000002AF7D1101A704710B55AB101398418BD
+:104A800010F8012B11F8013FA04201D09A42F7D053
+:104A9000D01A10BD1046FCE7F0B581EA0004A50766
+:104AA00003460BD0013B0A4491421BD1F0BD002AC2
+:104AB000FCD011F8014B03F8014B013A9C07F6D1E9
+:104AC00022F003041D1F96080F19B94205D16FF09B
+:104AD000030505FB06222344E4E751F804CB45F81F
+:104AE00004CFF2E711F8014B03F8014FDCE770B592
+:104AF000C9B203469C0711D141EA012422F0030602
+:104B000044EA04451E449408B3420DD16FF00305F6
+:104B100005FB04221A44934209D170BD002AFCD03F
+:104B200003F8011B013AE5E743F8045BECE703F8FF
+:104B3000011BF0E7FEF7AEB930B585B00446154667
+:104B400068460322FFF7A8FF0D2200210DF10300A4
+:104B5000FFF7CDFF20466A466946F3F78DFC044611
+:104B600020B9032269462846FFF796FF204605B084
+:104B700030BD13B50C4601AA0331FFF7DDFF48B97C
+:104B8000032201A92046FFF777FFB0FA80F0400921
+:104B900002B010BD0020FBE770B5CE1C05460C46E8
+:104BA00030460321F3F766FC60B9637903F03F03F5
+:104BB00043F040036371224631462846BDE8704009
+:104BC000FFF7BABF70BD0120EFF776BF037D012B61
+:104BD00003D183681B78052B01D0EFF7BFBF0020FE
+:104BE000704770B54FF0FF320D464FF0FF33002194
+:104BF0000646FFF7E8FF02210446083000F059F8A6
+:104C000006704570204670BD033138B5C9B20546FF
+:104C10000E20FFF7E6FF03210446083000F049F8B4
+:104C200001230370A0F80150204638BD70B5054639
+:104C30000E460F200421FFF7D4FF0421044608305C
+:104C400000F037F80122067042704580204670BDA2
+:104C50007047016A49680968FDF770B970B5064682
+:104C6000FEF700FC054628B10446637913F0010302
+:104C700002D12360284670BD002300223046FEF793
+:104C8000F1FB6379206023F0010363710446ECE7D4
+:104C900083680B440360704710B40A46146814B963
+:104CA00010BC00F05CBB537943F001035371224602
+:104CB000F4E78388026819448180D018704730B4C3
+:104CC00084880568A3188380281930BCFFF7E4BEE8
+:104CD0000268531E036083880133838002F8011C3D
+:104CE00070478288521A0346828000680844186020
+:104CF0007047034600689A88521A01449A801960E6
+:104D000070478388C288D21A03688068181A101AFC
+:104D1000704770B50E460168154689B10C68002CC5
+:104D200038BF00248A682A4002D04B683046984732
+:104D300034B12368002B38BF002321461C46F1E71D
+:104D400070BD43685B68D3F810350B600020704776
+:104D500043685B68D3F8040542400A404240C3F808
+:104D600004250020704743685B680020C3F80815DD
+:104D7000704743685B680020C3F80C1570474368B0
+:104D80005A68D2F804354B40C2F804350020704709
+:104D9000C368586830B558B10024814213D10868FF
+:104DA0005CB99C685860A14200D1986000200860FE
+:104DB00072B9002030BD2846EFE720609868814234
+:104DC00008BF9C60F2E705680446002DF3D13AB1B4
+:104DD0005A680A60986859600028EAD19960E9E742
+:104DE0006FF01500E6E7C368D3E905212DE9F0412E
+:104DF000DC68D0F804801B690A4324EA0204D8F86E
+:104E00000420D2F810555D4024EA0505012600274C
+:104E100014B92846BDE8F08134420AD098F8083029
+:104E200007F01F00002140EA4310FDF7BFF924EA14
+:104E3000060401377600EBE72DE9F041C768D0F8AA
+:104E40000480FC68D7E90532134324EA03040126F1
+:104E500000250CB9BDE8F081264210D0396998F8D8
+:104E60000830E94001F00101C1F1030105F01F0024
+:104E7000C9B240EA4310FDF799F924EA0604013566
+:104E80007600E6E7C2680B4692E8030083E8030079
+:104E9000002070470120704700F5E0704FF0A043FC
+:104EA000032243F820207047C2684368D2681B6819
+:104EB000917B59B1D3F8201141B14FF48071C3F8FF
+:104EC00008130121D960002393737047D3F824118C
+:104ED00021B10021C3F82411D3F8243113680BB198
+:104EE000516818477047C2680B46D2E9010183E850
+:104EF00003000020704743681B68D3F88004C3F8A0
+:104F0000800470474368C2681B68D3F8100148B139
+:104F1000127D0A700020C3F81001D3F8102101227D
+:104F20001A6070474FF0FF3070470346406870B515
+:104F30000468D4F82001A0B1DD68EB6898890023EB
+:104F40009042C4F82031A8BF1046D4F82021EA6866
+:104F50008342926806DB0123C4F84425C4F848055F
+:104F6000A36070BDCE5CD6540133F0E743681B6884
+:104F70000246D3F8100148B1D2680020C3F81001EE
+:104F8000D3F81001127D0A70012018607047C268C2
+:104F90004368D2681B68002191734FF48072C3F894
+:104FA00004237047C368DB6801229A737047C368A3
+:104FB000DB689B7B4BB943681B68D3F8200128B1A1
+:104FC000D3F80403C0F30020704700207047436803
+:104FD0001B68D3F81001003818BF012070474368E0
+:104FE0001B681022C3F80423704743681B68102213
+:104FF000C3F80823704743681B684FF40072C3F876
+:105000000423704743681B684FF40072C3F80823F9
+:10501000704701207047C368DB68C3E9001270471E
+:1050200008B543681968D1F80433DB05024605D496
+:10503000D1F8040310F0100006D108BDFFF7B7FF48
+:105040000028F5D00120F8E71046FFF7C0FF003830
+:1050500018BF0120F1E72DE9F34143688DF80710EF
+:105060001C68C66800F0A2FAB8BB642506F11007F8
+:105070004FF00108BFF35B8F57E8003F002B03D1CF
+:1050800047E80082002AF7D1BFF35B8F07D02120C9
+:105090000021013DFEF712FD15F0FF05EAD10023C6
+:1050A000C4F82031D4F820310DF10703C4F8443599
+:1050B0000123C4F848354FF47A75A360D4F8203141
+:1050C00023B9012000F00DF8013DF7D10123E36081
+:1050D0000023336102B0BDE8F08101233361DEE7D4
+:1050E000004700F069BA08B50020EFF7ABF918B92E
+:1050F000BDE80840EFF782B908BD704770474FF030
+:105100002002EFF3118382F31188BFF36F8FFEE764
+:1051100008B5FFF7F4FFF8B505460E464FF020033B
+:10512000EFF3118783F31188BFF36F8FFEF7E6FC6F
+:10513000314604462846FFF7EBFF87F31188BFF39B
+:105140006F8F2046BDE8F840EFF780BBFFF765BCE6
+:1051500010B400F10C04C0E9034410BCFFF772BBAB
+:105160002DE9F04F044685B00E461046194600F072
+:10517000F1FA04F1140A05460F464FF02002EFF34E
+:10518000118382F31188BFF36F8F04F10C0B31464A
+:1051900020460393FFF722FB0290FEF77FFFDDE935
+:1051A00002233AB183F31188BFF36F8F104605B025
+:1051B000BDE8F08FB5EB000867EB0109B8F1010F0E
+:1051C00079F10001EEDBCDE900895A4619465046D7
+:1051D000FEF7D8FB4FF02002EFF3118382F3118822
+:1051E000BFF36F8FD3E738B504464FF02003EFF3DA
+:1051F000118583F31188BFF36F8FFFF79AFA04F1DB
+:105200000C0000F0B3F930B1294604F11400BDE8F8
+:105210003840FEF79DB985F31188BFF36F8F38BD15
+:10522000F8B5DDE906670068486014460D46324669
+:105230003B462146FFF794FF286044B138B956EA4F
+:1052400007030CBF6FF00B006FF00A00F8BD0020E1
+:10525000FCE7D0E90010FFF7C6BF2DE9F84304468C
+:105260000D469046994600F108064FF02003EFF3F3
+:10527000118783F31188BFF36F8F304600F051F927
+:1052800058B10024C467C0F8148000F0EFF830462D
+:105290003946FEF75DF900200CE0B9F1000F1BD094
+:1052A0000820FEF79DFF38B987F31188BFF36F8F91
+:1052B0006FF00B00BDE8F8830123C0F804800360A1
+:1052C000036803F003025DB9236813430360636856
+:1052D000206073B960600CE0C8F800904046EFE7CA
+:1052E0002B6833F0030310D1026062683AB9C4E955
+:1052F0000000042104F1100000F056FBC7E713681A
+:1053000003F0030303431360E4E7134303602B68D4
+:1053100003F0030303432B60EBE710B5044630B101
+:105320000268930703D0446809B100F063FB20468C
+:1053300010BD0023C0E9003300F10803C0E90233C7
+:1053400000F11003C0E9043370470A4600234168A6
+:10535000FFF783BF00230A461946FFF77EBF2DE9FA
+:10536000F843054616460C4691B38AB300F1080788
+:105370004FF02003EFF3118883F31188BFF36F8F91
+:10538000384600F0CEF84FF0000920B96B68CBB971
+:105390002C606E600AE04461C0F87C9000F066F812
+:1053A0002468384600F0BDF8002CEED1042105F148
+:1053B000100000F0F9FA38464146FEF7C9F800201F
+:1053C000BDE8F883196801F003010C431C60E0E7B5
+:1053D0006FF01500F4E790F90E0091F90E30984245
+:1053E000ACBF002001207047034620B9EFF30582CF
+:1053F0000AB9EEF7AFBF83F31188BFF36F8F704721
+:105400004FF02003EFF3118083F31188BFF36F8F08
+:10541000FFF7EABF014608B58068FEF7BFF84B7B8F
+:1054200023F002034B7300238B6008BD38B504469C
+:105430004FF02003EFF3118583F31188BFF36F8FD3
+:10544000FFF7E8FF85F31188BFF36F8F04F11800B1
+:10545000BDE8384000F038B903460068834203D005
+:10546000002838BF002070470020704710B54FF06B
+:105470002003EFF3118483F31188BFF36F8FFEF7DE
+:10548000E3F884F31188BFF36F8F10BD70B5044645
+:105490004FF02003EFF3118683F31188BFF36F8F72
+:1054A00050F8103CA0F1180513B12846FFF7B2FFE1
+:1054B00014F80B3C23F0140304F80B3C2846FEF7C9
+:1054C000C3F886F31188BFF36F8F70BD38B50446FB
+:1054D0000D46FEF717FA637B43F002036373C5B111
+:1054E0002B68A5609D4208BF0023002B38BF002316
+:1054F00083B194F90E1093F90E20914204DB6A688F
+:105500009A4207D01B68F3E75A68C4E90032146076
+:105510005C6038BD6B6863606B6825601C606C60A4
+:10552000F7E738B54FF02003EFF3118283F31188CA
+:10553000BFF36F8FFFF790FF044682F31188BFF32C
+:105540006F8F88B14FF02003EFF3118583F311883B
+:10555000BFF36F8FFFF75EFF85F31188BFF36F8F87
+:1055600004F1180000F0B0F8204638BD38B5054603
+:1055700000202C68A54200D004B938BD2046FFF7B2
+:1055800055FF2046FFF772FF0120F2E75AB18A4229
+:1055900009D300F11003C0E90212C0E90000C0E91C
+:1055A0000433002070476FF015007047EFF305805B
+:1055B000003818BF01207047EFF762BA6FF046005D
+:1055C000704700B501F10803BFF35B8F53E8002F6C
+:1055D00042F0010C43E800CEBEF1000FF6D1BFF35C
+:1055E0005B8FD30703D45DF804EBFFF7AEBE5DF825
+:1055F00004FBA0F110018069FFF7E3BF836A70B577
+:10560000044613B96FF0440070BDBFF35B8F83682D
+:10561000BFF35B8FDB0700F1080532D5826A1368A0
+:10562000002113B96FF01500EEE79C4224D12368E6
+:10563000566823F00300B1B9B442106000D1506045
+:10564000236803F0030323600020A062BFF35B8F95
+:1056500055E8003F23F0010345E80032002AF7D166
+:10566000BFF35B8FD0E70B6803F003030343B4423F
+:105670000B6008BF5160E3E71868194620F0030388
+:10568000CFE7103000F020F80028DDD0BAE7002383
+:10569000C0E90031C0E90433836083627047836AE4
+:1056A00010B573B14FF02003EFF3118483F3118829
+:1056B000BFF36F8FFFF7A2FF84F31188BFF36F8FE3
+:1056C00010BD6FF01500FBE710B54FF02002EFF3AF
+:1056D000118482F31188BFF36F8F03683BB1FEF72B
+:1056E000A7FB002084F31188BFF36F8F10BD6FF00C
+:1056F0001500F7E710B54FF02003EFF3118483F3A3
+:105700001188BFF36F8FFEF7ADFB84F31188BFF3F1
+:105710006F8F10BD70B504460D464FF02003EFF3B8
+:10572000118683F31188BFF36F8FFEF79BFB01286F
+:1057300005DDA04203DD29462046EEF75FFD86F336
+:105740001188BFF36F8F70BD08B5FEF7A7FC08BDC9
+:10575000FEF7A4BC38B54B1C08BFB0F1FF3F0446B0
+:105760000D4613D054EA050103D1BDE83840FEF7D9
+:1057700095BC6FF001010A1A4FF0FF3161EB050390
+:10578000002A73F1000102DB1046194638BDFEF70E
+:1057900085FC012C75F10003BCBF012400252018F5
+:1057A00045EB0101F2E7142330B503FB01010024AE
+:1057B000814200D130BD11F8073C41F80C4C03F098
+:1057C0000F03022B0AD85BB151F8143C43B151F8D6
+:1057D000105C2B605D6041E9054401E0042BF3D0CF
+:1057E00082F31188BFF36F8F4FF02003EFF3118224
+:1057F00083F31188BFF36F8F1439D9E770B58468CC
+:1058000005460E469CB1A3685BB923701846002379
+:10581000AB60EB68C3F304310E4366F31033EB6007
+:1058200004E09847002300282370F0DA70BD20467A
+:10583000EDE738B583685C68637B9A070D4615D53C
+:10584000D4E90A234FF0FF316FF001008B4208BF0B
+:10585000824214D02046FFF7E9FD082D0CBF6FF0FF
+:1058600003030023E367637BDB0601D0002038BD20
+:10587000A569002DFAD12046FFF7F8FDF6E76FF095
+:105880000A00F4E7F8B51746D0E900239042044631
+:105890000D4606D163686B6063682C601D606560AF
+:1058A000F8BD002BF6D09B6879685868FFF793FD28
+:1058B0000028EFD12668B442ECD0002E38BF002675
+:1058C000002EE7D0B36878685968FFF784FD28B1E7
+:1058D0007368C5E900631D607560E1E76368B34202
+:1058E000D8D03668ECE72DE9F84F4FF0000A0E46A5
+:1058F00014461F4683465546D046B24502DB28462D
+:10590000BDE8F88F4FF02003EFF3118983F311887E
+:10591000BFF36F8F9BF80D2002F00F02022A06D012
+:10592000042A08D0012A20D1DBF8103001E0DBF88E
+:1059300010309B6802E0DBF810301B68ABB1DBF87D
+:105940000C30CBF80880C3F304310A4362F3103300
+:10595000CBF80C3084F8008089F31188BFF36F8F87
+:105960000AF1010A0BF1140BC7E7002FF4D12378D9
+:10597000002BF1D09BF80D3003F00F03022B08D061
+:10598000042B06D0012B0BD1DBF810002246594620
+:1059900004E0DBF81000224659461030FFF772FF92
+:1059A000CBF808400135D7E703460068834208D0AA
+:1059B000D0E9003213605A600023C0E90033FFF7DA
+:1059C0001DBF7047DFB508240A1908D2002600273A
+:1059D000CDE900670DEB0401FFF722FC10B10020B8
+:1059E00004B0D0BD0298224602A9FFF755F80298EC
+:1059F0000830F5E710B10838FFF72BBC7047704747
+:085A000030A7FE7F0100000049
+:105A0800514A000000000000214A01000000000087
+:105A18004134010000000000B5490000000000000A
+:105A2800613E000014060020D5280100240600204D
+:105A3800092B010034060020712D010044060020C6
+:105A4800A941000054060020BD2001007406002072
+:105A5800BD20010064060020A93B010000000000F1
+:105A6800E567000000000000A93800008406002057
+:105A78005D310100E1500100000000002B4A0100E7
+:105A88002406002019260100000000002B4A01000E
+:105A9800000000002B4A0100000000002B4A010012
+:105AA80000000000B5230100000000002B4A01009F
+:105AB800000000002B4A0100000000002B4A0100F2
+:105AC800000000002B4A010000000000B1EC0000BB
+:105AD800000000002B4A0100EC490020E52D0100E0
+:105AE800000000002B4A0100000000002B4A0100C2
+:105AF800000000002B4A0100000000007D4100006A
+:105B0800000000002B4A0100000000002B4A0100A1
+:105B1800000000002B4A0100000000002B4A010091
+:105B2800000000002B4A0100000000002B4A010081
+:105B380000000000DDEC0000000000002B4A01001E
+:105B4800000000002B4A0100000000002B4A010061
+:105B5800000000002B4A0100000000002B4A010051
+:105B6800000000002B4A0100000000002B4A010041
+:105B7800000000002B4A0100000000002B4A010031
+:105B8800000000002B4A0100000000002B4A010021
+:105B9800000000002B4A0100000000002B4A010011
+:105BA800000000002B4A0100000000002B4A010001
+:105BB80034060020A94E0100000000002B4A010015
+:105BC800000000002B4A0100000000002B4A0100E1
+:105BD800000000002B4A0100000000002B4A0100D1
+:105BE800000000002B4A0100000000002B4A0100C1
+:085BF800FFFFFFFFFFFFFFFFAD
+:105C0000000103FF04FF0200000106020100000082
+:105C10000338FDD870470000A13F0000B5490100DE
+:105C2000DD49010000000000EB480100113F0000C9
+:105C3000753F0000AF490100A9490100093E00007D
+:105C4000C13D00000000000002000000505C0100A7
+:105C50000000000028660100260002070000002066
+:105C60003066010022000B11E0640100805C01003D
+:105C7000E0640100885C0100E0640100905C0100C8
+:105C800020000000EF6C002003010000E96A002002
+:105C900003010000E0670020574553545F544F5004
+:105CA0004449522F7A65706879722F7375627379DF
+:105CB000732F626C7565746F6F74682F636F6E7489
+:105CC000726F6C6C65722F7469636B65722F746987
+:105CD000636B65722E63000042542052582070722C
+:105CE00069000000425420525800000057455354A8
+:105CF0005F544F504449522F7A65706879722F7300
+:105D000075627379732F626C7565746F6F74682F29
+:105D1000636F6E74726F6C6C65722F6863692F6845
+:105D200063695F6472697665722E6300436F6E7497
+:105D3000726F6C6C657200002C5D01000000000049
+:105D40000200000021690000F56700005A657068D4
+:105D50007972204F532076322E342E30000000000E
+:105D6000574553545F544F504449522F7A657068D9
+:105D700079722F7375627379732F626C7565746FA6
+:105D80006F74682F636F6E74726F6C6C65722F68BE
+:105D900063692F6863692E63000000000200000041
+:105DA000000001030303030303000000574553549D
+:105DB0005F544F504449522F7A65706879722F733F
+:105DC00075627379732F626C7565746F6F74682F69
+:105DD000636F6E74726F6C6C65722F6C6C5F73772F
+:105DE0002F756C6C2E630000574553545F544F5011
+:105DF0004449522F7A65706879722F73756273798E
+:105E0000732F626C7565746F6F74682F636F6E7437
+:105E1000726F6C6C65722F6C6C5F73772F756C6C26
+:105E20005F6164762E630000574553545F544F50B2
+:105E30004449522F7A65706879722F73756273794D
+:105E4000732F626C7565746F6F74682F636F6E74F7
+:105E5000726F6C6C65722F6C6C5F73772F756C6CE6
+:105E60005F7363616E2E6300574553545F544F5008
+:105E70004449522F7A65706879722F73756273790D
+:105E8000732F626C7565746F6F74682F636F6E74B7
+:105E9000726F6C6C65722F6C6C5F73772F756C6CA6
+:105EA0005F636F6E6E2E630001010201040404043F
+:105EB00000000000574553545F544F504449522F3F
+:105EC0007A65706879722F7375627379732F626C5B
+:105ED0007565746F6F74682F636F6E74726F6C6C1E
+:105EE00065722F6C6C5F73772F756C6C5F736C6170
+:105EF00076652E6300000000574553545F544F50A1
+:105F00004449522F7A65706879722F73756273797C
+:105F1000732F626C7565746F6F74682F636F6E7426
+:105F2000726F6C6C65722F6C6C5F73772F756C6C15
+:105F30005F6D61737465722E6300000057455354A2
+:105F40005F544F504449522F7A65706879722F73AD
+:105F500075627379732F626C7565746F6F74682FD7
+:105F6000636F6E74726F6C6C65722F6C6C5F73779D
+:105F70002F756C6C5F73636865642E6300000000AE
+:105F8000574553545F544F504449522F7A657068B7
+:105F900079722F7375627379732F626C7565746F84
+:105FA0006F74682F636F6E74726F6C6C65722F6C98
+:105FB0006C5F73772F756C6C5F66696C7465722E9D
+:105FC00063000000574553545F544F504449522FCB
+:105FD0007A65706879722F7375627379732F626C4A
+:105FE0007565746F6F74682F636F6E74726F6C6C0D
+:105FF00065722F6C6C5F73772F6E6F726469632F9D
+:106000006C6C6C2F6C6C6C2E63000000524E470061
+:10601000574553545F544F504449522F7A65706826
+:1060200079722F7375627379732F626C7565746FF3
+:106030006F74682F636F6E74726F6C6C65722F6C07
+:106040006C5F73772F6E6F726469632F6C6C6C2F4B
+:106050006C6C6C5F6164762E63000000574553548E
+:106060005F544F504449522F7A65706879722F738C
+:1060700075627379732F626C7565746F6F74682FB6
+:10608000636F6E74726F6C6C65722F6C6C5F73777C
+:106090002F6E6F726469632F6C6C6C2F6C6C6C5F0D
+:1060A0007363616E2E630000574553545F544F5025
+:1060B0004449522F7A65706879722F7375627379CB
+:1060C000732F626C7565746F6F74682F636F6E7475
+:1060D000726F6C6C65722F6C6C5F73772F6E6F7262
+:1060E0006469632F6C6C6C2F6C6C6C5F636F6E6E8D
+:1060F0002E630000F401FA00960064004B003200A9
+:106100001E001400574553545F544F504449522FBA
+:106110007A65706879722F7375627379732F626C08
+:106120007565746F6F74682F636F6E74726F6C6CCB
+:1061300065722F6C6C5F73772F6E6F726469632F5B
+:106140006C6C6C2F6C6C6C5F736C6176652E63008D
+:10615000574553545F544F504449522F7A657068E5
+:1061600079722F7375627379732F626C7565746FB2
+:106170006F74682F636F6E74726F6C6C65722F6CC6
+:106180006C5F73772F6E6F726469632F6C6C6C2F0A
+:106190006C6C6C5F6D61737465722E63000000003F
+:1061A000574553545F544F504449522F7A65706895
+:1061B00079722F7375627379732F626C7565746F62
+:1061C0006F74682F636F6E74726F6C6C65722F6C76
+:1061D0006C5F73772F6E6F726469632F6C6C6C2FBA
+:1061E0006C6C6C5F746573742E63000000000000BB
+:1061F000000000000000000000000000000000009F
+:10620000000000000000000000000000000000008E
+:10621000000000000000000000000000000000007E
+:10622000000000000000000000000000000000006E
+:10623000000000000000000000000000000000005E
+:10624000000000000000000000000000000000004E
+:10625000000000000000000000000000000000003E
+:10626000000000000000000000000000000000002E
+:10627000000000000000000000000000000000001E
+:10628000000000000000000000000000000000000E
+:1062900000000000000000000000000000000000FE
+:1062A00000000000000000000000000000000000EE
+:1062B00000000000000000000000000000000000DE
+:1062C00000000000000000000000000000000000CE
+:1062D00000000000000000000000000000000000BE
+:1062E000000000000000000000000000FFC1FBE80B
+:1062F0004C90728BE7B3518963AB232302841872ED
+:10630000AA612F3B51A8E53749FBC9CA0C18532C89
+:10631000FD45E39AE6F15DB0B61BB4BE2A50EAE94A
+:106320000E9C4B5E5724CCA1B759B887FFE07D7413
+:106330002648B9C5F3D9A8C4B1D5911101420C3989
+:10634000D5B0979D28D4F29BA4FD6465068C299650
+:10635000FEA2714DF3F82E58DB0D5A5F1528F57427
+:1063600007CE25AF2B12E6D0DB2CDCC37FF03E3A04
+:1063700013A4DCE2F96C54E2D8EAC8880021869CB8
+:106380006AD8CB4E146AF94DD27EB23203C6144B92
+:106390007FD1B8A6797C17ACED06ADAF0A947ABA76
+:1063A00003E792D7150973E86D16EEE13F781F9D5C
+:1063B00009526EF17C362A716C7564448010434E2C
+:1063C00035EC65270AB5FC26693F599901638AA512
+:1063D000BF685CD33CBE0BD67683D657054A3DDDFD
+:1063E0008173C9EB8A8439F4360BF7002941767141
+:1063F000574553545F544F504449522F7A65706843
+:1064000079722F7375627379732F626C7565746F0F
+:106410006F74682F636F6E74726F6C6C65722F6C23
+:106420006C5F73772F6E6F726469632F68616C2F76
+:106430006E7266352F636E74722E63005745535427
+:106440005F544F504449522F7A65706879722F73A8
+:1064500075627379732F626C7565746F6F74682FD2
+:10646000636F6E74726F6C6C65722F6C6C5F737798
+:106470002F6E6F726469632F68616C2F6E72663560
+:106480002F6D6179666C792E630000005745535477
+:106490005F544F504449522F7A65706879722F7358
+:1064A00075627379732F626C7565746F6F74682F82
+:1064B000636F6E74726F6C6C65722F6C6C5F737748
+:1064C0002F6E6F726469632F68616C2F6E72663510
+:1064D0002F7469636B65722E63000000010304056D
+:1064E0000D1F010000000000514C0100ED200100D3
+:1064F000434D0100514D0100674D0100734D0100F6
+:106500007F4D0100D9210100914D010000000000E4
+:10651000FFFFFFFF0000005000000000FFFF000031
+:10652000000300500100000091240100E927010050
+:10653000B524010079260100854E0100952801004F
+:10654000C524010065250100F5240100B5250100E1
+:106550000125010011250100B525010021250100BB
+:106560003125010041250100DD250100954E010086
+:1065700051250100054F010057500100F74E010061
+:106580005D290100E74E01002B4F01006D4F010016
+:106590008F4F0100A54F0100AF4F0100DF4F0100F9
+:1065A000EB4F0100AF4F0100CF4F0100F74F01004B
+:1065B0000550010021500100135001001750010047
+:1065C0000080024000000000192D0100712C010024
+:1065D000085A0100485A0100505A0100705A01003F
+:1065E000785A0100F5FFFFFF554152545F300048D3
+:1065F00043492075617274205458006863695F755F
+:1066000061727400434C4F434B007379735F636C4A
+:106610006F636B005465726D696E616C0052545407
+:106620000053454747455200464C4153485F3000B0
+:106630005352414D5F30004750494F5F3100475042
+:10664000494F5F3000554152545F3100524E470070
+:10665000010000006D61696E00737973776F726B72
+:0C6660007100776F726B717565756500D5
+:10666C00FFFFFFFFFF1F00001F00000000000000E5
+:10667C00000000000000000000000000000100000D
+:10668C0038000020000000000000000000000000A6
+:10669C0000040000B0060020380000203800002064
+:1066AC0000000000000000000404000000000000D6
+:1066BC0000000000000000000000000004040000C6
+:1066CC0000000000000000000000000000000000BE
+:1066DC00040A0000000000000000000000000000A0
+:1066EC00000000000000000000000000000000009E
+:1066FC000000000000000000000000002408000062
+:10670C00000000000000000000000000000000007D
+:10671C00000000000000000000000000000000006D
+:10672C00000000000000000000000000000000005D
+:10673C00000000000000000000000000000000004D
+:10674C00000000000000000000000000000000003D
+:10675C00000000000000000000000000000000002D
+:10676C00000000000000000000000000000000001D
+:10677C00000000000000000000000000000000000D
+:10678C0000000000000000000000000000000000FD
+:10679C0000000000000000000000000000000000ED
+:1067AC0000000000000000000000000000000000DD
+:1067BC0000000000000000000000000000000000CD
+:1067CC0000000000000000000000000000000000BD
+:1067DC0000000000000000000000000000000000AD
+:1067EC00000000000000000000000000000000009D
+:1067FC00000000000000000000000000000000008D
+:10680C00000000000000000000000000000000007C
+:10681C00000000000000000000000000000000006C
+:10682C00080800000000000000000000000000004C
+:10683C00000000000000000000000000000000004C
+:10684C00000000000000000000000000000000003C
+:10685C00000000000000000000000000000000002C
+:10686C000000000000000000600E0020000000008E
+:10687C008584000000000000680E0020000000006D
+:10688C008DF0000000000000700E002000000000E1
+:10689C00C985000000000000780E002000000000F8
+:1068AC0055F0000000000000F81A00200000000065
+:1068BC0035F8000000000000001B00200000000064
+:1068CC000000000000000000041C0020000000007C
+:1068DC00D500010008480000000000000000000086
+:1068EC00000000000000000000000000000000009C
+:1068FC00000000000000000000000000000000008C
+:10690C00000000000000000000000000000000007B
+:10691C00000000000000000000000000000000006B
+:10692C00000000000000000000000000000000005B
+:10693C00000000000000000000000000000000004B
+:10694C00000000000000000000000000000000003B
+:10695C00000000000000000000000000000000002B
+:10696C00000000000000000000000000000000001B
+:10697C00000000000000000000000000000000000B
+:10698C0000000000000000000000000000000000FB
+:10699C0000000000000000000000000000000000EB
+:1069AC0000000000000000000000000000000000DB
+:1069BC0000000000000000000000000000000000CB
+:1069CC0000000000000000000000000000000000BB
+:1069DC0000000000000000000000000000000000AB
+:1069EC00000000000000000000000000000000009B
+:1069FC00000000000000000000000000000000008B
+:106A0C00000000000000000000000000000000007A
+:106A1C00000000000000000000000000000000006A
+:106A2C00000000000000000000000000000000005A
+:106A3C00000000000000000000000000000000004A
+:106A4C00000000000000000000000000000000003A
+:106A5C00000000000000000000000000000000002A
+:106A6C00000000000000000000000000000000001A
+:106A7C00000000000000000000000000000000000A
+:106A8C0000000000000000000000000000000000FA
+:106A9C0000000000000000000000000000000000EA
+:106AAC0000000000000000000000000000000000DA
+:106ABC0000000000000000000000000000000000CA
+:106ACC0000000000000000000000000000000000BA
+:106ADC0000000000000000000000000000000000AA
+:106AEC00000000000000000000000000000000009A
+:106AFC00000000000000000000000000000000008A
+:106B0C000000000000000000000000000000000079
+:106B1C000000000000000000080800000000000059
+:106B2C000000000000000000000000000000000059
+:106B3C000000000000000000000000000000000049
+:106B4C000000000000000000000000000000000039
+:106B5C000000000000000000000000000000000029
+:106B6C00F038002000000000FDA200000000000032
+:106B7C00384400200000000000000000000000006D
+:106B8C0040440020000000007DDA000000000000FE
+:106B9C004844002000000000150A0100000000001D
+:106BAC006044002000000000B10B0100FFFFFFFF5C
+:106BBC001F000000000000002C4700200000000017
+:106BCC0051EE0000000000004847002000000000CB
+:106BDC0031DA0000000000007449002000000000C1
+:106BEC0081550000000000007C49002000000000DE
+:106BFC00AD5200000000000084490020000000009D
+:106C0C0081550000000000008C49002000000000AD
+:106C1C00AD5200000000000094490020000000006C
+:106C2C0081550000000000009C490020000000007D
+:106C3C008155000000C201000001030100000000AA
+:106C4C0000000000BC4E00202000000000000000EE
+:106C5C0000C2010000010300DC0500200000000060
+:106C6C00000000000090D003080600200806002059
+:026C7C000125F0
+:026C7E00FFFF16
+:106C8000046601002C5C0100185C0100080B002068
+:106C9000E86501000000000028650100D40500201F
+:106CA00045660100C065010074650100EC05002027
+:106CB0004C66010000000000C8650100EC4900209E
+:106CC0000A66010000000000000000000000000053
+:106CD0003E66010010650100EC640100A44900203B
+:106CE000376601001C650100EC640100C04900200A
+:106CF000FB65010000000000000000000000000033
+:046D0000000000008F
+:106D0400980600209806002000000000FFFFFFFF07
+:086D1400A8060020A8060020DB
+:106D1C000000000000000000B8060020B8060020AB
+:106D2C00C0060020C006002000000000000000008B
+:106D3C00D0060020D0060020D8060020D80600205F
+:106D4C000000000000000000E8060020E80600201B
+:106D5C00F0060020F00600200000000000000000FB
+:106D6C00000700200007002008070020080700206B
+:106D7C000000000000000000180700201807002089
+:106D8C00200700202007002007000700000000005B
+:106D9C00685C010038670020000000000000000063
+:106DAC00400700204007002048070020480700202B
+:106DBC000200020000000000705C01000867002067
+:106DCC000000000000000000680700206807002099
+:106DDC007007002070070020030003000000000073
+:086DEC00785C0100C066002084
+:04000003000046159E
+:00000001FF

+ 6897 - 0
docs/firmwares/hci_usb_nrf52840dongle.hex

@@ -0,0 +1,6897 @@
+:10100000404E0020E9710000F192010019720000C9
+:10101000197200001972000019720000000000002F
+:10102000000000000000000000000000B16F0000A0
+:1010300019720000000000005D6F0000D9920100ED
+:10104000A9710000D5230100A9710000A971000059
+:10105000A9710000A9710000A9710000A971000028
+:10106000A9710000A9710000A9710000A971000018
+:10107000A9710000A9710000A9710000A971000008
+:10108000A9710000A9710000A9710000A9710000F8
+:10109000A9710000A9710000A9710000A9710000E8
+:1010A000A9710000A9710000A9710000A9710000D8
+:1010B000A9710000A9710000A9710000A9710000C8
+:1010C000A9710000A9710000A9710000A9710000B8
+:1010D000A9710000A9710000A9710000A9710000A8
+:1010E000A9710000A9710000A9710000A971000098
+:1010F000A9710000A9710000A9710000A971000088
+:1011000053B94AB9002908BF00281CBF4FF0FF316E
+:101110004FF0FF3000F06EB9ADF1080C6DE904CE70
+:1011200000F006F8DDF804E0DDE9022304B07047C2
+:101130002DE9F047089D0E4604468C46002B40F0F2
+:1011400081808A42174645D9B2FA82F24AB1C2F189
+:10115000200106FA02F320FA01F1974041EA030C5C
+:1011600094404FEA174E230CBCFBFEF6B9B20EFBBF
+:1011700016CC43EA0C4306FB01F0984209D9FB1850
+:1011800006F1FF3C80F01581984240F21281023E48
+:101190003B441B1AA4B2B3FBFEF00EFB103344EA2F
+:1011A000034400FB01F1A14209D93C1900F1FF33CE
+:1011B00080F00181A14240F2FE8002383C44641A72
+:1011C00040EA064000211DB1D4400023C5E9004398
+:1011D000BDE8F08702B9FFDEB2FA82F2002A4FD1F1
+:1011E000CB1B4FEA174E1FFA87F80121B3FBFEFC19
+:1011F000260C0EFB1C3346EA034608FB0CF3B342F5
+:1012000007D9BE190CF1FF3002D2B34200F2EB80D5
+:101210008446F61AA3B2B6FBFEF00EFB106643EA54
+:10122000064408FB00F8A04507D93C1900F1FF333C
+:1012300002D2A04500F2D2801846A4EB080440EA8E
+:101240000C40C0E78B4208D9002D00F0AF80002190
+:10125000C5E900060846BDE8F087B3FA83F1002926
+:1012600049D1B34202D3824200F2BB80841A66EBBA
+:10127000030301209C46002DAAD0C5E9004CA7E736
+:10128000C2F120039740D8409140DE404FEA174E0C
+:1012900008434FEA104CB6FBFEF11FFA87F80EFB2D
+:1012A00011664CEA064601FB08F3B34204FA02F465
+:1012B00009D9BE1901F1FF3C80F08E80B34240F2A3
+:1012C0008B8002393E44F31A86B2B3FBFEF00EFB6C
+:1012D000103346EA034600FB08F3B34207D9BE19B0
+:1012E00000F1FF3C74D2B34272D902383E44F31A83
+:1012F00040EA01417AE7C1F1200703FA01F422FA3A
+:1013000007F31C4320FA07F906FA01F34FEA144CDD
+:10131000FE4049EA03094FEA1943B6FBFCFE1FFAF7
+:1013200084F80CFB1E6643EA06460EFB08FAB2453B
+:1013300002FA01F200FA01F308D9A6190EF1FF3002
+:1013400048D2B24546D9AEF1020E2644A6EB0A06B3
+:101350001FFA89F9B6FBFCF00CFB106649EA064659
+:1013600000FB08F8B04507D9A61900F1FF3C2DD2C3
+:10137000B0452BD90238264440EA0E40A6EB0806B9
+:10138000A0FB02894E45C446CE4618D315D075B38E
+:10139000B3EB0C0266EB0E0606FA07F722FA01F32E
+:1013A000CE401F43C5E90076002111E729462846B3
+:1013B0000EE76646EDE6184601E74345E7D2B8EB8F
+:1013C000020C69EB04040138A646E0E76046D3E767
+:1013D00060468CE78646B9E7614674E702383C44CC
+:1013E0002BE7084647E7ACF1020C3E4411E72946DB
+:1013F000EEE600BF704700BF2DE9F04FB34C94F804
+:10140000D6608FB006F00106002800F0CA81CEBB7E
+:1014100094F87C7094F8290094F82C204FF0270958
+:101420002D2309FB074700F0030019FB0239FF23B6
+:1014300084F82A3010F012F994F8D600410707F129
+:101440007D0704EB090800F12A8114F809003146F0
+:10145000C0F3801008F01EF806220146054608F188
+:10146000020017F06FFF29460622B81C17F06AFF2A
+:1014700014F809305A060AD413F00E0F40F0E78032
+:10148000636A93B10C2630460FB0BDE8F08F062199
+:1014900008F1020006F0A6FA002800F03C8214F8D9
+:1014A000093013F00E0FEBD0D1E00AF0CFFF8246E7
+:1014B000002800F057820AF0D5FF8346002800F08C
+:1014C0006A820CF05FFB0546002800F061824FF64F
+:1014D000FF73806FAB8505F11C030B93002800F0B0
+:1014E0003D8205F16C0205F1680106F087FAB5F856
+:1014F0006420774995F840C095F83DE095F8DC0008
+:10150000744B2B660A4042F4887242F0010295F84F
+:101510002611A5F86420002262F3000C20F00300DD
+:1015200021F0030185F840C00EF03F0E4FF01B1C68
+:101530006EF07F0E85F8DC0085F826117F20664965
+:10154000C5F85CC04FF0060CC5E9132285F83F20B2
+:101550006A866A636A65A5F8C820A5F8CC20A5F854
+:10156000E82085F8EA20C5F80021A5F80421A5F8AF
+:101570001821C5F82021A5F8242185F82F2185F808
+:101580003DE085F8C100A5F8C4C0C5F81C11C5F838
+:1015900030A1AA6795F872E195F89AC195F87E0096
+:1015A00095F85211A5F87C2062F3C30C62F3041E77
+:1015B00021F0070120F01F00A5F85021A5F87021A7
+:1015C000A5F89821A5F8A42185F89AC185F872E1BB
+:1015D00085F8521185F87E000CF022FEA5F8D600A1
+:1015E0000CF024FED5F8A8313C49A5F8D8001940E4
+:1015F000C5F8A8110CF020FE95F8AC1160F30201BB
+:1016000085F8AC110CF01EFEC4E933AB0B9B636292
+:1016100095F8AC1195F820C0ED610301002203F0AC
+:10162000700321F078010B4362F3000CC5E96E22D0
+:10163000C5E96C22C5E90522C5F8C02185F8AC31A1
+:1016400085F820C011F0EEFA002840F0708194F87F
+:1016500028300121C3F342030DA88DF8343006F081
+:1016600045FB002800F0968014F8093003F00F03C2
+:10167000022B00F1FF3233D0012B00F05C8178782F
+:101680001030C100002B00F04881062B00F088814B
+:101690004FF4DA704FF41B7100FB02102BE0C0F323
+:1016A000C000324604F1D70110F0E6F9FF2884F8B3
+:1016B0002A0002D0304610F09DF84146034810F051
+:1016C00013F80248394610F00FF8D1E6B42D002087
+:1016D00080F8FFFF48014801FF4901000000FFF6C4
+:1016E00098F801301033DB0000FB03F000F5AA701E
+:1016F000642303FB020094F82070B54AE4610025DE
+:10170000312365F30007A0FB0201236084F82070F9
+:10171000ADA3D3E90023C4E90555C4E90155FFF79A
+:10172000EFFCB4F8D480E06007F0AEFE0746B8F1F5
+:10173000000F08D114F8095005F00F05A5F10105B7
+:10174000B5FA85F56D0994F82820E36865F3000281
+:1017500012F0010584F8282000F08780DFF88492D9
+:101760009C490493002002250DF130080193059156
+:10177000CDE907980321CDE9020006942A4600909E
+:101780003B460C9507F070FD41460AF0F3FE002839
+:1017900000F0AE80636A002B3FF474AE0BF0FCF9EE
+:1017A00070E6002E3FF46EAE20460AF0F1FE844251
+:1017B0000CD0894A89498A484FF4E56317F063F8E9
+:1017C000404080F311884FF0030002DF94F8283086
+:1017D000D8070DAD0ED502220D920321814B009545
+:1017E0000122002007F0ACFD29460AF0C3FE0028C4
+:1017F00040F0E080022203217A4B009500200D92F8
+:1018000007F09EFD29460AF0B5FE002840F0AC80A6
+:1018100075480AF0F9FE002840F0928073480AF0FB
+:10182000C3FE84420CD06C4A6C496D4840F24A7346
+:1018300017F029F8404080F311884FF0030002DFD1
+:10184000636A0BB10BF0A8F994F8D63000206FF35F
+:10185000000384F8D6300BF071FD0646002844D012
+:10186000002630460FB0BDE8F08F6148614ADFF8CE
+:1018700074E1DFF860C10694A8FB00014FF0910904
+:1018800009FB081103F24718C2F800804FF0020963
+:10189000049309920DF130084BA3D3E900234FF6CE
+:1018A000FF7ACDE907E80295CDF83090CDF814C065
+:1018B000CDF80CA0FFF724FC4A46CDE900503B468A
+:1018C0002846032107F07AFC41460AF053FE00281F
+:1018D0007FF460AF94F8D63043F0010384F8D6303B
+:1018E0000BF02CFD0028BBD101200FF095FECAE5BE
+:1018F000414905914AF2D8320092CDE90798CDE9E5
+:101900000300CDE9010006943B46012203210C951A
+:1019100007F0AAFCD8E71226B5E598F801001030C8
+:10192000C00000F54D73194400F59A70B4E60BF051
+:1019300033F90326A7E54FF4F2704FF47F71ABE65D
+:10194000254A2E49264840F2477316F09CFF404036
+:1019500080F311884FF0030002DF5FE705F17000AC
+:10196000A867BEE507268EE520480AF01DFE8442E2
+:101970003FF488AD40F24173174A1849184816F0F1
+:1019800082FF404080F311884FF0030002DF79E5C9
+:1019900058460AF06DFD50460AF05EFD072672E5D6
+:1019A00098F801301033DB0003F54D70014403F566
+:1019B0009A7071E60D480AF0F7FD84423FF462AD7B
+:1019C00040F23373D8E700BF8D49FD1A07000000CD
+:1019D00000CA9A3B0DC90000F0AA0100E0AB01006B
+:1019E0008CA7010069C50000D02D0020B42D002077
+:1019F000002AE784942E002015CB000000AA0100E5
+:101A0000F8B5194E9DF8184096F8485015F00107A2
+:101A100021D196F832C0DFF854E0A6F84210E40075
+:101A200004F018040CF0670C44EAC01463F3420598
+:101A3000A2FB0E0144EA0C04912303FB021186F879
+:101A4000485007A3D3E9002386F83240FFF758FB3C
+:101A500070643846F8BD0C273846F8BDAFF30080F7
+:101A60008D49FD1A07000000B82E0020002AE784E7
+:101A7000F8B59DF81840104E0546E400807DEA84D4
+:101A800004F01804A3FB066700F06700912244EA03
+:101A9000C111014302FB0377A97505A3D3E9002314
+:101AA00030463946FFF72CFBA862F8BDAFF3008043
+:101AB0008D49FD1A07000000002AE784000000009D
+:101AC0002DE9F04F90F83230044600F1350190F8DE
+:101AD000480003F0F903C0F3400060F386138DB0B3
+:101AE00084F8323007F0D6FCB4F8426094F8203025
+:101AF0004F48E4610025A6FB000165F30003912235
+:101B000002FB0611C4E9055584F8203046A3D3E949
+:101B10000023FFF7F5FA636C656006460933A6F10A
+:101B2000310293424FF03101A56028BF6564216006
+:101B300034BFE360E26007F0A7FC656A80460DF100
+:101B40002C09002D4ED03B4DCDF82090B4F842A08A
+:101B500039493748E268DFF8ECC00492651BAD08EC
+:101B6000A1FB0535AAFB0001912303FB0A11334BAE
+:101B700005934FF0000A2CA3D3E900230227CDF8E8
+:101B80001CC006940B97CDF80CA0FFF7B9FA1046CD
+:101B900019464FF47A720023FFF7B2FA6D08043544
+:101BA000EDB22A46029043460321CDF800A05046EC
+:101BB000019607F059FB49460AF0DCFC054668B976
+:101BC00094F8483043F0010384F848300BF092F960
+:101BD0000446F8B128460DB0BDE8F08F0C200DB0DA
+:101BE000BDE8F08FE1680A954B460AAA03200B95E1
+:101BF00002F0A2FA0B990029A5D011480AA3D3E953
+:101C00000023A1FB0001FFF77BFA0A9B20F07F482D
+:101C1000984498E738460FF0FFFC20460DB0BDE829
+:101C2000F08F00BFAFF300808D49FD1A0700000060
+:101C3000002AE784B82E0020BD86F21ABDD000002D
+:101C400000CA9A3B69C500002DE9F04F0446808D1B
+:101C50004FF6FF7398428DB00D46164600F089800E
+:101C600094F8E93094F8E80083420ED0C01A00F0EE
+:101C7000030002281BD094F82D2194F82C319A42AD
+:101C800030D100200DB0BDE8F08F94F8527117F0FC
+:101C90000108F0D194F8051194F804218A4200F06B
+:101CA0008B83981E012284F8E90084F8EA2094F8D6
+:101CB000983194F899219A4206D094F89A2102F02A
+:101CC0000601042900F0BD8394F8EA707B1E052B01
+:101CD00000F26483DFE813F07000FB02A2026203EB
+:101CE0002503C701304805F033FE58B394F82C3172
+:101CF00084F82D310379022243F00303427103710A
+:101D0000C271D4F8B03194F82E2102722BB394F83A
+:101D10005221910721D494F8AB21D2071DD4D4F8D5
+:101D2000BC21934204BF1A68C4F8BC21D4F8B42182
+:101D3000B2B91A68026018600368C4E96D000BB993
+:101D4000C4F8C001B4F8CC0000289AD1B4F8C63069
+:101D5000012B1CD9A4F8CC3093E7D4F8B421E2B11C
+:101D6000D4F8B8311A6802601860C4F8B801036882
+:101D7000E5E70E4A0E490F4840F2F32316F083FDC3
+:101D8000404080F311884FF0030002DF68E7013321
+:101D9000A4F8CC300DB0BDE8F08F0360C4E96C004E
+:101DA000C4F8B801CBE700BFEC3100203CAC010027
+:101DB000A4AD01008CA70100DFF85C84D8F80030E6
+:101DC000002B00F0CC84E78E628E94F80631174425
+:101DD000374413F00303BFB240F08E83B4F8EC90A5
+:101DE000A7EB09021FFA82FA12043FF544AF94F8F8
+:101DF000701194F8712194F8040184F805018A4265
+:101E000094F8E80084F8E90009D094F8722102F00F
+:101E10000702052A04BF84F87111A4F8CC30D8F861
+:101E200000309C4204BF0023C8F80030D4F8008181
+:101E3000B8F1000F00F0C185D8F80000002800F0CC
+:101E4000BC85B4F80831E28D4168C4F800119342B2
+:101E5000B4F80A11B4F80CC100F0D286A28DA8F82B
+:101E600006204FF00C0E0022A8F81E30A8F8201013
+:101E7000A8F822C088F804E088F81C2041460AF03F
+:101E8000FDFA0AF005FB2368002B09DAD4E90112F8
+:101E900023F000438A422CBFAD186D182360ED1A61
+:101EA000E38DB4F8088113FB0AF39BB2B3FBF8F19E
+:101EB00018FB01F292B293421FFA81FB80F06B850E
+:101EC000D31AC94840F2E24202FB03F3A3FB00012C
+:101ED000C3A3D3E90023FFF713F920F07F400544A3
+:101EE000638EA9EB07071E4494F93D305F443744E5
+:101EF00040F2E249002B678609FB08F6C0F2B4867F
+:101F0000D4F81001B849B6A3D3E90023A0FB01011E
+:101F1000FFF7F6F820F07F4909F101093746B4F8D8
+:101F20000C21B4F80A11B14BA4F82E8042F21070C3
+:101F300000FB0262AE48218633443044B3FBF6F323
+:101F4000013AB2FBF6F2B0FBF6F6A4F8C62098B25E
+:101F50008A1D9042A4F8D200A4F8CA6002DD401A9B
+:101F6000063880B294F80631A4F8CE005E0744BF6C
+:101F70000023A4F8C8300221012013F05BFA0022EC
+:101F800002218246012005F087FD9A494FF4E47250
+:101F9000204605F013FD00F105085FFA88F8964B1E
+:101FA000009442460121002007F0CAF930F00203F4
+:101FB0000CD0924A9249934840F6581316F063FCAD
+:101FC000404080F311884FF0030002DF864EA7FBEC
+:101FD000066783A3D3E9002330463946FFF790F81C
+:101FE000894A20F07F4BABFB02230721B01A01FB8B
+:101FF0000B3367EB03014FF47A720023FFF780F88D
+:10200000824A8349E668834F034694F93D00029370
+:1020100011EA200138BF11460020CDE904612B46AA
+:10202000CDF804B008940694CDF800904246079786
+:102030000390012107F018F930F002030CD06F4A29
+:102040006F49704840F6721316F01DFC404080F353
+:1020500011884FF0030002DFBAF1000F40F0EA856B
+:102060006FF047000EE6E38E628E94F8EC50134456
+:102070001E44EF07B6B2AB4600F1E482B4F8EE209E
+:10208000B61A37043FF5F7AD94F8DC2094F8648075
+:1020900094F865A094F8E810B4F8627084F8E91038
+:1020A000D60708F007080AF0070A40F1CC85D4F8F3
+:1020B0001C21100540F1C785B4F8D890B9F5296FF7
+:1020C00028BF4FF42969B9F5A47F4FF4296338BFBD
+:1020D0004FF4A4790B9315F01C0F40F0BF86B4F8B1
+:1020E000606015F0E00F0CD094F8652094F85E0065
+:1020F000690961F3020284F865200B9A0BF0A2F9DA
+:10210000074694F8AC2194F86410D4F80051C2F357
+:10211000C00262F3C30184F86410002D00F0A287AE
+:102120002868002800F09E8794F8641094F86520D1
+:102130004368C4F800311BF0020FC1F3020EC2F372
+:10214000020C01F0070102F0070202D1884501F0FC
+:102150004080A38DEB801022002385F81DE085F8D8
+:102160001EC02A712B7729460AF088F9D4F800514D
+:10217000002D00F094872868002800F09087B4F8BC
+:1021800060304268C4F80021B34209D34B4507D8F8
+:10219000B4F86230BB4203D30B9A934241F22D80D4
+:1021A000A4F86060A4F862702B7FA28DEA8043F0EF
+:1021B00003030221092229712B776A77B4F85E3074
+:1021C000B4F85C202B841523AA84EB7729466F840E
+:1021D000EE840AF053F90AF05BF94CE5AFF30080A6
+:1021E0008D49FD1A0700000000CA9A3B7FC3C90150
+:1021F000FF596202182F0020C1D700003CAC01003B
+:102200001CAD01008CA701008D49FD1AB509010024
+:102210004108010069D70000E030002094F8EC305C
+:1022200013F003057FF427ADAF4805F091FB064698
+:1022300000283FF420AD94F93D30002B80F26885F2
+:1022400094F8ED50002D00F05183037994F8DC20D0
+:1022500043F00303D207037140F1FE86D4F81C312A
+:102260005B0740F1F986112203234572C2710372A4
+:102270007771D4F8B031002284F8ED20002B00F003
+:102280007F8394F85221950700F17A8394F8AB216B
+:10229000D00700F17583D4F8BC21934204BF1A68BB
+:1022A000C4F8BC21D4F8B421002A01F08F80D4F8FE
+:1022B000B8311A6832601E60C4F8B8613368002B08
+:1022C00000F0C68694F8E83084F8E930D3E4E38E71
+:1022D000618E94F8EC200B441E44D007B6B200F196
+:1022E0000C82B4F8F230F61A31043FF5C4AC94F81D
+:1022F000E83084F8E93004F13805052204F1ED01F5
+:10230000284617F01FF82846052105F0EFFC94F841
+:102310003D30012260F3050384F83D3084F8C42188
+:10232000A9E4714805F014FB00283FF4A4AC94F82C
+:10233000E83084F8E930012302794371D4F8B031F0
+:1023400042F0030212210271C171002B00F0C3821E
+:1023500094F85221910700F1BE8294F8AB21D20784
+:1023600000F1B982D4F8BC21934204BF1A68C4F8C2
+:10237000BC21D4F8B421002A01F01680D4F8B83179
+:102380001A6802601860C4F8B8010368002B00F0F6
+:102390006185B4F8CA30A4F8CC306CE4534A54498F
+:1023A000544840F2793316F06EFA404080F31188B9
+:1023B0004FF0030002DF5EE494F8192194F818C18D
+:1023C000624555D194F8252194F824C1624500F066
+:1023D0000583A2EB0C02D1077FF54DAC94F82631B2
+:1023E000DA0740F147879A0740F12E870AF074F820
+:1023F0000146002871D094F8243184F82531037FF8
+:10240000A28DC28043F003030B77022006220C2327
+:1024100008714A77CB7794F82701B4F82A31B4F8D9
+:102420002821A1F8212081F82000A1F82330086894
+:102430000AF024F80AF02CF894F8E80094F8E9304F
+:1024400014E402F00701062901F2448101A050F8CA
+:1024500021F000BF05280000C91C0000C91C0000B5
+:10246000C91C00006727000067270000C91C000086
+:10247000A2EB0C02D3077FF5FEAB94F8DC1011F051
+:10248000010700F08C840AF027F8074628B394F877
+:10249000183184F81931037FA28DC28043F0030301
+:1024A0000922022041463B7738717A77FA7707F1A3
+:1024B0002000082216F071FFD4F8203187F8203070
+:1024C000C3F307221B0C87F8212087F822303946F6
+:1024D000086809F0D3FF09F0DBFF94F8E80094F8EE
+:1024E000E930FFF7C3BB00BFEC3100203CAC01007A
+:1024F0000CA801008CA70100012009F0CFFF804645
+:1025000000283FF4B8ABB94805F022FA0646002887
+:102510003FF4B1AB09F0E0FFD8F80030D4F8002167
+:102520005A6094F80631C4F8008103F00303012BCC
+:1025300000F0ED85022B00F0C285AD4AAD49AE48F2
+:1025400040F6830316F09FF9404080F311884FF066
+:10255000030002DF0021238E94F806C132793B4448
+:10256000063398B26FF3010C0C23A4F8EC0084F846
+:1025700006C142F003027371D4F810319F4F3271DB
+:102580000022F271A7FB032394F8147122683772BA
+:10259000B4F80871A6F80B70B4F80A71A6F80D70BB
+:1025A000C3F38F23B4F80C71A6F80F70002AA6F8B5
+:1025B0001100A6F80930C4F8F4500ADAD4E901038E
+:1025C00022F0004283422CBFEB182B189A1AC4F851
+:1025D000F4208B4B06F109000122C4F8F000D96009
+:1025E000104602219C6005F08BFA002840F092858D
+:1025F000D4F8B031002B00F02C8394F852219007CE
+:1026000000F1278394F8AB21D10700F12283D4F89D
+:10261000BC21934204BF1A68C4F8BC21D4F8B42189
+:10262000002A00F0E386D4F8B8311A6832601E60E0
+:10263000C4F8B8613368002B7FF41DABC4F8C061E7
+:10264000FFF719BB022009F029FF074600283FF4D5
+:1026500012AB664805F07CF9054600283FF40BAB49
+:1026600094F8EC306FF30003C3F38200C3F342121B
+:1026700050EA020884F8EC30DBB240F0C78594F8E9
+:10268000E820A4F8EE80980784F8E92000F140865D
+:102690004346414605226A7185F808802A796B72A3
+:1026A000D4F8B031698142F0030218212A71E9712E
+:1026B000002B4AD094F85221910746D494F8AB21CC
+:1026C000D20742D4D4F8BC21934204BF1A68C4F89C
+:1026D000BC21D4F8B421002A00F08086D4F8B831A7
+:1026E0001A682A601D60C4F8B8512B68002B7FF46B
+:1026F000C2AAC4F8C051FFF7BEBA3C4805F028F999
+:10270000054600283FF4B7AA238E027994F8EC100E
+:102710001E44B31DA4F8F2306FF30001012342F010
+:102720000302082084F8EC102A716871EB7105220D
+:1027300004F1ED01281816F005FED4F8B031B4F814
+:10274000F220A5F80D20002BB4D1D4F8B421002A32
+:10275000C4D12B60C4E96C55C4F8B851C6E7C8F8B9
+:102760000040FFF730BB02F00702B4F89CC1B4F898
+:10277000A011B4F89E91B4F8A281A4F85EC0042A16
+:10278000A4F8621000F01A8594F89A31062262F3D8
+:10279000020384F89A31D4F80071002F00F0A3846A
+:1027A0003868002800F09F843B7F4268B4F82CE032
+:1027B000C4F8002143F0030302223B774FF0090ADB
+:1027C0001523A7F806E0A7F820C079843A71FB77B3
+:1027D0003946A7F82490A7F8268087F81DA009F0AD
+:1027E0004DFE09F055FEFFF76FBA00BFEC31002037
+:1027F0003CAC01000CA801008CA701005917B7D10F
+:1028000068030020C04805F0A3F800283FF45CAA44
+:1028100094F89A21B4F89E11B4F8A231A4F8D61015
+:102820000127A4F8D83067F3020284F89A21092717
+:102830000279477194F8DC70D4F81CE1818142F090
+:10284000030202711B224FF0140C00210272FA07DE
+:1028500080F807C0417240F135841EF4006F00F02B
+:102860003184B3F5296F28BF4FF42963B3F5A47FF2
+:1028700038BF4FF4A4734FF42961D4F8B0214181DB
+:10288000C381002A00F0008494F852319B0700F1C4
+:10289000FB8394F8AB31DF0700F1F683D4F8BC3149
+:1028A0009A4204BF1368C4F8BC31D4F8B431002B89
+:1028B00000F0AF85D4F8B8311A6802601860C4F827
+:1028C000B8010268002A00F01F85B4F8CA30A4F8E5
+:1028D000CC30FFF7F9B9D4F8B421002A7FF44EAD1B
+:1028E0000360C4E96C00C4F8B8014FE504F17F0748
+:1028F0003B462A4604F1EE0104F25D1011F0EAFFB6
+:102900003946102204F1A00016F01CFD082204F143
+:10291000980104F1B90016F015FD94F8972094F889
+:10292000B81094F87E3084F88F5042F0010265F3BD
+:10293000000143F00803012084F8972084F8B810C0
+:1029400084F87E3084F8905084F8915084F8925046
+:1029500084F8935084F8945084F8955084F89650F5
+:10296000C4F8B050C4F8B45032797071D4F8B031B2
+:1029700042F0030205213271F171002B7FF481AC2A
+:10298000D4F8B421002A7FF492AC3360C4E96C66B9
+:10299000C4F8B86193E408FB113340F2E2425B48AB
+:1029A0009BB202FB03F3A3FB000155A3D3E9002371
+:1029B000FEF7A6FB2D1AFFF793BA554A554956481C
+:1029C00040F6B40315F05FFF404080F311884FF0EC
+:1029D000030002DFD8F80000FFF733BA94F871C1A2
+:1029E00094F87021944500F06182DFF83081D8F8C6
+:1029F0000020002A00F0AD8494427FF43CA994F8B2
+:102A0000722102F00702052A00F24E860FF2040C32
+:102A10005CF822F0212B00007D2A00002D2A000006
+:102A20006D1C00006D1C00006D1C0000BB073FF515
+:102A300022A909F051FD014600283FF44EAD037F65
+:102A400094F87221032060F30202034384F8722198
+:102A5000A08D0B77022718230F714B77B4F87421E0
+:102A6000B4F87631C880B4F878010A84B4F87A21D1
+:102A70004B840F238884CA84CB7729E594F873713B
+:102A8000002F40F0F58494F93D30002BC0F21585FD
+:102A900094F8723194F87C01C4F81071052262F345
+:102AA0000203012284F8723184F81421002800F016
+:102AB000C485B4F87431B3FBF0F3134413FB00F393
+:102AC0009BB294F8722194F80601A4F80831C2F37D
+:102AD000C0039B0020F0070243F002031343B4F845
+:102AE0007801B4F87A2184F80631013984F80511A7
+:102AF000A4F80A01A4F80C21FFF7BDB8AFF30080D9
+:102B00008D49FD1A07000000EC31002000CA9A3BF5
+:102B10003CAC0100C0AD01008CA70100E0300020FA
+:102B2000D948B4F83690B4F832A004F011FF074643
+:102B300000283FF4D2AC027994F87211042060F3BB
+:102B4000020142F00302182084F8721109EB0A0313
+:102B50003A717871B4F87401B4F87611B4F8782148
+:102B600038813344B4F87A017981BA810F21002287
+:102B7000A7F811304FF0FF33F881F9713A74FA7405
+:102B80003A757B75BB75FB753B767B76BB76FB76C2
+:102B90003B777B77BB77394620460AF0A5FC226855
+:102BA000B4F8CA30C8F80040002AC4F89051A4F81C
+:102BB000CC300ADAD4E9011322F000428B422CBF58
+:102BC000EB186B189B1AC4F89031B04B13370122E5
+:102BD000C4F88C71104602219C6004F091FF00281B
+:102BE0003FF47BACAA4AAB4940F66B33AA4815F0D8
+:102BF0004AFE404080F311884FF0030002DF6CE48E
+:102C0000228E8A427FF42AA940F2E24202FB03FBB1
+:102C100042F21072B4F8C6E002FB0CB2013AB2FB09
+:102C2000FBF292B296457FF419A9032388F8043089
+:102C3000FFF724B901221046022104F02DFF6FF0A6
+:102C40004700FFF71FB84FF4A479CDF82C90FFF799
+:102C500042BAD4F8B421002A7FF4E5AC3360C4E969
+:102C60006C66C4F8B861E6E4E26C636C8B4F03FBFE
+:102C70001A23E36411F016F8804694F8DC00C0F3E0
+:102C8000820011F011F808EB000306FB03F38448FF
+:102C9000E26C94F8141103F5742303F23F23A0FBB4
+:102CA00003034FEA934808FB0BF073080244963B7A
+:102CB0009A4209FB01FC28BF1A464FF0000EC4E9F6
+:102CC0001232C4F844806EA3D3E90023A0FB0701AD
+:102CD000C4F854C0C4F8E4E0FEF712FAD4F8103196
+:102CE00084467048A0FB0330800A09FB00F0A0FB7B
+:102CF000070163A3D3E90023A5EB0C05FEF700FA57
+:102D0000A6EB080720F07F49B4F80881FFF707B960
+:102D100004F17F073B462A4604F1EE0104F25D1000
+:102D200011F0D8FD3946102204F1A00016F00AFB7C
+:102D3000082204F1980104F1B90016F003FB94F89D
+:102D4000971094F8B82094F87E3084F88F5043F0B0
+:102D5000080365F3000142F0010284F8971084F83B
+:102D60007E3084F8905084F8915084F8925084F822
+:102D7000935084F8945084F8955084F89650C4F891
+:102D8000B050C4F8B45084F8B820311D20460AF081
+:102D9000B5FDD4F8B031002B7FF473AAF0E53A48C2
+:102DA00004F0D6FD804600283FF497AB94F8193123
+:102DB0003D4AC4F81C21013B092284F819314271B3
+:102DC00094F93D200379002AACBF08220E2243F07B
+:102DD0000303C271082203713946104416F0DDFA6C
+:102DE000D4F81C3188F80830C3F307221B0C88F88C
+:102DF000092088F80A30D4F8B031002B00F0678140
+:102E000094F85221970700F1628194F8AB21D00722
+:102E100000F15D81D4F8BC21934204BF1A68C4F864
+:102E2000BC21D4F8B421002A00F01883D4F8B831BA
+:102E30001A68C8F80020C3F80080C4F8B881D8F830
+:102E40000030002B00F09C82B4F8CA30A4F8CC30DB
+:102E5000FFF743BBC4F8C001FFF79BBA94F86420A6
+:102E600094F85C00C5F3820161F3020284F86420E7
+:102E70004A460AF0E7FA0646FFF733B9AFF3008097
+:102E80008D49FD1A07000000EC3100207803002076
+:102E90003CAC010028AA01008CA7010000CA9A3BA3
+:102EA00083DE1B435917B7D1FF49010094F898718D
+:102EB00094F89921BA4200F03C8194F89A1101F0FB
+:102EC0000702062A00F203840FF2040C5CF822F0D9
+:102ED000792F00006D1C00006D1C00006D1C0000AF
+:102EE000ED2E0000ED2E00006D1C0000B4F89C31AA
+:102EF000A4F85E3001F00703B4F8A021B4F89E9165
+:102F0000B4F8A281A4F86220042B00F09D820B4645
+:102F1000062262F3020384F89A31D4F80071002F7C
+:102F200000F07F823868002800F07B823B7F426897
+:102F3000B4F82CC0C4F8002143F003033B7702220D
+:102F400009237B773A71B4F85E10B4F862207A8472
+:102F50001523FB77A7F806C03984A7F824903946D3
+:102F6000A7F8268009F08AFA09F092FA94F8E800A6
+:102F700094F8E930FEF77ABEB64804F0E9FC014661
+:102F800000283FF4AAAA94F89A21B4F89E01B4F854
+:102F9000A231A4F8D6000127A4F8D83067F30202C2
+:102FA000092784F89A210A794F7194F8DC70888196
+:102FB00042F0030214204FF0000C0A71FF07D4F80E
+:102FC0001C21C8714FF01B0081F809C0087240F144
+:102FD0003782100540F1BB82B3F5296F28BF4FF44B
+:102FE0002963B3F5A47F38BF4FF4A4734FF429626B
+:102FF000D4F8B001CB81B2F5A47F38BF4FF4A472EE
+:103000004A81002800F0FA8194F852319B0700F1C0
+:10301000F58194F8AB31DF0700F1F081D4F8BC31D1
+:10302000984204BF0368C4F8BC31D4F8B431002B13
+:1030300000F02D83D4F8B8311A680A601960C4F81A
+:10304000B8110B68002B7FF4FFAEC4F8C011FBE68B
+:10305000C4F8C061FFF736B90D233572F37102274A
+:10306000FFF706B97C4A7D497D4840F62D6315F08F
+:103070000AFC404080F311884FF0030002DF28680B
+:1030800094F8ECB0FFF750B8D4F8B431002B7FF4CB
+:1030900011AC0260C4E96C00C4F8B80112E46E4AD5
+:1030A0006E496F4840F6596315F0EDFB404080F3E0
+:1030B00011884FF0030002DF2868FFF760B8694904
+:1030C000FFF749BA4FF4A4731946FFF7D6BBD4F8FB
+:1030D000B421002A7FF4AAAEC8F80030C4E96C8895
+:1030E000C4F8B881ADE65C4A5C495D4840F6FD43F2
+:1030F00015F0C9FB404080F311884FF0030002DF58
+:103100003868B4F85EC0B4F86210FFF74DBB56499A
+:10311000FFF721BA504A5549514840F63E0315F091
+:10312000B2FB404080F311884FF0030002DFFFF74D
+:103130005FBA94F8A82194F8A91191423EF49BAD8E
+:1031400094F8AA1101F00300032800F01D82002862
+:103150007EF491AD3F4804F0FBFB014600283FF4AC
+:10316000BCA994F8AA3194F8AC2194F8AB71012071
+:1031700060F30103C3F3820060F30202C3F3421061
+:1031800060F30612C7F34007087984F8AA3167F3A1
+:10319000C30284F8AC21C3F3820C40F00300C3F3F4
+:1031A0004213032716220871CA7181F808C04B72B6
+:1031B0004F71002220460AF097F945E6B4F8A421A1
+:1031C000002A40F0E08084F89931A4F8CC20FFF781
+:1031D000E2BA92457EF4BDAF03232B71294609F074
+:1031E0004DF9D4F80051002D00F0B781286800286F
+:1031F00000F0B3814368C4F8003103232B712946E2
+:1032000009F03CF909F044F9FEF735BD238E1E4460
+:10321000B31DA4F8EE3009F05FF93B68D4F8002143
+:103220005A60C4F8007109F057F90368D4F8002116
+:103230005A6094F8EC30B4F8EE10C4F80001C3F30F
+:1032400082085B09FFF726BA40F61C33024A084998
+:10325000CCE400BFEC3100203CAC0100C0AD01006B
+:103260008CA70100094300005D10010028AA01009D
+:103270000CA80100C04804F06BFB00283FF42DA906
+:1032800094F8252194F82631013A84F82521027911
+:1032900043F00103062184F8263142F00302417114
+:1032A000D4F8B03102710B216FF00E020C270172BD
+:1032B000427205214FF0FF32C7718172C2720273F0
+:1032C000002B79D094F85221970775D494F8AB214C
+:1032D000D10771D4D4F8BC21934204BF1A68C4F852
+:1032E000BC21D4F8B421002A00F0A181D4F8B8316F
+:1032F0001A6802601860C4F8B8010368002B7FF4F4
+:10330000A3ADC4F8C0019FE5C4F8C001FFF7DDBA62
+:1033100009F0E2F81023A28D87F81C803B7194F825
+:1033200064303868FA80C3F302037B7794F8653021
+:10333000C3F30203BB77394609F0A0F809F0A8F8F7
+:1033400094F8EC30B4F8EE10C3F382085B09FFF791
+:10335000A1B994F8723103F00703052B00F2A481A0
+:1033600001A252F823F000BF212B00007D2A0000AB
+:103370002D2A0000771C0000771C0000771C00003D
+:10338000C4F8C08160E594F89A01B4F8A671A4F875
+:103390009E21002363F3020084F89A01A4F8A4316B
+:1033A000A4F8A271FFF7F7B91A6802601860036801
+:1033B000C4E96D00FEF7EABFD4F8B421002A95D124
+:1033C0000360C4E96C00C4F8B80196E71A6832607B
+:1033D0001E603368C4E96D66FEF771BF1A682A6023
+:1033E0001D602B68C4E96D55FFF780B91A6832601B
+:1033F0001E603368C4E96D66FFF71DB9D4F8B431B7
+:10340000002B7FF417AE0860C4E96C11C4F8B81142
+:1034100017E61368036010600268C4E96D00FFF7E7
+:1034200051BA564A5649574840F6FD4315F02BFA13
+:10343000404080F311884FF0030002DF386875E5E3
+:103440004FF4A4731A46D3E5B4F8A421002A40F03F
+:10345000DD8084F89971A4F8CC205EE51A68C8F87C
+:103460000020C3F80080D8F80030C4E96D88E8E493
+:10347000414804F06DFA014600283FF42EA8037974
+:1034800043F003030B71112003220F23C8714A710B
+:103490000B7294F873314B72204600220AF024F824
+:1034A00094F8703184F871310023C8F8003094F832
+:1034B000E80094F8E930FEF7D9BB2F4804F048FA49
+:1034C000014600283FF409A80379182243F00303BA
+:1034D00003714271B4F87421B4F87631B4F878010C
+:1034E0000A81B4F87A214B8110238881CA81CB717B
+:1034F00094F87C310B74B4F87E31B4F88001B4F8E0
+:103500008221A1F81130B4F88431A1F81300B4F885
+:103510008601A1F81520B4F88821A1F81730B4F875
+:103520008A31A1F81D30A1F81900A1F81B2020460E
+:103530003A4609F0D9FF94F8703184F8713194F863
+:10354000E80094F8E930C8F80070FEF78FBBD205A8
+:103550004FF4A47369D5A8224AE5084A08490948E6
+:1035600040F63C6315F08FF9404080F311884FF02E
+:10357000030002DF28683DE6EC3100203CAC01008E
+:10358000C0AD01008CA70100080784F8A921C1F390
+:1035900082025ED594F8AA21022161F3840284F8A4
+:1035A000AA2194F8AA2157064FEA521149D50221BF
+:1035B00061F3471284F8AA2194F8AA1194F864C020
+:1035C00094F8650094F8AB21C1F382070CF0070C66
+:1035D00000F00700C2F38002BC4508BF002752007C
+:1035E000B0EB511F42F001024FEA511108BF002118
+:1035F00042EA4112023B42EA8702062184F8E9309E
+:1036000084F8EC2084F8EA10FEF75EBB00200B463D
+:1036100060F30203A4F89E21B4F8A62184F89A313D
+:10362000A4F8A401A4F8A22177E41A46E0E41A68F9
+:1036300002601860C4E96D005FE6B4F87631FFF708
+:1036400040BAC8070FD5012161F3471284F8AA21B7
+:10365000B2E7D10710D594F8AA21012161F38402C1
+:1036600084F8AA219DE711F0040118BF042161F339
+:10367000471284F8AA219FE712F004020DD094F8B3
+:10368000AA21042161F3840284F8AA2189E703684E
+:103690000B600160C4E96D11D3E494F8AA1162F3E0
+:1036A000840184F8AA117CE7124A1349134840F6B2
+:1036B000294315F0E8F8404080F311884FF00300EB
+:1036C00002DF94F8E80094F8E930FEF7CFBA40F64C
+:1036D0002553BBE5074A0849084840F6255315F02D
+:1036E000D2F8404080F311884FF0030002DFFEF76C
+:1036F000EBBA00BF3CAC01000CA801008CA7010094
+:103700002DE9F04F9C4695B05CF80C6B1D46136894
+:1037100086460C4660462E31174605F1080A0322FC
+:10372000D3F80090CDF828E005F11C0815F00AFE4A
+:1037300004F12A010422504615F004FE04F13A0176
+:103740000522404615F0FEFD4046052104F0CEFA64
+:1037500095F8213000F03F0060F30503012885F85B
+:1037600021300AD994F83F3003F01F02053AC3F321
+:1037700004010B2A85F8221002D915B0BDE8F08F9C
+:103780003A6896F8DC1000209060B4F83480A5F810
+:10379000128094F8362094F837005B0942EA002240
+:1037A00063F38401AA82638E86F8DC10ADF83030B2
+:1037B00010F078FA034696F8DC000B93C0F3820011
+:1037C00010F072FA0B9BDFF828C394F83110AA8A24
+:1037D00040F2E24B0BFB08F8184408FB00F000F540
+:1037E000742000F23F20ACFB00C04FEA580C800C64
+:1037F0000BFB01F1ACF1960CA862C5F82CC0E96393
+:10380000218FB14BADF8361042F2107C0CFB0181D8
+:10381000AE48434402F1060C0139B3FBF8F3B1FBA7
+:10382000F8F1A6F8C61099B261454044A6F8D21046
+:10383000B0FBF8F0A6F8CA0002DD891A063989B291
+:10384000A6F8CE100422514606F1E00015F07AFDEC
+:10385000237F04F11E0A5146C3F38013062212A8E7
+:103860008DF8403015F06EFD237F4FF48072A283F7
+:1038700099F82A0097F812B0C3F340128DF83C2053
+:103880000B920EF0E7FB0146062204F12B00002903
+:1038900040F0ED8015F081FD04F12503BBF1FF0F31
+:1038A0000E9304F11F0300F0EB801A465146584670
+:1038B0000DF000FEA27F0E980232A27712A9062216
+:1038C00015F040FD96F8DC30698AAA8AA286C3F317
+:1038D000820384F83830BDF83630E386618630469E
+:1038E0000AF05CF921462882E0807C680A9808F09A
+:1038F000C5FD2B8AE3800F2323710B9B2068002BCF
+:1039000000F0BA8095F809E02B7A95F80BC0A97AF7
+:1039100095F8212041EA0C2143EA0E234B4042F066
+:10392000400201216B8485F821202177214608F08F
+:10393000A5FD08F0ADFD95F84900012100F0070054
+:103940000FF0D0F8624A4FF0000A8346312300F2AC
+:103950005240A0FB02013360C6E901AA58A3D3E993
+:103960000023FDF7CDFBFC68BDF83020AD6A20F0E8
+:103970007F4040F2E24303FB023302215246F060F3
+:10398000A4F5AE7401201C4404F086F8484609F002
+:1039900097FA821C4F4BCDF80090D2B250460121CD
+:1039A00005F0CEFC0128A8EB0508A4EB0B047FD0A2
+:1039B00099F82830DB0773D430460AF0EFF8DFF8C7
+:1039C00010B1A8FB0B893EA3D3E900230546494665
+:1039D0004046FDF795FB404A069620F07F4AAAFB39
+:1039E0000223072101FB0A3340F23D11BF68089111
+:1039F0003A4907913A490591B8EB020069EB030196
+:103A0000F368049300264FF47A7200230396FDF7BF
+:103A100077FB2BA3D3E900238446A4FB0B01CDE95C
+:103A200001ACFDF76DFB053520F07F40EDB2313F75
+:103A30003B4600902A463046012105F015FC30F047
+:103A400002030CD0274A284928484FF49F7314F0EA
+:103A50001AFF404080F311884FF0030002DF01227B
+:103A60001046022104F018F815B0BDE8F08F04F1FB
+:103A7000240115F067FC0FE79DF83C30237755E7EC
+:103A80000E9811930622002115F087FC9DF8403016
+:103A9000A377119B12A91846062215F053FC11E7D3
+:103AA0000023012200931846114605F049FC83E7E4
+:103AB00008F086FD81453FF47BAF0CF09DFE77E773
+:103AC0008D49FD1A070000007FC3C901FF5962023A
+:103AD00000CA9A3B250801008D49FD1AC90701005B
+:103AE0004108010060AE01001CAD01008CA701007F
+:103AF00083DE1B43000000002DE9F041D0E90BC735
+:103B0000D0F828800CEB07043034A0450E4615464B
+:103B100018D81B4F18A3D3E90023ACFB0701FDF70E
+:103B2000EFFAA4EB080420F07F40306012A3D3E941
+:103B30000023A4FB0701FDF7E3FA20F07F40286093
+:103B4000BDE8F0810E4C0CA3D3E90023A8FB0401CF
+:103B5000FDF7D6FA20F07F4307F130003360A0FB79
+:103B6000040105A3D3E90023FDF7CAFA20F07F4042
+:103B70002860BDE8F08100BF8D49FD1A07000000F4
+:103B800000CA9A3B000000002DE9F04F0E7F174657
+:103B9000126891B00C464FF0000A1D46C2F808A00A
+:103BA000C6F3C013D2F800908DF8343024310622C9
+:103BB00080460EA82E6815F0C5FB237FA4F81CA034
+:103BC000797C97F812A0C3F3401211F001018DF82F
+:103BD00030200B9204F12B004FF0060200F0EF8032
+:103BE00004F11E0115F0AEFBBAF1FF0F04F125033D
+:103BF00004F11F0B00F0ED805A46504604F11E01FF
+:103C00000D930DF057FCA27F0D9B0232A2770EA9F7
+:103C10001846062215F096FB6B8AAA8A6386B9F8C5
+:103C20003030E386A28610F03BF884F83800304646
+:103C300009F0B4FF034628822146E38040467C68B1
+:103C400008F01CFC2B8AE3800F2323710B9B206858
+:103C5000002B00F0B08095F809E02B7A95F80BC0A6
+:103C6000A97A95F8212041EA0C2143EA0E234B4022
+:103C700042F0400201216B8485F821202177214602
+:103C800008F0FCFB08F004FC95F84800DFF880A180
+:103C9000C0F3C00100F007000EF022FF00248346AD
+:103CA000312300F252403360C6E9014450A3D3E906
+:103CB0000023A0FB0A01FDF723FAB5F812C0FB6848
+:103CC00020F07F40F06022460221012040F2E248CD
+:103CD00008FB0CF8A3F5877503F0DEFE484609F0F3
+:103CE00011FB021DD2B2444B00920121204605F087
+:103CF00027FB2346032201210094204605F020FBE8
+:103D0000304609F04BFF069640F2C923BF683B4A94
+:103D100008933B4B07920593F368049388FB0A8949
+:103D200000F1050C32A3D3E90023404649465FFA6F
+:103D30008CF60394FDF7E4F9104619464FF47A72B5
+:103D40000023FDF7DDF92AA3D3E900238446494681
+:103D50004046CDF808C0FDF7D3F9A5EB0B05844626
+:103D600023A3D3E90023A5FB0A01CDF804C0FDF786
+:103D7000C7F9313F20F07F403B4600903246204655
+:103D8000012105F071FA30F002030CD01D4A1E49E2
+:103D90001E4840F2CA2314F076FD404080F311889B
+:103DA0004FF0030002DF01221046022103F074FEEF
+:103DB00011B0BDE8F08F9DF8303023775FE715F044
+:103DC000ECFABAF1FF0F04F1250304F11F0B7FF4A5
+:103DD00013AF18460622002115F0DFFA9DF83430A3
+:103DE000A3770EA95846062215F0ACFA14E700BFD7
+:103DF0008D49FD1A070000008109010085090100B5
+:103E0000B5090100D4AE01001CAD01008CA7010072
+:103E100000CA9A3B000000002DE9F04F93B0044621
+:103E2000099090F93D00E4680D940028B8BF14345F
+:103E3000CDE90B1207934FF0FF024FF00003B8BF1C
+:103E40000D94CDE90F331C9EDFF8E4928DF83B20F2
+:103E500092461F4606921C469B4605931D4603E06C
+:103E6000069333789C4258D211AB0293AA4B01932C
+:103E70000FAB022100930DF13B0210AB002011911A
+:103E800005F0A4FA022800F0B880119B002B4FD156
+:103E90009DF83B30FF2B5CD0BAF1FF0F11D0109A88
+:103EA0005A450ED09D499E484FF4BB734A4614F0C4
+:103EB000EAFC404080F311884FF0030002DF9DF8D8
+:103EC0003B309A1E032A31D8052BC9D1069BFF2B04
+:103ED00028D1002009F06AFE099B834226D00B9965
+:103EE00090F93D203378002940F09380002AB9DB17
+:103EF000C268DDF83C80DDF82CA028320A920C9ACA
+:103F000012684245C0F094800A9ADDF840B09DF8EE
+:103F10003BA005929C424546A6D39DF83B30FF2B23
+:103F200000F0ED80347013B0BDE8F08F337899E77E
+:103F30007C497B4840F26D134A4614F0A4FC404093
+:103F400080F311884FF0030002DF9DF83B30FF2B18
+:103F5000A2D10C9B1A683378954238BF1546A3420C
+:103F600045D9059BDFF8C481EB18A3FB080107279F
+:103F700007FB031166A3D3E90023FDF7C1F86A4BE1
+:103F8000A3FB0020079AC0F38F218A424FEA9020BA
+:103F900040F2A3801C960FF2781BDBE900AB1D9E5C
+:103FA00099460BE0FDF7ACF8A9FB0030079BC0F386
+:103FB0008F218B424FEA902040F28E8006EB440C1A
+:103FC000090A06F814008CF801101C9991F800C039
+:103FD00005990134283501EB050EE4B2AEFB08016A
+:103FE000A44552465B4607FB0E11DBD81C9E0C9B7A
+:103FF0001D60347013B0BDE8F08F119B022B7FF46D
+:1040000044AF0221002005F027FA119B022BF8D0C3
+:104010003BE7002AC168DDF83C8052DA01F13C023E
+:104020000A920C9A126842454FF0140ABFF46CAF22
+:10403000954238BF15469C423CD2059B0D9A1C9672
+:1040400013449A44CDF820A0DDF874A01BE0FDF7DE
+:1040500057F8354B079EA3FB0030C0F38F27B742BC
+:104060000AEB440204F101034FEA17214FEA9020C2
+:1040700005F1280535D20AF8140051701C9A1278FF
+:10408000DCB2A24223D92946404605F0FFF9059B40
+:10409000264A089E2B448446B445A3FB02014FF0F8
+:1040A000070202FB03114FF0000B19A3D3E9002311
+:1040B000CDD21C9E0C9B1D60079BBB4216D933784A
+:1040C00022E701F128020A924FF0000A17E70C9B41
+:1040D0001C9E1D60337817E71C9E0C9B00251D60FD
+:1040E00087E70C9B1C9EC3F800B05D469DF83B30F3
+:1040F000FF2B3FF42EAF347013B0BDE8F08F0C9B54
+:104100001B689D4238BF1D4671E700BFAFF30080BA
+:1041100000CA9A3B00000000411001000CA80100F9
+:104120008CA701005CAF01005917B7D18D49FD1A6A
+:1041300018AF0100000000002DE9F04F8FB01C46C1
+:10414000FF26099304310023DFF81081DFF810B156
+:10415000DFF810A1DFF8109123608DF82F6004962E
+:1041600005930446089115460C9306930DAF0CAECB
+:104170004FF0020CCDE9018700962B460DF12F027E
+:1041800021460020CDF834C005F020F902282FD0B8
+:104190000D9B002B32D19DF82F30FF2B3ED0052BED
+:1041A000E6D1002009F002FD0028E1D090F93D3071
+:1041B000002BDDDB0499C3680C9AFF2903F104038B
+:1041C0000CD0069907931046049205F05FF9059B01
+:1041D000089A99188842049A079B22D8CDE905329B
+:1041E0009DF82F300493C3E72146002005F034F9F1
+:1041F0000D9B022BF8D00D9B002BCCD052235A469E
+:104200005146484614F03FFB404080F311884FF080
+:10421000030002DF9DF82F30FF2BC0D1049BFF2B42
+:1042200010D0DDE905320C481344A3FB000107223E
+:1042300002FB031106A3D3E90023FCF761FF099BEE
+:10424000803018600FB0BDE8F08F00BFAFF3008082
+:1042500000CA9A3B000000008D49FD1A4110010080
+:1042600018AF01005CAF01008CA701000000000046
+:1042700070B51C4682B01546064601AA022001957B
+:10428000FFF75AFF23680BB30198431B1B021FD48F
+:10429000294605F0FBF81A4B0246A0FB0301072351
+:1042A00003FB021114A3D3E90023FCF729FF2268C2
+:1042B00002442260002A09DB40F2E24101FB06F0E1
+:1042C000904203D2121A9042FCD3226002B070BD19
+:1042D0000146284605F0DAF8094B0246A0FB030127
+:1042E000072303FB021104A3D3E90023FCF708FF13
+:1042F0002268121A2260DDE700CA9A3B0000000023
+:104300008D49FD1A000000002DE9F041B0F8802130
+:1043100088B0054640F2E243454805AE03FB02F390
+:10432000002783FB000106243FA3D3E90023776025
+:104330000597B7608DF80F40FCF7E2FE0DF10F0214
+:104340000196B5F87631009204460121284604AA68
+:104350000494FFF761FD9DF80FC00CF1FF34E4B247
+:104360000DF11603394603EB44042F4605F10C0EFC
+:104370004FF6FF7097F8813197F8802142EA0322C7
+:104380000FFA82F8BCF1000F09D03346824203D005
+:104390001988914217D0012102339C42F6D102378D
+:1043A000BE45E7D1F1B9BDF81430D5F8F01040F2B0
+:1043B000E24202FB03F2180AC5F810210B704870A4
+:1043C00008B0BDE8F081D5F8F01040F2E24303FBFD
+:1043D00002F3120AC5F8103181F800804A7008B063
+:1043E000BDE8F08195F8E82095F8703185F8E9206E
+:1043F00085F871310CF0E2F9D5F8F03013F8052C9E
+:1044000003252A4311240F20202103F8052C03F84B
+:10441000045C03F8024C03F8010C197008B0BDE805
+:10442000F08100BFAFF300808D49FD1A0700000046
+:1044300000CA9A3B000000002DE9F04F83B004460B
+:1044400010F0ECFC10F0FF0F0AD10EF05FFBA0485B
+:10445000214610F0A1FB03B0BDE8F04F10F0B0BC56
+:1044600010F0FCFC5FFA80F810F082FDC6B210F08C
+:1044700089FD074610F0AAFFC5B210F095FF8246ED
+:1044800010F03EFD81460EF041FB002E40F0AB8067
+:10449000002D40F0BA80FF27B8F1000FD7D0A37DE0
+:1044A000190700F1A880002E40F0E781012008F0F4
+:1044B000E9F88046002800F0F781A3685FFA89F6E2
+:1044C000002B00F0D680A37D1A0740F1E28198F816
+:1044D0001C0010F00F0340F09E8098F81D30252B33
+:1044E00000F2A481042008F0CDF80028AFD010F02D
+:1044F0006DFEA36A814643B9E28C40F2712303FB4F
+:1045000002F3B0FBF3F203FB120923687148DB6886
+:104510000722A3FB000102FB03116BA3D3E90023D5
+:10452000FCF7EEFDA0F242334B4590D310F0C2FCF5
+:10453000D4F808B010F0A0FC98F81C300278C3F34F
+:104540008013DB0102F0500243F0250313432222C3
+:1045500003704270824638460DF08AFDE37D00907C
+:10456000DA0701460AF1020040F1B581002900F0A6
+:10457000B2819AF8003043F040038AF800300622F6
+:1045800014F0E0FE062208F11E010AF1080014F002
+:10459000D9FE04220BF108010AF10E0014F0D2FE3C
+:1045A00003220BF10C010AF1120014F0CBFE0123DF
+:1045B0008AF81530BBF81230019310F007FED4F8DA
+:1045C000109000F5DB63B9F1000F00F0AA810199AA
+:1045D00040F2E24202FB01F2B9F1000F01DB4B4570
+:1045E0007AD99144F8E7A07DF9B2C0F3C0000DF08C
+:1045F0005DFD074650E7002E7FF458AF38460DF0BA
+:1046000011FE00287FF452AF21E75FFA8AF00DF027
+:10461000B7FD074640E7012B40F0E08098F81D30D9
+:104620000C2B7FF414AF08F12409C00949463A461F
+:104630000DF0A6FE00287FF455AFE37DDB0700F107
+:10464000F781A37D98F81C00C3F38012B2EBD01F52
+:1046500000F02882C3F3C10398070AD598F91C30EB
+:10466000002B06DA98F8293003F0C003402B3FF402
+:1046700039AF98F81C0010F00F0340F0AF8098F8A5
+:104680001D30252B3FF6E3AE94F91620002A03DAFD
+:10469000A268002A00F06C81252B98BF4FF000091A
+:1046A00000F2C480002B3FF4D2AEA368002B7FF44D
+:1046B000CEAE002D14BF3946FF214A4630460FF0DA
+:1046C0000DFAC4E6AFF3008000CA9A3B0000000078
+:1046D000313801008D49FD1ACD499AF81520A9EB12
+:1046E0000303A1FB0313C3F38F230132AAF816308F
+:1046F0008AF81520BBF81210BBF81420A38AAAF878
+:104700001C30AAF81810AAF81A200BF11C01052277
+:104710000AF11E0014F016FE9BF822209AF82330AE
+:1047200062F304038AF823300FF0BAFA9AF82330C0
+:1047300060F347138AF82330504610F013FB10F053
+:1047400063FB002840F0F380B248214610F024FAC1
+:10475000002E40F00881237943F00102DB0722712B
+:1047600000F1F38007F0ACFF0A23064603714FF611
+:10477000FF73242298F81C80C38051461C3014F02B
+:10478000E1FD337FB460C8F3401868F34513337715
+:1047900010F0C0FC00213061084610F0F3FA002D43
+:1047A00008BFFF27B776E27DA9EB000012F00102F7
+:1047B000706103D0009B1A1E18BF0122737E62F342
+:1047C0000003737607F07CFF3146F060306807F035
+:1047D0008FFF03B0BDE8F04F07F09ABF062B71D0F2
+:1047E000022B75D0012B21D198F81D300C2B7FF4B2
+:1047F0002EAE08F1240AC00951463A460DF0C0FD1C
+:104800008146A8BBA37D98F81C00C3F38012B2EBCD
+:10481000D01F00F01481C3F3C103980704D598F9A1
+:104820001C30002BC0F2158198F81C0000F00F001E
+:1048300004287FF40CAE98F81D30252B3FF607AE08
+:10484000A37DDA077FF503AE10F016FB98F81C3055
+:104850000278C3F38013B3EBD21F7FF4F8AD0830B6
+:10486000062208F11E0114F05DFD00287FF4EFAD73
+:1048700098F81D304FF0000914E7394628460DF02E
+:104880000DFD00287FF412AEA37D1B077FF5DFAD81
+:104890000CE6FF2F2ED0237EDB1BB3FA83F35B09DC
+:1048A000002B7FF414AEE4E65B4A5C495C4840F2BE
+:1048B000972313F0E8FF404080F311884FF0030086
+:1048C00002DFFAE598F81D30252B7FF6DDAEADE767
+:1048D00098F81D30E0E6A37D9AF80020C3F380131A
+:1048E00063F386128AF8002004F11901062214F0FD
+:1048F00029FD47E698F81C00C3F34013C0F380126B
+:1049000093427FF4B8AE062208F11E0104F11F00A5
+:1049100014F008FDB0FA80F35B09002B7FF4D7ADEB
+:10492000A7E68AF816908AF817909946E2E63A4A7E
+:104930003C493B484FF4447313F0A5FF404080F3DB
+:1049400011884FF0030002DFFEE6334A364934484F
+:1049500040F2363313F097FF404080F311884FF058
+:10496000030002DFFEE610F0BDFA8BF8A500F2E6C8
+:10497000962010F01DFB002010F082FA002D14BFCD
+:104980003946FF21304600220FF0A8F800287FF4B6
+:104990005EAD10F071FA98F81C300278C3F3801302
+:1049A000DB01054602F0700243F0030313430C22BF
+:1049B0002B7038466A700DF05BFBE37DDE07014625
+:1049C00053D5002851D02B78284643F0400300F8F7
+:1049D000023B062214F0B6FC08F11E01062205F186
+:1049E000080014F0AFFC284610F0BCF910F00CFAE7
+:1049F000002849D110F0E2FBA37D0C4843F00103ED
+:104A00002146A37503B0BDE8F04F10F0C5B800BF54
+:104A10005917B7D17D3A0100E4B2010030B301006B
+:104A20008CA70100B4B2010000AA01004D380100BA
+:104A300038460DF01DFB00287FF41BAE01E6514601
+:104A4000062204F1190014F06DFC002835D0A37D76
+:104A5000E1E698F8293003F0C003402B7FF4E4AE80
+:104A600098F81D304FF001091CE6A37D2A78C3F3A6
+:104A70008013284663F3861200F8022B04F1190113
+:104A8000062214F05FFCA7E70D4A0E490E4840F2DB
+:104A9000913313F0F8FE404080F311884FF003008B
+:104AA00002DFA7E74946062204F1190014F03AFC98
+:104AB00000283FF417ADA37DCCE598F81D30F1E553
+:104AC000E4B20100B4B201008CA7010008B50020D7
+:104AD00000F0BAFD20B10348BDE8084013F0D3BE92
+:104AE0000148F9E7D0B60100E5B601002DE9F04F25
+:104AF00087B00F461946109B9DF844B09DF848A01A
+:104B00001F4C06461425104698464FEAE37950EAB2
+:104B1000010319D1142D139C14BF013530232C44EB
+:104B200008BF8DF81430152C1BD0153C002C1ADC56
+:104B30001DF8050039460135B047152DF8D1002C78
+:104B400019DC07B0BDE8F08F42464B46FCF7D8FAB7
+:104B5000A25C0DF8052084460B4660461946013DCF
+:104B6000D5E70024E4E7BBF1000FE1D03946504619
+:104B7000B047013CDAE739465046B047013CDEE732
+:104B800000B701000B6801330B60014B1B6818472D
+:104B9000100000202DE9F04F002687B005468B4617
+:104BA0001C4602F1FF3A4FF0FF3837464FF000093C
+:104BB00007E0B9F1000F0BD1252800F00A81594612
+:104BC000A8471AF8010F0028F3D107B0BDE8F08F0D
+:104BD0007A280AD8622810D8302851D044D82528FD
+:104BE00000F0F5802D2800F0FB8059462520A847CD
+:104BF0009AF800005946A847D8E7A0F16303172B9D
+:104C0000F3D801A252F823F0C74D0000C94C0000B0
+:104C1000EB4B0000EB4B0000EB4B0000AB4C0000FB
+:104C2000C94C0000EB4B0000EB4B0000AB4C00000C
+:104C3000EB4B0000EB4B0000EB4B0000434D000042
+:104C4000EB4B0000EB4B00008F4D0000EB4B0000E6
+:104C5000C94C0000EB4B0000EB4B0000714C000016
+:104C6000EB4B0000AB4C0000392815D95828BCD1BB
+:104C70009AF80030702B6ED154F8042B002375E0A5
+:104C8000B8F1000F0BDA002F00F0AC80A0F1300873
+:104C9000002F08BF022794E7B8F1000FF6DB0A23C4
+:104CA00003FB0808A8F13008F2E7682803D1682E52
+:104CB00006D1482685E76C2802D16C2E00F094803E
+:104CC000002E92D106467CE77A2E06D1A14659F8ED
+:104CD000042BD317752823D10FE06C2EF6D04C2E61
+:104CE00005D1073424F00709F9E80223F2E7752813
+:104CF000226804F1040912D10023F81E18BF012014
+:104D0000012F0CBF3024202401900A20CDE9024855
+:104D1000009059462846FFF7E9FE4C4646E7D31770
+:104D2000002A73F10001E8DA59462D20CDE9042369
+:104D3000A847DDE90423524263EB430308F1FF383F
+:104D4000DBE759463020A84759467820A8474FF05E
+:104D5000080801278CE76C2E8ED04C2E8CD1E31DD9
+:104D600023F007031C465B6854F8082BF81E18BF95
+:104D70000120012F0CBF30212021CDE90218102184
+:104D80000190009128465946FFF7B0FE0EE754F80F
+:104D9000043B99464A4619F8010B78B9032F25D1EF
+:104DA000A2EB0309A8EB0909B9F1000F7FF7FEAEEA
+:104DB00059462020A84709F1FF39F5E759460493E1
+:104DC000A847049BE6E754F8040B594613E75946F5
+:104DD00011E74E464F464FF0FF384FF00109F0E61D
+:104DE0000327EEE60127ECE64C26EAE68146E8E6F4
+:104DF00007B50B46002102460191034801A9FFF7C0
+:104E0000C9FE03B05DF804FB854B00002DE9F84FA7
+:104E1000B0F8189019F00808044693460DD00129FF
+:104E20000CBF49F0100949F02009A0F818908BF345
+:104E30001188BFF36F8FBDE8F88F09F007090229C9
+:104E400007D1204613F02CFD0028F0D00128238B39
+:104E500050D16769218B002F15DA256821F00701F1
+:104E6000C4E9008841F0010121830026218B01F073
+:104E7000070ACA4502D0A368002B5CD10DB9002EE9
+:104E800074D0002358E001F007035A1F012A20D8EC
+:104E900021F00701062B256889B2C4E900880CD1EE
+:104EA000002D2B4638BF00232BB1628B1B680132CB
+:104EB0006283002BF8D141F002012183204613F0D8
+:104EC000EFFC06460028D1D0238B43F02003238338
+:104ED000CBE7042B0CD121F0070189B221832046B6
+:104EE00013F0DEFC05460028BFD041F020012183ED
+:104EF0000025BAE7032809D1226923F007031668C1
+:104F000043F00603238300252F46AFE7042806D18C
+:104F1000226923F00703566843F00403F2E70528EB
+:104F200006D1226923F00703966843F00503E9E7F9
+:104F300000252E46E8E7012341F0080121838BF389
+:104F40001188BFF36F8F03BB002D33D116B12149F8
+:104F50002046B0474FF02003EFF3118B83F3118805
+:104F6000BFF36F8F238B23F008032383238BDA0691
+:104F700028D523F0100323830121B4F8189009F0F9
+:104F8000070900297FF45BAF51E7A1680029DBD056
+:104F90000B68D1F804B0002B38BF00239946524665
+:104FA0003B462046D847B9F1000FCDD0D9F80030A4
+:104FB0004946EEE729463B46524620462D6813F007
+:104FC0008BFCC1E713F020011EBF23F020032383D5
+:104FD0000221D2E705890100F0B5104B104C114DAC
+:104FE000E41AA4106C43104DD5F824C00025A54246
+:104FF00002D16FF02200F0BD5F6867450AD31E69D9
+:1050000046B197F802E00779BE4503D13346BDE8C3
+:10501000F040184701352433E9E700BF7806002047
+:105020009C060020398EE338180B00202DE9F04152
+:10503000124B134C134DE41AA4106C43124DD5F8C7
+:1050400024C00025A54203D16FF02200BDE8F08105
+:105050005E6866450ED39F6967B196F8028090F846
+:1050600004E0F04503D13B46BDE8F04118477679AE
+:10507000012EF8D001352433E4E700BF7806002084
+:105080009C060020398EE338180B00202DE9F843E8
+:105090000F4C104B17461B1B0F4A9B1005460E4624
+:1050A00002FB03F94FF00008C14502D16FF0220066
+:1050B0000BE063691BB908F101082434F4E73A46B0
+:1050C0003146284698470028F5D1BDE8F88300BF4F
+:1050D000780600209C060020398EE33807B58378D7
+:1050E0008DF800300379427943EA0223ADF80230AB
+:1050F000C378684603F003038DF8043001F060FCC8
+:1051000010F1450F04D018B1002003B05DF804FB86
+:105110009DF8000001F0D4FC10F1450F01D00028EB
+:10512000F2D1024B012083F8B900EEE7180B002002
+:105130002DE9F14F254B264C264F1B1B9B105F433F
+:10514000031F012B05460E4625D8234B93F8B920A3
+:10515000984602B300F002FD042D1CD14FF0000967
+:105160004F4515D0D4F820B04FF0000A227F5FFAE7
+:105170008AF39A4203D809F101092434F0E70BEBD2
+:10518000C3030AF1010A187901F0BEFC0028EDDA28
+:10519000002388F8B9300E4C4FF00008B84508D10C
+:1051A0000D4B1B6A7BB13146284601B0BDE8F04F7C
+:1051B0001847E3681BB1324629462046984708F154
+:1051C00001082434EAE701B0BDE8F08F9C06002016
+:1051D00078060020398EE338180B00202DE9F04FB7
+:1051E000B04DAB6985B006460C46904663B933783E
+:1051F00003F01F03012B00F08880022B00F0D18008
+:1052000043B16FF0150002E098470028EFD105B0D8
+:10521000BDE8F08F72787088D8F80030092AF0D88D
+:1052200001A151F822F000BF5152000003520000CA
+:105230000352000003520000035200005D520000C0
+:105240006752000003520000955200009F52000078
+:105250000020012258701A7002236FE0C0B201F0E2
+:105260009FFB0020D3E7020A131F012BC9D9072A8D
+:10527000C7D86B6A0021C0B21D78002DC1D05E78FE
+:10528000964203D1884200F0F58001312B44F3E7C8
+:105290001B78F5E095F8BA201A700123F0E0C7B248
+:1052A0008DF80F7077B14FF0FF086C6A0026C14689
+:1052B000237853B9EB691BB10DF10F010320984717
+:1052C000002E9ED085F8BA70CBE76378042B0DD002
+:1052D000052B0ED0022B06D194F805809DF80F30D7
+:1052E000434508BF012623781C44E1E794F8039066
+:1052F000F9E79DF80F304345F5D1B9F1000FF2D130
+:105300002046FFF7EBFE0646EDE795F8BA30002B96
+:105310003FF477AF6F6A96F804903B4619780029FE
+:105320003FF46FAF5A78022A03D11879484500F24A
+:10533000A9800B44F2E7002018700123236066E780
+:1053400096F802B0FF26B2464FF000083B783BB912
+:10535000EB6913B14146072098470020206056E7CB
+:105360007B78042B04D0052B0BD03B781F44EDE752
+:10537000BE7897F803A0B145F7D1D34508BFB8462A
+:10538000F3E7B145F1D1D34507D0B878019000F0EB
+:10539000BDFB019801F0B8FBE7E73846FFF79EFE3A
+:1053A000E3E73079D8F800808DF80F0030F0800CFA
+:1053B0001CD03D4B3D4A3E49D21A92104A434FF011
+:1053C000000E72457FF61DAF196A93F81C900027F6
+:1053D00004395FFA87FACA4503D30EF1010E24336C
+:1053E000EFE7013711F837A08245F2D17378012B2E
+:1053F00013D0032B28D0002B7FF403AFBCF1000F98
+:1054000004D095F8BA30002B3FF4FBAE414601F0D2
+:105410003DFB002088F801001EE77388002B7FF415
+:10542000F0AEBCF1000F04D095F8BA30002B3FF479
+:10543000E8AE01F00DFBEB69002B3FF412AF0DF16C
+:105440000F01092098470CE77388002B7FF4D9AE31
+:10545000BCF1000F04D095F8BA30002B3FF4D1AE68
+:1054600001F0D0FAEB69002B3FF4FBAE0DF10F0118
+:105470000820E7E7022AC8F800307FF409AF5B880C
+:105480002360EEE67078D8F800300A283FF453AF76
+:105490000B283FF455AF00287FF4B3AE1870587056
+:1054A0002260B4E6180B0020780600209C0600203D
+:1054B000398EE33808B509480378C3F341130A333A
+:1054C00050F823303BB100F1080200F11001984779
+:1054D000C043C00F08BD1846FCE700BF180B0020F2
+:1054E00013B50D4C237D7BB9E268A168019201AB35
+:1054F000802013F032FD0199A268E3680A445B1A28
+:10550000A260E36002B010BD00231A461946802055
+:10551000237501F017FBF5E7180B002030B585B0B7
+:105520000B46002102460191002856D1002B33D1B1
+:1055300008220DEB020113F089FE002804DA802016
+:1055400001F060FA05B030BD294CBDF80E3002996B
+:105550002160802B03999DF80820616006D9D1094C
+:1055600004D1802001F04EFA0020E9E721492361AF
+:10557000C4E90213002121750BB1D309E2D0FFF772
+:1055800099FF0028DBD0E28823699A42D4BFE26009
+:10559000E360FFF7A5FFD5E7154CD4E90215002D10
+:1055A00001AB04DC13F052FE0028CBDAC7E72A4631
+:1055B00013F04CFE0028D4DB0199A268E3680A448A
+:1055C0005B1AA260E360002BBCD104F13803A36036
+:1055D000FFF770FF0028DCD1B1E78028B2D1044B7F
+:1055E000DA68002AD5D11B7D002BD2D1AAE700BFF3
+:1055F000180B0020500B0020054B064A9A62064A01
+:10560000DA62064A1A63064A58629A6100207047B5
+:10561000180B0020DD510000D94F00008D50000014
+:105620002D500000074B10B593F8B84024B900F096
+:10563000AFF918B1FFF7E0FF002010BD4FF0FF30C9
+:10564000FBE700BF180B00202DE9F7430446374D58
+:1056500037484FF0FF324FF0FF3312F013F995F84F
+:10566000B860002E42D133482C62E86101F074FB2F
+:1056700001F046F9041E3ADB00F0B4FA041E36DBF2
+:1056800040236846ADF802308DF804608DF8006064
+:1056900001F096F9041E2ADB802768468DF8007019
+:1056A00001F08EF9041E22DB2349304601F042FB53
+:1056B000041E1CDB2049384601F03CFB041E16DBAF
+:1056C0001E4C1F4B1F4A1B1B9B1002FB03F9B145CD
+:1056D00014D1002001F0F4F9041E08DB802001F051
+:1056E000EFF9041E03DB012385F8B83000241048CD
+:1056F00012F040F9204603B0BDE8F083D4F82080D2
+:105700000027237FFAB2934202D801362434DEE721
+:1057100008EBC20358F83210187901F00BFB01377F
+:105720000028EED04FF0FF34E1E700BF180B002057
+:10573000F4040020315100001D55000078060020BF
+:105740009C060020398EE33830B51C4B89B003AA83
+:1057500003F1100518685968144603C40833AB42B6
+:105760002246F7D11B7823700822002101A813F0EC
+:1057700014FE12220021124813F00FFE082101A886
+:1057800013F073FD002816DD0D4901AA002012F860
+:10579000013B08AC04EB131403F00F0314F8144C92
+:1057A0000C7008AC2344013013F8143C4B700828EB
+:1057B00001F10201EBD1024809B030BD11B701007F
+:1057C000683B00202DE9F04F6C4A6D4B6D499B1AE8
+:1057D00087B09B1000264B43044601934FF0011AFB
+:1057E000B0463746B146934623783BB9664AA01C7B
+:1057F000904200F0C080FFF7E5FF17E06378052BCB
+:1058000005D8DFE803F07F04037F072BA146237848
+:105810001C44E9E7E378002BF9D1A3789BB9574AF8
+:105820001F46019BBB4204D14FF0FF3007B0BDE8DB
+:10583000F08F53689C4202F1240209D1242303FB18
+:1058400007B7BB6833B908F101085FFA88F8DEE7EB
+:105850000137E6E7414620469847F4E7002FE3D0BA
+:10586000002301213A7F9342DEDA3A6AA57802EBFF
+:10587000C3021079854201D00133F3E7012594F882
+:1058800003C094F805E00CF0030C8DF814C094F8F4
+:1058900004C04CEA0E2CADF812C094F902C0BCF161
+:1058A000000FE8B225DA05F1100C01FA0CFC1CEA35
+:1058B0000A0F23D160F07F008DF8100004A8CDE915
+:1058C000023213F0ABFCDDE902320121B0B99DF8E0
+:1058D0001030A37013F0800F137118BF10350B46F2
+:1058E00015BFAB4003FA05F54AEA030A4AEA050A7E
+:1058F0008DE701FA05FC1CEA0A0FDDD00135102DF9
+:10590000BDD1B9E7032E1ED1FFF71EFF054668B1D2
+:1059100013F0F5FC029048B11C4813F0F0FC029A19
+:10592000824203D12946A01C13F00CFD23786FF0AE
+:105930000201E218091B04EB53030020D14213D5E6
+:105940000136F6B263E7002EF0D1B9F1000F3FF453
+:105950006BAFA4EB090389F80230C3F3072389F87E
+:10596000033089F80480EBE702F8010C13F80159C1
+:1059700002F8025DE2E7184658E700BF780600200B
+:105980009C060020398EE3387706002011B701000D
+:1059900008B50448FFF716FF0028024818BF00208A
+:1059A00008BD00BFF8050020014600F10803BFF361
+:1059B0005B8F53E8002F42F0010043E8000CBCF17C
+:1059C000000FF6D1BFF35B8FD30702D4014814F068
+:1059D0000FBA7047780A002073B5184C06460D467A
+:1059E0000023442202FB03F0015DB14212D10444C2
+:1059F0006B1E012B0CD894B9012D09D101AB0122EA
+:105A00000DF10301304601F00DF9019B002BF5D19A
+:105A100002B070BD0133042BE4D10024E8E714F098
+:105A200018FB034604F134000BB1012D02D113F031
+:105A3000B1FAEDE7FFF7B8FFEAE700BFD40B0020AB
+:105A40002DE9F74F0546904699464FF02003EFF3B6
+:105A5000118B83F31188BFF36F8FDFF8ACA00024A4
+:105A60004427019107FB04F600220023504612F060
+:105A700083FB019958B9234FBC19636813F1100FC8
+:105A800014D10193504612F051FB019B06E0013402
+:105A9000042C0AF1440AE4D16FF00B038BF3118854
+:105AA000BFF36F8F184603B0BDE8F08F0C9B6361A6
+:105AB0000D9BA3616FF00F032061C4E90218BD556F
+:105AC000C4F840906360284601F04CF958B128466C
+:105AD00001F048F9B8FBF0F202FB108018B1236C1A
+:105AE00043F00403236419F0020F06D006F13400DA
+:105AF0003844FFF759FF0023D0E7284601F0D8F8D3
+:105B00000346CBE7D40B0020F00B002070B54FF01C
+:105B10002003EFF3118483F31188BFF36F8F0E49D5
+:105B20000022442505FB02F35E5C86420BD1CA18B5
+:105B3000506810300AD16FF0470034335060C818F5
+:105B4000FFF732FF02E00132042AEBD184F311881F
+:105B5000BFF36F8F70BD00BFD40B0020F8B50F4CA2
+:105B600000256FF047074FF02003EFF3118683F312
+:105B70001188BFF36F8F6368103304D104F13400D0
+:105B80006760FFF711FF86F31188BFF36F8F013550
+:105B9000042D04F14404E6D1F8BD00BFD40B00206D
+:105BA000F0B504468BB00D4616461F460122002173
+:105BB00004A814F03EFA03AB0193094B009332465C
+:105BC0003B4629462046FFF73BFF38B94FF0FF32EE
+:105BD0004FF0FF3304A812F0CFFA03980BB0F0BDDA
+:105BE0008B8F0100F8B50025094C0A4F2E46C4E9F9
+:105BF0000D67E663012204F11C001146013514F023
+:105C000018FA042D04F14404F1D10020F8BD00BFBE
+:105C1000D40B0020958F0100014B9970704700BF95
+:105C20001306002007B50B68019313680093002248
+:105C30000023002001F07EFD014630B1044813F03E
+:105C400081FC002003B05DF804FB6FF00B00F9E766
+:105C50003805002013B50C1E13DD01F02DFE0F4B8F
+:105C60000093012801944FF0FF324FF0FF330CBF37
+:105C70000620022001F05EFD014668B1084813F0DD
+:105C800061FC002301930748074B00930349007B05
+:105C900001232022FFF7D4FE02B010BD7A3B002082
+:105CA0003805002014000020555C000070B5124E2D
+:105CB000124D4FF0FF324FF0FF33304613F024FC0B
+:105CC000044601F0F9FD012806D103232375A289BA
+:105CD000A168287D02230CE0237D012B05D0032B36
+:105CE000F5D020460FF020FEE3E7A289A1682879CD
+:105CF0000623FFF755FFF4E75005002014000020AD
+:105D000038B5084D4FF0FF324FF0FF33284613F0FF
+:105D1000FBFB044601F06AFD0028F3D020460FF09B
+:105D200003FEEFE73805002038B504214FF6104098
+:105D300013F0C0FB00F1080504460221284613F0C9
+:105D40000EFC0223002143700170284613F016FC5C
+:105D50000121284613F012FC0248214613F0F2FB01
+:105D6000FF2038BD50050020032910B502D00429BA
+:105D700008D010BD094B0022BDE81040187B114629
+:105D8000FFF768BF054C2079FFF7C0FE207DFFF7C5
+:105D9000BDFE207BBDE81040FFF7B8BE1400002018
+:105DA000F0B51A4889B001F097FD044658BB184871
+:105DB000022101F087FD002600276FF00705CDE9DD
+:105DC0000667CDE90245CDE90044124B124904941F
+:105DD0004FF48062114812F043FA11490F4814F051
+:105DE00040F9104B10490094CDE90667CDE9035402
+:105DF000CDE901444FF400720C4812F031FA0C491D
+:105E00000A4814F02EF9204609B0F0BD50050020D4
+:105E10002C000020015D0000E03B0020A0060020D7
+:105E200022B70100AD5C00000040002020070020E8
+:105E30002CB701000E4A70B5841AA3100D4C5C43B8
+:105E40000546E4B20C2000FB04200E464021084425
+:105E500013F03CF9011E05DB074B03EBC404636838
+:105E60009847002128463346BDE87040184700BFD8
+:105E7000F40C0020B76DDBB6DCA601002DE9F04183
+:105E8000104E841BA310104C5C43E4B20C256543F8
+:105E9000804605F140000F463044402113F02FF9B1
+:105EA000011E09DB094A7319C3E90E27084B53F891
+:105EB0003430BDE8F041184740463B46BDE8F0416C
+:105EC000184700BFF40C0020B76DDBB661910100EC
+:105ED000DCA60100002270B501210446104601F045
+:105EE000A9F8002001F074F80F4810F083FA0F4B66
+:105EF000984215D110F08EFAE6680D49304612F03E
+:105F00001EFD00280BDB01253564E468084904F117
+:105F10001C0012F014FD002801DBE564002070BDB8
+:105F20006FF00400FBE700BF695F00000000AD0BED
+:105F3000ECA6010001460C2309484B4370B5C41878
+:105F4000D4E90E5600224033A263184413F0F5F84A
+:105F50002DB132462B460348BDE87040184770BD4E
+:105F6000F40C00206804002010B1012804D0704710
+:105F7000034B1B6C5B0701D1FFF7DCBF704700BF11
+:105F8000F40C002008B54FF02003EFF3118183F3E8
+:105F90001188BFF36F8F124A136843F0020013F0A9
+:105FA000010310600CD04FF08042D2F80C34D2F8CC
+:105FB0000C2413F0010303D00A4813F0BEF80123A8
+:105FC00081F31188BFF36F8F23B1BDE80840002033
+:105FD000FFF7B0BFBDE80840012010F029BA00BFAC
+:105FE000440D0020340D0020094BBFF35B8F53E8B4
+:105FF000002F22F0020143E800100028F7D1BFF380
+:106000005B8FD30702D4012010F044BA704700BF61
+:10601000440D002010B58AB000230122CDE90632DC
+:10602000019308AA0A4BCDE9082204AC01AACDE9E4
+:106030000444CDE9023413F0B9F8002805DB4FF42D
+:1060400080420023204612F097F80AB010BD00BF2E
+:1060500073910100024AC3B21C2003FB0020704769
+:10606000F40C0020094BBFF35B8F53E8002F42F084
+:10607000010143E800100028F7D1BFF35B8F9307BD
+:1060800002D4012010F0D4B9704700BF440D0020A5
+:10609000094BBFF35B8F53E8002F22F0010143E867
+:1060A00000100028F7D1BFF35B8F930702D40120C3
+:1060B00010F0F0B9704700BF440D00202DE9F843FF
+:1060C0003A49BFF35B8F0646012251E8003F41E8A1
+:1060D00000200028F9D1BFF35B8F33B9344935482C
+:1060E0004B60CB608A6012F03DFC731E012B32D8EE
+:1060F000012E07D14FF08043D3F81C3403F0030383
+:10610000012B28D013F0A5FF044618B92A4B1B78A1
+:10611000002B44D14FF02003EFF3118583F3118856
+:10612000BFF36F8F0124254FDFF89480DFF8949040
+:106130004FF08042D2F81834D2F81824D2030CD58C
+:1061400003F00303012B01D0012E06D10CB385F31C
+:106150001188BFF36F8FBDE8F883ACB1284600F01B
+:10616000F3FF4FF08042D2F81835002BE0D13968A8
+:106170000029DDD03B603B680123C2F81835C8F820
+:106180008031C9F80030D3E70021212011F0A8FFA9
+:10619000E7E74FF080430222C3F80423DBE74FF028
+:1061A00080430222C3F808230546BCE7480D0020BF
+:1061B000E40C0020100D0020CE3B00200401004024
+:1061C00000E100E00800004000F07F03082B42B22D
+:1061D00004D010F0780F01D000207047002A00F0A2
+:1061E0000F0300F0080006DA68B90948242202FB10
+:1061F00003004030704740B903F10900044B2422EA
+:1062000002FB0030F5E7034870470348704700BFC2
+:10621000441F0020A4200020E8210020014601485E
+:1062200013F0E6BD6805002008B5044810F0ACF98D
+:10623000034810F0EDF9002008BD00BF3FB7010092
+:10624000F8A6010010B51149BFF35B8F01F11803E7
+:10625000002253E8000F012803D143E80024002C5A
+:10626000F7D1BFF35B8F0CBF012010460CD14C69F6
+:106270000431204612F0E4FB10F1450F04D1204612
+:10628000BDE8104012F0B7BB10BD00BF441F002096
+:106290000949BFF35B8F51E8003F43F0010241E839
+:1062A00000200028F7D1BFF35B8FDB0703D403483E
+:1062B000083913F09DBD70476C1F0020A007002017
+:1062C00010B5064C00220023204611F099FB18B1AE
+:1062D000043014F0CAF8F5E710BD00BF68050020CF
+:1062E000DFB50026002702ACCDE90067144818226C
+:1062F000214613F0E1FC00281BDAFFF7E1FFCDE9AE
+:1063000000670F481822214613F0D6FC00280CDB4A
+:10631000029B94E803001A1D82E8030004221A7508
+:106320001846FFF77BFFFFF7B3FF0023184604B0C2
+:10633000D0BD94E80300029B1A1D82E80300F5E734
+:1063400048000020817870B506460846FFF73CFFFC
+:106350000B06F578044613D5002D45D1FFF7C0FF95
+:106360000346002840D0012284F8225002750322FF
+:106370000274DC60FFF752FFBDE87040FFF788BF92
+:1063800055B1012D30D1FFF7ABFF034660B384F860
+:10639000215005750574ECE7FFF7A2FF20B3B37831
+:1063A000124A13F0800F03F0080111D041B1D2F866
+:1063B000A836E3600123037502230374C460D9E7A0
+:1063C00003F00F03142101FB0323D3F80836F0E791
+:1063D00011B1D2F8A837ECE703F00F03142101FB49
+:1063E0000323D3F80837E4E770BD00BF0070024014
+:1063F000F0B5064689B01822002102A812F0CDFFA0
+:106400003378013B052B21D8DFE803F0780314141F
+:10641000681603238DF814300024FFF761FF03464C
+:10642000A0B1047500F10C02DDE9050182E803006A
+:1064300018461EE00423EDE7B1780846FFF7C4FED6
+:10644000837A044623B1013B022B43D909B0F0BD46
+:106450000B06F57812D5002DF8D1FFF741FF034662
+:106460000028F3D0012284F822500275032202741E
+:10647000DC60FFF7D3FEFFF70BFFE7E75DB1012D0F
+:10648000E4D1FFF72DFF03460028DFD084F8215028
+:1064900005750574ECE7FFF723FF07460028D5D004
+:1064A0000123037502230374C46004F10C01B07866
+:1064B00013F043FB124AE168B2F8C8328B4206D9A6
+:1064C0005B1AA2F8C83210F00DFE3846D1E7A2F8E8
+:1064D000C852FAE73046FFF735FFB7E7684610F0D5
+:1064E000DBFD9DF80130052B04D19DF8003013F041
+:1064F000600FABD0034B059301248EE702248CE799
+:10650000441F0020C8200020022810B510D8094BD5
+:106510001C5CFFF7E5FE58B1002202750473FFF71B
+:106520007DFE054B1B7F1BB1BDE81040FFF7B0BEE1
+:1065300010BD00BF3CB70100441F00202DE9F3410E
+:10654000DFF8CC8000250026002765F07F00C0B270
+:10655000FFF73AFE0369044673B900F11001CDE973
+:1065600000674022404613F0A7FB002804DA6FF0D2
+:106570000B0002B0BDE8F0812046013512F036FE76
+:10658000082DE2D1DFF88880002500260027E8B238
+:10659000FFF71AFE036904464BB900F11001CDE97B
+:1065A00000674022404613F087FB0028DFDB2046CF
+:1065B000013512F01BFE082DE9D11449D1F87031D4
+:1065C0000C4663B900220023CDE9002310484FF4A4
+:1065D000806201F5B87113F06FFB0028C7DB0D482E
+:1065E00012F004FED4F8B4325BB900220023CDE9E6
+:1065F0000023094906484FF4806213F05DFB002830
+:10660000B5DB064812F0F2FD0020B2E7441F00207F
+:1066100044000020A4200020F8210020E8210020D0
+:106620002DE9F043DFF8D482AE4C85B00746002256
+:106630000023404611F0E4F910B905B0BDE8F0833D
+:10664000637F027D00F1040933B9002A00F08580E0
+:10665000484613F00AFFEAE7042AF9D8DFE812F007
+:106660007D000500010117013201037CC568032B81
+:10667000EED8DFE803F00238595EAE690822002147
+:10668000304612F08AFE984BD3F880243270D3F84B
+:1066900084247270D3F88824D3F88C1442EA01223F
+:1066A0007280D3F89024D3F8941442EA0122B28085
+:1066B000D3F89824D3F89C3442EA0323F3800823C8
+:1066C000EB60687A2B68002198473378DB0906D1A4
+:1066D000F38823B1A4F8C83210F004FDB8E7002312
+:1066E000A4F8C832B4E795F82130002BB0D095F863
+:1066F0002030002BACD0002685F821604FF0FF320F
+:1067000085F820604FF0FF33784812F085FDAB69C3
+:1067100001936B68CDE9023601A9687A10F0DEFAC0
+:10672000724812F061FD93E72B680121687A98475F
+:106730008EE7AB7A73B995F823305BB94FF0FF322F
+:106740004FF0FF33694812F067FD10F0F7FC67481F
+:1067500012F04AFD2B680221E8E7027B042A3FF68B
+:1067600077AFDFE802F05A032567730010F06AFA8A
+:10677000054600287FF46CAF10F0AEF9BFF35B8FD5
+:106780005B49012351E8002F002A03D141E8003082
+:106790000028F7D1BFF35B8F7FF45AAF41F8105C4C
+:1067A00041F8085C6069E360143912F0DBF84FE7E8
+:1067B000002565F07F00C0B2FFF706FD037A13B134
+:1067C000407A10F0ADFE0135082DF2D194F8683111
+:1067D0001BB194F8690110F0A3FE0025E8B2FFF7A1
+:1067E000F3FC037A13B1407A10F09AFE0135082DBC
+:1067F000F4D194F8AC321BB194F8AD0210F090FED5
+:10680000012010F001FA012363772368002B3FF485
+:106810001FAF0021022098471AE70025657710F086
+:106820000BFEFFF70FFD2368002B3FF411AF294645
+:106830000420F0E7002B3FF40BAF10F015FE2368A7
+:10684000002B3FF405AF00210520E4E72268002A71
+:106850003FF4FEAE002B3FF4FBAE00210620904734
+:10686000F6E607F10C054FF0FF334FF0FF322846F4
+:1068700012F0D2FCFFF762FE284612F0B5FC57F882
+:10688000203C002B3FF4E4AE00210120C3E794F844
+:10689000AC327BB1012584F8C55284F8C452FFF7AD
+:1068A0001FFD38B1134A05750574C260FFF7B6FCC9
+:1068B000FFF7EEFC57F8203C002B3FF4C9AE002157
+:1068C0000A20A8E713F0AFF810F0B6FD10F0FAF8C0
+:1068D000FFF7F6FCFFF732FE13F09EF8064810F0C3
+:1068E000BBF9B5E6441F002000700240701F002075
+:1068F0005C1F0020E8210020F163000068050020F3
+:1069000038B5204C257F002D36D11F491F484FF048
+:10691000FF334FF4806211F02DFD1D4B2562C4E959
+:10692000093504F12C0013F0E4F92846FFF792FB37
+:106930002A4660610121272000F07CFB154810F0F9
+:106940008BF9154B984219D113F066F8FFF7F6FD55
+:10695000054608B901232377104B1B680BB1FFF7DD
+:1069600097FC4FF08043D3F83834DB0702D5002082
+:10697000FFF7CAFD284638BD0025FBE76FF0040588
+:10698000F8E700BF441F002020420020A00700209D
+:1069900021660000F16300000000AD0B68050020D7
+:1069A000064B1A7F32B15B7F002B0CBF6FF01200D9
+:1069B000002070476FF01200704700BF441F002096
+:1069C0000F4B1B7F10B50146B3B104782046FFF78B
+:1069D000FBFB10B96FF0150010BD44720B79837288
+:1069E00049884160230702D44B1E0B42F2D1204656
+:1069F00013F09EF80020EFE76FF01200ECE700BF05
+:106A0000441F0020114B1A7F10B50146C2B15B7FB5
+:106A1000B3B1FFF7D9FB0446A8B1837A012B12D09A
+:106A200007D9023B012B07D9A369E3610020E0608D
+:106A300010BD10F08BFBF7E7084610F0FFFAF3E704
+:106A40006FF01200F4E76FF01500F1E7441F00202B
+:106A500038B50D4B1A7F05467AB15B7F6BB1FFF7F6
+:106A6000B3FB68B115F008040AD1284610F008FB02
+:106A7000284610F0A7FD204638BD6FF01200FBE756
+:106A80006FF01500F8E700BF441F002038B50B4B2E
+:106A90001A7F05460C465AB15B7F4BB1FFF794FB5A
+:106AA00048B141B1284610F0D1FA2070002038BD1D
+:106AB0006FF01200FBE76FF01500F8E7441F0020AD
+:106AC000F8B5104E327F04469AB1FFF77DFB0546BC
+:106AD00090B1230702D4204610F0D2FA2F7A77B96A
+:106AE000707F01232B7218B1204610F019FD384633
+:106AF000F8BD6FF01200FBE76FF01500F8E76FF0DC
+:106B00004400F5E7441F00200D4B1A7F10B50146E5
+:106B10006AB15B7F5BB1FFF757FB044650B1037A64
+:106B20005BB1084610F0D0FC0020207210BD6FF061
+:106B30001200FBE76FF01500F8E76FF04400F5E78F
+:106B4000441F00202DE9FF47DFF8D4801F4698F846
+:106B50001C30064689461446002B56D098F81D3046
+:106B6000002B52D0030653D5FFF72EFB0546002815
+:106B70004ED090F808A0BAF1000F49D04FF0FF3284
+:106B80004FF0FF3308F12C0012F046FB95F822205D
+:106B900002F0FF034AB108F12C0012F025FB6FF060
+:106BA0000A04204604B0BDE8F0876A68A8699442E8
+:106BB00084BF1446534685F823302246494612F0D6
+:106BC000C1FBEC6007B13C60AC7A4CB910F0C6FA7E
+:106BD000864205D010F0B2FA0F4812F005FBE0E74C
+:106BE000012385F82230AB6901930024EB680293FE
+:106BF00001A93046039410F071F8084B98421CBF6D
+:106C000085F822406FF00404E6E76FF01204C8E74D
+:106C10006FF01504C5E700BF701F00200000AD0B2A
+:106C2000441F00202DE9F0411D461F4B17461A7FD7
+:106C30000E46002A32D05B7F83B3030631D401B9FC
+:106C40007FBBFFF7C1FA044658B3037A4BB34FF04A
+:106C5000FF3316484FF0FF3212F0DEFAE368BB4212
+:106C6000984628BFB84646B93FB905B12B600F48D2
+:106C700012F0BAFA0020BDE8F081E16942463046E0
+:106C800012F060FBE3694344E361E368A3EB0803AC
+:106C9000E360002DEBD0C5F80080E8E76FF012004C
+:106CA000E9E76FF01500E6E7441F0020701F0020A1
+:106CB00070B51E4D2A7F03468AB36A7F7AB31B06DE
+:106CC00030D4FFF781FA044660B3037A53B34FF030
+:106CD000FF334FF0FF3205F12C0012F09DFAE3680C
+:106CE000C3B90126A36984F82060E36194F82130D8
+:106CF00083B1FFF7F5FA30B905F12C0012F074FA00
+:106D00006FF00B0070BD0675C4600674FFF786FA5D
+:106D1000FFF7BEFA064812F067FA0020F2E76FF0BC
+:106D20001200EFE76FF01500ECE700BF441F0020F2
+:106D3000701F002008B5074B1B7F2BB1FFF744FAEB
+:106D400028B10160002008BD6FF01200FBE76FF072
+:106D50001500F8E7441F0020014B1860704700BF82
+:106D6000441F002008B5074B1B7F23B1FFF72CFA07
+:106D700020B1406808BD6FF01200FBE76FF015000E
+:106D8000F8E700BF441F0020821C084B22F07F421E
+:106D9000C3F84025D3F80425904200D17047D3F8BA
+:106DA0000405821C22F07F42F2E700BF0010014080
+:106DB000074B00221A601B68064A074BD3F84005B0
+:106DC0001368C01A20F07F400344136011F00CBC1C
+:106DD00040110140102200200010014038B5104D34
+:106DE000104B0024C5F808451C601B680E4B4FF47F
+:106DF0000032C3F880214FF48033C5F804332246B3
+:106E00000121112000F016F9112000F0E1F8074AE5
+:106E10000123136002202B60FFF750F9204638BD94
+:106E2000001001404011014000E100E00810014065
+:106E3000F8B52B4B2B4C1968D4F804252A4D521A5F
+:106E4000B0F1FF3F08BF284622F07F43120236D43C
+:106E5000013820EAE070A842A8BF28460133184450
+:106E6000A84294BF0D184D194FF48031C4F808138F
+:106E7000D4F80425D4F840351C4E00279B1A3760FF
+:106E800023F07F433068012B22F07F40C4F8400597
+:106E9000C4F8441304D10F2013F0E1F837603368CD
+:106EA000134B4FF40032C3F88021D4F804052B1A99
+:106EB00023F07F43012B04D1FFF766FF0BE0002096
+:106EC000CCE725F07F43C4F84035D4F804052D1AEB
+:106ED000023D2B02F0D44FF48033C4F80433F8BDE4
+:106EE0001022002000100140FFFF7F0040110140F0
+:106EF00000E100E04FF02002EFF3118382F31188EC
+:106F0000BFF36F8F064AD2F80405064A1268801A4A
+:106F100020F07F4083F31188BFF36F8F704700BF6D
+:106F20000010014010220020094A0A4993680968AC
+:106F3000D967094998674B6843F080534B60002339
+:106F400083F31188BFF36F8F9368D86F704700BFCA
+:106F5000203B0020A8B6010000ED00E012498A683D
+:106F60004FF038001044EFF3098C80E8F01F202028
+:106F700080F31188BFF36F8F0C4F4FF000664A6AA1
+:106F80008A603E60906F0023936780F3118804B598
+:106F9000104600F08DFABDE8044002F1380090E898
+:106FA000F01F8CF309887047203B002004ED00E0BF
+:106FB0001EF0040F0CBFEFF30880EFF30980816926
+:106FC00011F8021C0229FFD001B512F08DF901BDA4
+:106FD00043B2002B08DB012200F01F0002FA00F090
+:106FE0005B09024A42F82300704700BF00E100E05D
+:106FF00043B2002B0DDB01225B0900F01F0002FAF7
+:1070000000F02033034A42F82300BFF34F8FBFF351
+:107010006F8F704700E100E0054B420900F01F0050
+:1070200053F82220012303FA00F01040704700BFFC
+:1070300000E100E043B2002BA8BF03F1604301F17F
+:107040000101B8BF064B4FEA4111ACBF03F56143E4
+:1070500000F00F00C9B2B4BF195483F80013704791
+:1070600014ED00E008B572B6044B186A18B100229E
+:107070001A6212F0B7FD62B608BD00BF203B0020C7
+:1070800042F8203C009B42F81C3C0A49019B42F814
+:10709000183C029B42F8143C21F001014FF0807330
+:1070A00042F8043C42F8081C0023203A82658367BA
+:1070B000704700BFA18A01000B4A0346906890B157
+:1070C00013F1160F806E05D0A0F120029A4206D867
+:1070D000834204D281422CBF0021012100E0002123
+:1070E000002908BF00207047203B002008B5044657
+:1070F0000E46154600F0C0F9084B20469C6000F093
+:10710000D7F9284686F30988002163B681F31188F0
+:10711000BFF36F8F0022002311F0C2FC203B002040
+:10712000014910220A60704710ED00E072B640403D
+:1071300080F31188BFF36F8FBFF34F8F30BF62B6FC
+:10714000BFF36F8F704700BF72B6494081F311885B
+:1071500020BF80F3118862B6704700BF30BFFFF7D1
+:10716000FDBF00BF0E4A08B50E4B22F07F029A60A9
+:10717000BFF34F8FBFF36F8FD3F8882022F47002D4
+:10718000C3F88820EFF3148323F0040383F31488F7
+:1071900010F0A8FA10F0B0FA00F036F910F0DEFAAC
+:1071A0000010000000ED00E001B572B60B4A106A55
+:1071B00000281EBF0021116212F014FD62B6EFF329
+:1071C0000580A0F110004FEAC0000549014409C93B
+:1071D0009847BDE80140034908470000203B0020D4
+:1071E0002CA50100ED73000012F0FAF8202080F3C6
+:1071F000118808484FF40261401880F30988EFF3C2
+:1072000014800221084380F31488BFF36F8FFFF7C7
+:10721000A9FF0000C04F0020EFF30880EFF30981C1
+:1072200001B5724600F064F801BD00BF38B5174BD8
+:1072300014469A6A9A6A9A6A0546900716D5586B58
+:107240009A6A120604D519B19A6A22F080029A62EB
+:107250009A6A9A6A9A6AD2060BD400200B4A936AF9
+:1072600043F0FF0393620023237038BD6FF01500D5
+:10727000EEE75B681B05F0D52946FFF71DFF0028E8
+:10728000EBD080F309880220E8E700BF00ED00E0C2
+:107290000D4B9A6A9A6A9A6A920508D59A6B9A6A0D
+:1072A000120404D518B19A6A22F400429A62064B7D
+:1072B0009A6A9A6AD20558BF9A6A9A6A002042F47A
+:1072C0007F429A620870704700ED00E0074B9A6AAF
+:1072D0009A6A9A6A9A6A9A6A9A6A9A6A6FEA0242F9
+:1072E0006FEA12429A620020704700BF00ED00E092
+:1072F00070B5374B5B688AB00E46C3F308030025B0
+:1073000085F31188BFF36F8F02F07F41B1F17F4F9A
+:1073100011D102F00C0108290DD0110701D4064645
+:1073200001250022033B8DF80720032B48D8DFE816
+:1073300003F0043F433C2E46F3E7254BDA6A9207FD
+:107340003ED4DC6A14F0804409D028331B78F3B1B2
+:107350000DF1070201213046FFF768FF04469DF852
+:10736000073093B92022314602A811F0EBFF099BA8
+:1073700045B3C3F3080222B96FEA53236FEA4323EC
+:10738000099302A9204611F0ADFF0AB070BD114B60
+:107390001B782BB10DF107010120FFF779FFDDE725
+:1073A0000D4B188884B2002CD9D0FFF78FFFD5E79A
+:1073B0000DF107020021CEE70DF107010020ECE7F7
+:1073C0000024CCE723F4FF7323F00103D8E700BFC8
+:1073D00000ED00E029ED00E02AED00E0024A5369EB
+:1073E00043F010035361704700ED00E0044B9968CF
+:1073F000586A884203D003494FF080520A607047B0
+:10740000203B002004ED00E0044800232021C218A6
+:107410000133302B82F80013F9D1704700E100E00E
+:1074200010B5044610F0E0FC114B9B68A34207D155
+:10743000EFF3058383B10F4A536843F080535360E1
+:107440004FF02003EFF3118083F31188BFF36F8FA8
+:10745000BDE8104012F01BBD4FF02003EFF3118088
+:1074600083F31188BFF36F8FFFF75EFDE8E700BF7E
+:10747000203B002000ED00E01FB5084B0193084BB6
+:107480000293084B039301AB0093074A074B01217A
+:10749000684600F0A7F805B05DF804FB0000002086
+:1074A0000000000000000B06000000200000042087
+:1074B0001FB5836E203B0193064B2022CDE90223AA
+:1074C000012101AB6846009300F096F805B05DF825
+:1074D00004FB00BF00000B15DFF884C0F0B50646C2
+:1074E000002710468F4200DBF0BD56F827E0DEF89B
+:1074F000044094B343B1651E2C4219D11F2C17D9F7
+:10750000DEF80020154213D1202CC2B2DEF8005064
+:10751000DEF808000FD9B4F1004F0ED8013CB4FAE0
+:1075200084F4C4F11F046400072A44EA000406D965
+:107530006FF01500D8E70824F6E73E24F4E725F0BD
+:107540001F05154345F0100544F00104CCF8082050
+:10755000501CCCF80C50CCF810400137C2E700BFEB
+:1075600090ED00E0034B05225A60BFF34F8FBFF34D
+:107570006F8F704790ED00E0BFF35F8F014B0022EB
+:107580005A60704790ED00E013490868082810B56C
+:107590001ED8FFF7F1FF114C49680022904201F11B
+:1075A0000C0105D10E4B1870FFF7DCFF002010BD59
+:1075B000A26051F80C3C23F01F03134343F0100367
+:1075C000E36051F8043C43F0010323610132E5E735
+:1075D0004FF0FF30EBE700BFFCA6010090ED00E0AC
+:1075E0009A3B002010B5034C01232278FFF774FF6B
+:1075F000207010BD9A3B002008B5084A002312787D
+:10760000FFF76AFF10F1160F03D0054B0022072881
+:1076100000DD08BD98601A610130F8E79A3B002050
+:1076200090ED00E04FF02003EFF3118283F3118817
+:10763000BFF36F8F06490123C1F840354FF08041F9
+:10764000C1F8783582F31188BFF36F8F002070473F
+:1076500000E0014020B1034B800143F001031847D3
+:10766000704700BFC0A601004FF08043D3F84036FA
+:10767000DB072ED54FF01023D3F8043303F00703B4
+:10768000072B26D1144B0122C3F80425D3F800247C
+:10769000002AFBD04FF01021D1F8042322F007027A
+:1076A00042F00402C1F804230022C3F804250A4A68
+:1076B000D2F80034002BFBD0BFF34F8F0749084BA3
+:1076C000CA6802F4E0621343CB60BFF34F8F00BF80
+:1076D000FDE70020704700BF00E0014000ED00E042
+:1076E0000400FA05074A0346106828B9D96831B181
+:1076F000196921B1136070476FF0440070476FF053
+:10770000150070471422002070B500F0FD06012E10
+:1077100005460BD1064811F0F2FE044620B1314671
+:10772000083011F00BFF2575204670BD0024FBE7E3
+:10773000D00500202DE9F0410228DDE90667044666
+:1077400029D0062802D040B300251EE0144909784C
+:107750000129F9D13478012C1AD0022CF4D1114826
+:107760000136013F11F0CBFE05460028ECD000F1B8
+:1077700008080121404611F0E1FE2C752EB127B119
+:107780003A463146404611F0F0FE2846BDE8F08109
+:1077900005480024E4E70348E4E70348E2E700BFC4
+:1077A0009B3B002080050020A805002010B50D4B54
+:1077B0001B78012B04460CD1037D012B04D0032B35
+:1077C0000ED06FF0150010BD042104F1080011F077
+:1077D000DDFE054B2146186811F0B4FE0020F2E7EB
+:1077E0000221F2E79B3B0020202200202DE9F047F8
+:1077F000057D04468DBBDFF8A890D9F8003063B34F
+:1078000000F10808404611F0D2FEA789022F064673
+:1078100040D90321404611F0C2FEA18983788B42F2
+:1078200038D81D4BB0F80080D9F80020D3F800C03C
+:107830002B4663450CD0104632F80C5B454513D1FE
+:107840004368994224D3836820469847054668B91F
+:107850002069A78110FA86F6A660104B1B682046A7
+:107860001B69BDE8F04718470133E2E7FF280CD059
+:107870000121404611F01EFE01210446083011F09E
+:107880006EFE05702046FFF791FF2846BDE8F087A1
+:107890001225EDE71225F8E71C2200201422002013
+:1078A0001822002001289DBF024B187000206FF0A5
+:1078B000150070479B3B0020014B1878704700BFB4
+:1078C0009B3B0020024B1860024B1960704700BFC1
+:1078D000182200201C220020044B054A1B6810605F
+:1078E0000BB1DB6818476FF01200704714220020BC
+:1078F000202200202DE9F0411446C21D22F003028F
+:10790000671EBFB2186082B005460E4601FB070035
+:1079100014800021042211F040FDB7B1023CA4B252
+:1079200004FB066304FB06F71D44FF1A4FF6FF78BD
+:107930000422013CE8190DEB0201A4B2019511F0FB
+:1079400001FD4445A5EB0605F2D102B0BDE8F0818A
+:1079500070B5056882B095B1EB1D23F003030422D6
+:10796000044629460DEB02001E8811F0EBFC019B3A
+:1079700023B1DA1D22F00302013E1680236028465F
+:1079800002B070BD0B6870B50C46054683B1073375
+:1079900023F003031E880136B6B20422214628468E
+:1079A00011F0D0FCEB1D23F003031E80256070BD99
+:1079B0000126F2E702FB0100704700BF401A80B2C7
+:1079C000B0FBF2F0704700BF531E11449BB242B1AE
+:1079D000DB43CA18013811F8013D00F8013F91421C
+:1079E000F9D17047014402E010F8013B1BB988420D
+:1079F000FAD1002070470120704700BF1060086076
+:107A0000704700BF0A6803460068904205BF002225
+:107A10000A6000201A60704710B41468206014686F
+:107A2000616010BC10607047884203D01AB143688F
+:107A300013607047002070470B68834209D02AB159
+:107A4000586810601A680A6018467047002BF9D110
+:107A5000FAE70023F8E700BF2DE9F041DFF83480B2
+:107A60000B4E0C2706F130044546221D21462846C0
+:107A70000C3CFFF7C3FFB442A5F10805F5D1043F64
+:107A80003B1DA8F12008A4F13006EBD1BDE8F08140
+:107A90002C2300209C22002030B403460C469AB1CF
+:107AA00001EB41010801144D03EB430100EB81019F
+:107AB0002944487A0D7AA84204BF01300872214651
+:107AC000184630BC0DF096BC01EB41020A4D120184
+:107AD00000EB400302EB83032B449D7ADA7AAA423F
+:107AE00001D030BC7047054D01329A7201236B54AE
+:107AF00030BC0DF0DDBC00BFA8220020A422002075
+:107B000070B51C4606460D4622B363782278D21A19
+:107B100012F0030205D0012A40D00133DBB22370FA
+:107B20000FE03022042112FB05110C2212FB061279
+:107B300001331B496068DBB20A4423702146FFF71A
+:107B40006BFF184B3046012229465A550DF0B0FC08
+:107B5000002070BD0DF08EFC0028D6D0294630469E
+:107B60000DF068FC0028D0D005EB450211010C484F
+:107B7000637806EB460201EB82020244917AD27AE4
+:107B80009142C3D12278D21A920702D00233DBB2DB
+:107B90002370D4E902039847002070BD104670BDE1
+:107BA000A8220020A42200204E490B5C002B00F0EC
+:107BB00098802DE9F04F4C4B4FF03C0B87B00022E2
+:107BC0000BFB003B0A5400EB40070BF1040103924E
+:107BD00003EB071701924FF0030988460290002338
+:107BE000D7E9090105AA0593FFF71EFF07F124064F
+:107BF0008346002834D0059C25786378ED1A05F07B
+:107C00000305012D06D1013B6370D4E902039847B7
+:107C1000059C637894F800C0B86AACEB030303F0EA
+:107C20000303012B4FF0000231465FFA8CFA0DD0AE
+:107C3000FFF702FF62782378C4F804B09B1A03F0C0
+:107C40000303012B84F801A044D0B86A014605AAB9
+:107C5000786AFFF7E9FE012D834629D00028CAD1B2
+:107C600097F82E3097F82F209A4203D087F82F30BC
+:107C70000123019397F82C3097F82D209A4203D0D6
+:107C800087F82D300123039309F1FF395FFA89F951
+:107C9000B9F1FF0FA7F10C07A1D1DDE9013AB3B1AA
+:107CA000039BA3B91A46514650460DF0A3FB0EE0C4
+:107CB000B9F1000F01D10028D2D0DDF808A0094A9F
+:107CC00001235146504602F80A300DF0F1FB07B08F
+:107CD000BDE8F08F6270214658464246FFF79CFE91
+:107CE000B3E77047A4220020A8220020A1B14B1EB8
+:107CF000DBB210B4411EC418002011F8013F3BB1A3
+:107D00005BB25A1E1340013013F0FF03C0B2F7D12B
+:107D1000A142F2D110BC7047084670472DE9F04FE0
+:107D2000AD4D83B0044603270126042120460AF006
+:107D300063FD6378E27894F802C020784CEA022C64
+:107D400040EA03204FF0000840EA0C40C3464FEAE7
+:107D5000DC3CC1461E234FF0010A1AE008F1010184
+:107D60000E2BC9B25FFA83FC40F28A80CAB39446F4
+:107D7000CE461C2B40F21D811B2B40F2F0801929AE
+:107D800039D088469246BEF10C0FF14633D0013B04
+:107D900039D320FA03F202F001026245DED10AF182
+:107DA0000102072BD2B240F2C480062A77D906FA24
+:107DB00003F2BCF1000F51D020EA0200CE464FF092
+:107DC000000C08F101010E2BC9B288BF0122D6D8E0
+:107DD000F14500F0A18019290DD088464FF0010A25
+:107DE000D5E7CE460122052B75D9062A54D119298B
+:107DF0004FF0000CC5D1013306FA03F3BCF1000FBC
+:107E000053D05B42184080EA050301930DF1040C46
+:107E10000DF1080E00221CF8013B3BB15BB2591E6C
+:107E20000B40013213F0FF03D2B2F7D1F445F2D187
+:107E3000012A09D983B2B3EB104F4FEA104237D170
+:107E4000C3B2B3EB106F33D1013F17F0FF077FF4DC
+:107E50006CAF6FF00D0003B0BDE8F08F10434146EA
+:107E6000CE464FF0010C8845ABD00E2B8BD8CE45BB
+:107E70008DD141460EF1010E5FFA8EFE52467EE72D
+:107E800009F1010EBCF1070F5FFA8EFE40F29480FB
+:107E9000002A40F09A8001224FF0000C69E7BCF103
+:107EA000000F10D14146CE469FE7013B1843AAE799
+:107EB000C0F30721130A207000206170A270E370E4
+:107EC00003B0BDE8F08F062A02D14146CE4658E7FE
+:107ED0004146CE464DE7BBF1000F0CD0BCF1040F7C
+:107EE00083D8BBF1010F06D9BCF1030F3FF67DAF7C
+:107EF000BBF1020F09D806FA03F210430BF1010B94
+:107F00005FFA8BFB4FF0010CADE7062A3FF46FAF31
+:107F100029B14FF0000C2FE74FF0010AAAE706FA4B
+:107F200003F2072B40EA020088BF4FF0010C9AD8F9
+:107F3000E4E7BCF1000F2AD00BF1010B062A5FFA2F
+:107F40008BFB1DD906FA03F220EA02004146CE4619
+:107F50000BF1FF3B5FFA8BFB4FF0000C83E701292D
+:107F60003FF60DAF06FA03F2BCF1000FD9D0072B94
+:107F700020EA020088BF4FF0000C3FF674AFE7E73D
+:107F8000A3D0B8F1000F0AD04146CE46F4E6062A47
+:107F90000AD906FA03F210434146CE46AEE706FA86
+:107FA00003F24146CE46E2E74146CE465FFA83FC05
+:107FB00019E70029D6D0DFE6002A3FF413AF0BF112
+:107FC000010B5FFA8BFB9446D6E6012901D094465B
+:107FD000D5E601FA03F2CAE7D6BE898E2DE9F04F45
+:107FE000827F8DB001230492C377002A5BD1437F47
+:107FF000FF2B814656D00CF035FCD9F8142099F8A7
+:108000001C3099F81D60801AFF2B20F07F4B00F088
+:108010003A81D9F818305B4594BF002301230193BE
+:10802000FF2ED9F800704FF0000866D0CDF8089008
+:1080300006EB460607EB06143601A2685A455AD8E5
+:1080400094F802A06378BE5DA3EB0A03DBB2012BB8
+:10805000ABEB020B90444CD1A06968B3019B002BA1
+:1080600000F08D80E38B0393A36A3BB11A681AB1C9
+:108070001A7A002A00F0F48000221A72039A94F807
+:108080002C10013292B2E283002932D0A18B9142AE
+:108090002FD2002B00F0FA801A7A012A29D04FF053
+:1080A000010C0EE0C2770DB0BDE8F08FDDE909B834
+:1080B000DDF820A00B9E4C46A36A002B40D04FF069
+:1080C000000C00221A72E5685A600AF1FF33A370AF
+:1080D0007DB1029B62695869616A2369A8EB02025B
+:1080E000104420F07F40BCF1000F39D04FF6FF72F2
+:1080F000A847FF2E9CD1DDF8089099F80B3099F82D
+:108100000A209A420AD10132D2B2022A1CBF134677
+:108110000493049A89F80B2008BF002309EB83031A
+:10812000D9F82440C3F80C80002289F81F204B4660
+:10813000012204210320A4460DB0BDE8F04F6047A2
+:10814000E5680AF1FF33A370002DD2D0029B62696B
+:108150005869616A2369A8EB0202104420F07F404D
+:10816000E28BA847A26900239A42019AE38318BFD1
+:108170000122FF2E0192E3707FF45AAFBBE794F91E
+:108180002D300593803397D0FF2E95D0E38BA28BB3
+:108190000393934228BF9B1A05996268CDF820A0EB
+:1081A000591A03FB02230693CDE909B80791334618
+:1081B0000025A1460B9600922CE0009CAAEB080833
+:1081C000002C48D0069C0AFB0C8844458CBF4FF01D
+:1081D00001084FF0000834BF4FF0010A4FF0000AC9
+:1081E000B14292F803B099F803200FD3934543D8D6
+:1081F0001EF1800F40D0079AACEB0E0C944502DDC7
+:10820000B8F1000F38D0059A724532D0FB5CFF2BD5
+:108210003FF44CAF1BB203EB430307EB03121B010C
+:10822000D2F808804544A842FFF440AF9169002984
+:10823000ECD0D18B968BD2F804A092F92DE0B1420C
+:108240008C4628BFA1EB060CBAF1000FB5D1009CFB
+:10825000D046002CB6D1DDF800A04FF00108BFE7F2
+:10826000A28B03998A423FF607AF4FF001021A72C0
+:1082700004E7BAF1000FC9D0DDE909B8DDF820A0A4
+:108280000B9E4C46F0E6049B0193C9E6E5680AF1B3
+:10829000FF33A370002D3FF42CAF029B60695A6935
+:1082A000616A2369A8EB0000104420F07F401DE7BD
+:1082B000C27F002A40F02F862DE9F04F837AC17AE1
+:1082C0008FB083464069059099424FF001008BF8CA
+:1082D0001E0000F096800344DBB2022B08BF134659
+:1082E0000BEB83028BF80A30D368059A0293D318FC
+:1082F00023F07F43CBF8143001230D939BF8093012
+:108300009BF81D200692DBF80020DBF80410079391
+:1083100004921A46013B0C91DBB2002A00F0218343
+:1083200001EBC30600230893FF2301933746D94688
+:108330007B68079397F803C0BB78BA4607999846BD
+:1083400003EB430203EB8202581C634501EB8205F9
+:10835000C3B200F082819AF80000984208BF00235F
+:108360008AF8023011F82220042A40F27481072A88
+:1083700000F286806978049C01EB410004EB001454
+:108380000001A7780A906078C01B10F0FF0077D03A
+:10839000052A65D0012837D199F81DC0D9F80060A9
+:1083A000BCF1FF0F17D00CEB4C00614506EB001041
+:1083B00000F09080002301E0614570D0E64690F81F
+:1083C00000C0D0F80880BCF1FF0F0CEB4C00434418
+:1083D00006EB0010F0D10026052AA66000F02681E9
+:1083E000677099F81C308B4222D0EB6A002028700D
+:1083F000A8620BB1296B98479AF803C09AF802302B
+:108400009CE70D92029279E704214B460122D9F8AC
+:1084100024400846A0470C9A8AF802805746012358
+:10842000BA420893A7F1080300F01E811F467FE7B8
+:10843000FF23072A89F81C3040F0DD816868D9F8ED
+:108440001430C21A140200F1CD8122F07F43029A47
+:108450001344D9F818209A4288BFC9F81830C4E7E5
+:108460006E68002E96D1AE68002E93D1EE68002E75
+:1084700090D12E69002E8DD16E6936F07F4689D15C
+:10848000EA6A002101202970A862002A3FF456AF51
+:10849000296B90479AF803C09AF802304EE70EEB2A
+:1084A0004E07714506EB071716D00178D0F808C0C3
+:1084B0003970FF2906D001EB410106EB01118868F4
+:1084C000604488600CEB0306052AA66009D0A778F3
+:1084D000697885E707460023027889F81D202A7805
+:1084E000E3E7D9F8147003970CF0BCF9029BA0EBFA
+:1084F000070C2CF07F473B449E42804640F2A2800E
+:108500006269F31A6668002E53D0A88A002850D0FA
+:10851000013880B29E42E18BA88225D206F1010B80
+:108520000B9211E000F1E87000F5D43000F5A57071
+:10853000DE46099A0139A3EB0E0389B2801A9E42E6
+:10854000E18360620ED2A88A884280F0B281D4E9C9
+:108550000820DFF8D0E20992B14A86449645E1D876
+:10856000B646E6E70B9AA88A884221D9206A099084
+:1085700006F1010E0B9207E06062B346A88A013152
+:1085800089B281425B4411D2099A606ADFF894B2E1
+:108590001044A34A83449345EED8A0F1E870A0F5B7
+:1085A000D430A0F5A5706062F346E7E70B9AE1834B
+:1085B000A083D5E9010EA66A03447244A3606261F8
+:1085C00036B1316821B1A0EB0E007060A36862691A
+:1085D0001CF4000F21D13B4493421BD99B1A00226B
+:1085E000A3606261E968A3692A690B44934288BF6A
+:1085F0009B1AAA7D98BF0023A36102B1E270049B7D
+:108600000A9A1946019B8B5463786A780192013368
+:108610006370EAE6D21A0023E2E70399A1EB0807A8
+:1086200027F07F479F4213D2DB1BD5E7D9F81470A0
+:1086300003970CF017F9029BA0EB070C2CF07F4777
+:1086400080463B4461690B449A1B6261002359E7F1
+:108650003A44D21ADFE7984672E60C9A5746BA4275
+:10866000A7F108037FF4E2AE99F81D70069BDB1BAF
+:1086700018BF012307930D9BCB46002B40F0798157
+:1086800099F80920D9F80030D9F804100493531E42
+:108690000991DBB2002A00F0108101EBC3080D9BA9
+:1086A0000393D8F8043098F801600593019BFF2BE1
+:1086B0005ED0DDF804A0049B0FFA8AF404EB4404B6
+:1086C0004FEA041C03EB041413F80C30019300254B
+:1086D000FF222270DBF800709BF81D3007EB0C00C6
+:1086E0009342816818BF029211D193E0B1EB0C0163
+:1086F00006D1BEF81EE0B0F81E90F14500F2D6801B
+:1087000017F802C00293BCF1FF0F77D0634603EB6A
+:10871000430C07EB0C1E4FEA0C12DEF808C08C4528
+:10872000E4D9029A8160FF2A03706CD18BF81DA0F6
+:10873000FF2B06D003EB430307EB0317BB68591A63
+:10874000B960A37801336370002DAFD0EB6A039A50
+:108750002A70AA6213B1296B002098476368002B26
+:10876000A4D1D5E90B23C4E90823019BFF2BA0D199
+:1087700098F80230B3422ED0059F98F8000006EB1F
+:10878000460206EB8202013617F82210F6B2B0421A
+:1087900008BF0026042907EB82051AD195F801A02D
+:1087A000049B0AEB4A0C03EB0C144FEA0C1C617897
+:1087B000A378C91A11F0FF0136D0039B07F82230C5
+:1087C000EB6A0122AA6210460BB1296B984798F810
+:1087D0000230B342D1D1099A4245A8F108036AD0C8
+:1087E00098465EE7029A1B1A23F07F439A428CBF99
+:1087F000D31A00232DE60CF035F820E61A468160E6
+:1088000080F800C0634612B202EB4202120107F880
+:1088100002A08DE707F80C308BF81DA091E700BF90
+:10882000592B177F5A2B17FFAF8ADBF814E0686AC1
+:108830004FF6FF794F45D5E903232ED084F82C104D
+:10884000A06262602362D5E906236868A2612A6A91
+:10885000A783A0EB0E07C4E903323A02AB680CD43D
+:1088600027F07F473B448BB1A360039B6362E383A4
+:108870004FF001036161E3702AE7AEEB000222F0E2
+:108880007F42934205D99B1A002BEDD11946002354
+:10889000EAE7D31A19460023E6E74FF0010784F808
+:1088A0002C70A062626023620F46CCE7029A614698
+:1088B00038E70B9A58E69BF81D70069BBB4200F008
+:1088C0003483089B002B00F0568300239BF81D7017
+:1088D0008BF81E30FF2F00F0DC83069BFF2B00F08F
+:1088E000F683DBF80030DFF80093DFF80083BD4E3D
+:1088F00007EB470703EB07130A259F680BF0B2FF4E
+:10890000DBF81430DBF82820C41A24F07F44033449
+:10891000BC422CBF1B19DB1923F07F448246204642
+:1089200090470BF09FFFA0EB0A00A4EB0A0420F095
+:108930007F4024F07F440330A04205F1FF3540F230
+:10894000FF82002DDAD140F69A034A46414630466E
+:108950000FF099FF404080F311884FF0030002DFD1
+:10896000CCE70D9B002B00F0F982079B0893FF23B7
+:1089700001930BF077FFDBF800309BF81D50039359
+:10898000059BFF2DA0EB030020F07F4854D0DDF8BD
+:1089900008A04FF000094B46D146C2469846039BBB
+:1089A00005EB450403EB0414A3684B4500F2DC829D
+:1089B00094F82C10A9EB03099844AAEB030A0029A8
+:1089C00000F03881E68B003E18BF0126DBF8182046
+:1089D000934225BF4FF0FF338BF81C30D31A00238E
+:1089E000A769CBF81830A26A606894F800C047B154
+:1089F000637894F802E0A3EB0E03DBB2022B00F0E5
+:108A000047810023A3608BF81DC0002840F0D6806A
+:108A10001AB1137A012B00F01581A2786078801AC0
+:108A2000C0B2012800F0C28062709BF81D50FF2D7B
+:108A3000B5D1DBF800300393DDE906409BF809204F
+:108A4000DBF804100991531EAC4218BF01200790B7
+:108A5000DBB2002A00F08A8101EBC308D8F80430A9
+:108A600098F801600593019BFF2B62D0DDF804A00C
+:108A7000039B0FFA8AF404EB44044FEA041C03EB53
+:108A8000041413F80C3001930025FF222270DBF848
+:108A900000709BF81D3007EB0C009342816818BFF3
+:108AA000049212D15AE1B1EB0C0106D1BEF81EE0DE
+:108AB000B0F81E90F14500F20C8117F802C0049343
+:108AC000BCF1FF0F00F0F980634603EB430C07EBAA
+:108AD0000C1E4FEA0C12DEF808C08C45E3D9049A4C
+:108AE0008160FF2A037040F0ED808BF81DA0FF2B02
+:108AF00006D003EB430307EB0317BB68591AB960B1
+:108B0000A37801336370002DADD04FF00002EB6A03
+:108B10002A700022AA6213B1296B10469847636835
+:108B2000002BA0D1D5E90B23C4E90823019BFF2B1F
+:108B30009CD198F80230B34230D0059F98F80000DD
+:108B400006EB460206EB8202013617F82210F6B257
+:108B5000B04208BF0026042907EB82051CD195F816
+:108B600001A0039B0AEB4A0C03EB0C144FEA0C1C0C
+:108B70006178A378C91A11F0FF0100F0AD804FF0C1
+:108B8000000307F82230EB6A0122AA6210460BB1FB
+:108B9000296B984798F80230B342CFD1099A4245E1
+:108BA000A8F1080300F0DF80984657E7236A002BFE
+:108BB0003FF43AAF616A9847A27835E712B1137A69
+:108BC000012B3FD0E38B0A93002B70D1A38B6678E7
+:108BD00004939E46471C0997D4E908C200230B91D1
+:108BE00077460AE08CA701004CA70100B4A701005A
+:108BF000013F8646791C734412D0DFF8D8E2B449AD
+:108C0000624496448E45F3D8DDF824E0A2F1E87280
+:108C1000013FA2F5D432791CA2F5A5727344ECD1C0
+:108C20000B996262002900F04B810A9A04990A4468
+:108C3000E28309E00E46C9E6A6608BF81DC0002855
+:108C40003FF4E7AEA6784B460598DBF8142061693F
+:108C500000EB0807B81A10F4000F0ED120F07F4087
+:108C60000344994211D25B1A0021019A2270013605
+:108C70006670A36061610195D7E6D21B22F07F4246
+:108C80009A4211D29B1A9942EDD3C91A0023ECE7FC
+:108C9000002E7FF4B6AE12B1137A012BCCD08BF834
+:108CA0001C50CBF81870ACE61144C91AEEE74FF02F
+:108CB000000EA678CDF810E08CE71A46816080F8A7
+:108CC00000C0634612B202EB4202120107F802A092
+:108CD0000DE7049A614603E7AF8ADBF814E0686A9F
+:108CE0004FF6FF794F45D5E903232ED084F82C1099
+:108CF000A06262602362D5E906236868A2612A6ADD
+:108D0000A783A0EB0E07C4E903323A02AB680CD488
+:108D100027F07F473B448BB1A36000236362E3836A
+:108D20004FF001036161E370AFE6AEEB000222F0A9
+:108D30007F42934205D99B1A002BEDD1194600239F
+:108D4000EAE7D31A19460023E6E74FF0010784F853
+:108D50002C70A062626023620F46CCE707F80C30EB
+:108D60008BF81DA0CCE6DBF8003003939BF81D7058
+:108D7000039E0023BA46BAF1FF0F10D0D1460FFA76
+:108D800089F202EB420206EB0212976A17B1397AB6
+:108D9000012914D092F80090B9F1FF0FEFD1574696
+:108DA000002B3FF48AAD069ABA427FF48AAD089A46
+:108DB000002A00F07C8100238BF81E308AE59BF8A6
+:108DC0001C30FF2B71D0DBF81800029B83426CD261
+:108DD000C01AD7E90043A34292F800C06DD2BCF19B
+:108DE000FF0FA4EB030468D09569AC424FF0000379
+:108DF00033D39E460195614603921DE0D1F8088069
+:108E0000A8F10403B8F1040F734409D9A342019AED
+:108E100028BF2346934203D95B1B01D083421BD258
+:108E200088690978C6444044631B0EEB0502FF299C
+:108E3000019211D094420FD301EB410106EB0111D5
+:108E4000D1F82880B8F1000FD8D098F80880B8F190
+:108E5000010FD3D10978E8E7039A936064464FF095
+:108E6000FF0E00E0044621B201EB410006EB0018C2
+:108E70000001D8F808509D424ED25B1B9360305CD5
+:108E8000FF28A646EED101EB410109018BF81DC078
+:108E9000735C137006F80190E246D38B013BD383D9
+:108EA0004FF0020201233A7265E7D7E90043A3427B
+:108EB00092F800C04FF0000091D300239360ECE7DC
+:108EC0009A457FF6B2AE00F1010E09940AE000BFA8
+:108ED000592B177F5A2B17FF07463B4401319A4500
+:108EE00089B211D9814F824C6244D719A742F3D875
+:108EF0007746A2F1E8723B44A2F5D43201319A459B
+:108F0000A2F5A57289B2EDD80498099C084481B2F3
+:108F10000491626289E67047EB1ABEF1FF0FC8F850
+:108F20000830BAD00FFA8EF1ADE7089B002B00F0A5
+:108F3000A68000238BF81E30079B002B40F0C480D6
+:108F40009BF81F206AB1DBF824405B460122032115
+:108F50000420A4460FB0BDE8F04F60470D9B8BF88E
+:108F60001E300FB0BDE8F08FA3EB0903A360DBF860
+:108F70000030039360E59BF80930DBF804605C1E69
+:108F8000E4B2002B3FF4A1AC0123079306EBC40429
+:108F90004FF000096378E178656899420CD160E090
+:108FA000012B5AD0637822780133DBB29A4208BF92
+:108FB00000239942637054D01BB203EB430203EBCE
+:108FC000820305EB830215F82330022B1BD0032B01
+:108FD000E6D153789BF80810994211D9DBF80010BC
+:108FE000107903EB430301EB031383F82D00C2F860
+:108FF0002890D36A13B1116B906A9847E178D1E752
+:1090000001239362F5E7D2E9017097F800E0D2F806
+:109010000CC0DBF80010DBF81480BEF1FF0F02D0AB
+:109020000368434524D09BF81D30C0F800804FF002
+:10903000000E0DE003EB430001EB00180001D8F82F
+:1090400008A0D8F81880D644B8F1000F02D10B5C04
+:10905000FF2BEFD13B70CCF800E0D36AC2F8289028
+:10906000C8E7A642A4F108033FF463AF1C4691E7AA
+:109070000EEB4E031B01DCF800E0CB5CE8E79BF84D
+:109080000930DBF804605C1EE4B2002B7FF47EAF95
+:109090004FE70BF0C1FB00287FF452AFCBF818006C
+:1090A0000BF0E0FB9BF81F20CBF814004AE79BF87D
+:1090B0000920DBF80460541EE4B2002A7FF465AF97
+:1090C000089B8BF81E3005E49BF81D7002E40BF042
+:1090D000C9FB04460BF090FB9BF81D7000287FF441
+:1090E00000ACCBF81440FFF7FCBB00BF5A2B17FFB6
+:1090F000592B177FF0B4049F9DF81440069E00285A
+:109100003ED1DFF884C04D1E8CF80810CCF800204A
+:10911000EDB249B105EB450502EB0511914281F82D
+:109120002D00A1F13001F9D15A1E8CF80930CCF88C
+:109130000470D2B27BB107EBC2025660114612F83E
+:10914000083903EB4300E41A8F4203EB8003E4B2D7
+:1091500006EB8306F1D19CB9079ACCF82020089A37
+:10916000CCF824204FF6FF73099AACF80A40204649
+:10917000CCE90544F0BCCCF82820ACF81C30704792
+:109180000120F0BC704700BF682300200A4B2C224E
+:1091900002FB003210B4546A5CB100EB800200EBB9
+:1091A000420003EB8003A446012210BC03210220ED
+:1091B000604710BC704700BF682300202DE9F843CA
+:1091C000DFF8A080BDF82CE02C2707FB00870446C1
+:1091D0007D6805EBC10C15F831909CF8036004EB39
+:1091E000840504EB4504751C0846EDB29CF801109B
+:1091F000A94598BF0025A94208EB84082FD0DCF8C8
+:10920000041006EB460406EB840601EB86044FF0DF
+:10921000040901F826906360089BA360099BE36042
+:109220000A9B23610C9BA361119B63620D9BE3610D
+:109230000E9B23620F9BE3620221109B6270A4F8D5
+:1092400014E02363A1628CF80350D7E908359847EE
+:10925000434649460022A847A06ABDE8F88301209A
+:10926000BDE8F8836823002030B58BB0DDE90E54EB
+:109270000095109D01940295BDF84440129D039401
+:109280000495139C149D05940695159C169D0794B2
+:109290000024CDE90854FFF791FF0BB030BD00BFAB
+:1092A000DFF898C02DE9F0472C2707FB00C70446DC
+:1092B0007D68BDF82C809DF830E0084605EBC101C3
+:1092C00015F830A0CE7891F8019004EB840504EBFA
+:1092D0004504751CEDB2AA4598BF0025A9450CEBC5
+:1092E000840A28D0D1F804C006EB460406EB8406B5
+:1092F0000CEB86044FF005090CF826906360089B80
+:10930000A360099BE3600A9B23610D9BE362022635
+:109310000E9B627084F816E02363A4F81480A662A2
+:10932000CD70D7E908359847534600220421A84755
+:10933000A06ABDE8F0870120BDE8F087682300201F
+:10934000DFF884C02DE9F0412C2707FB00C7044655
+:109350007D68084605EBC10115F83080CE7891F89C
+:1093600001E004EB840504EB4504751CEDB2A8454F
+:1093700098BF0025AE450CEB840421D0D1F804C081
+:1093800006EB460E06EB8E060CEB86084FF0060E3B
+:109390000CF826E0C8F82C300226069B88F801203D
+:1093A000C8F83030C8F82860CD70D7E9083598473C
+:1093B000234600220421A847D8F82800BDE8F08100
+:1093C0000120BDE8F08100BF682300202DE9F041B5
+:1093D000204F4FF02C0C0CFB007C0446DCF80450B2
+:1093E000084605EBC10115F83080CE7891F801E010
+:1093F00004EB840504EB4504751CEDB2A84598BF49
+:109400000025AE4507EB840420D0D1F804E006EB3C
+:10941000460706EB87060EEB86074FF602782EF816
+:109420002680C7E90123069BFB60079BFB6202269F
+:10943000089B3B63BE62CD70DCE908359847234644
+:1094400000220421A847B86ABDE8F0810120BDE8E8
+:10945000F08100BF6823002070B50A4D2C2202FB6A
+:109460000052D2E9083604460846984704EB8403C4
+:1094700004EB430305EB8303B4460022BDE87040D0
+:1094800004216047682300200BF0ECB9401A20F05B
+:109490007F407047012813D808B548B931B1084654
+:1094A000062209490FF04EFF074808BD064808BDCF
+:1094B00041B10846062205490FF044FF034808BDA4
+:1094C00000207047014808BD942300209C23002001
+:1094D00070B5044600200D4603F01AFD88B903F06C
+:1094E00047FF10F006060CD12946062224B1064893
+:1094F0000FF028FF304670BD04480FF023FF2046D0
+:1095000070BD0C2070BD00BF9C2300209423002060
+:10951000022801D00120704738B5044608461D4690
+:1095200004F04CFB10B10020287038BD204638BD37
+:10953000002303700B70704708B50248FEF7D2F89D
+:10954000002008BD1CA8010030B5838983B023B179
+:10955000037D0446C3B1022B04D06FF015052846E5
+:1095600003B030BD01A901F03DF9019B054613B1DF
+:1095700018460FF081FF002DF1D120460CF0D4F9F0
+:109580000025284603B030BD01A9019300F02EFC50
+:109590000028F2D00FF070FF019D002DEDD028467D
+:1095A00001F044FE68710199014810F021FCE4E7E4
+:1095B000200500202DE9F041DFF8B4802B4F82B068
+:1095C0000CE00FF056FF2246BDF80210044601F0F1
+:1095D00015FE20460FF050FF0EF034FD0DF1020194
+:1095E00001A802F0FBFB04464FF0FF324FF0FF33BF
+:1095F00000211320002CE4D1019B93B102F0C8FCA0
+:10960000019E304601F012FE019D70716B79032BB3
+:1096100002D12B790B2B0CD02946384610F0E8FBF1
+:10962000DCE74FF0FF324FF0FF3340460EF0A4FD71
+:10963000D4E721464FF0FF334FF0FF320520EE888C
+:109640000FF017FF0446224605F11C00314601F0D9
+:109650002FF9304601F03CF9204624B10FF00CFF01
+:1096600020460CF061F9019DD6E700BF20050020DF
+:1096700008050020D0B51B4888B002F09DF80446CC
+:1096800000282CD1184801F0E7FD002600276FF0D4
+:1096900009030393CDE90667CDE90144134B14494F
+:1096A000049400944FF4E07212480EF0D9FD124970
+:1096B000104810F0D6FC6FF007030393CDE906675E
+:1096C000CDE901440D4B0E49049400944FF400720F
+:1096D0000C480EF0C5FD0C490A4810F0C2FC2046AB
+:1096E00008B0D0BD0805002074000020B59500002A
+:1096F0004046002038080020ACA701000D9700006C
+:1097000020480020B8080020B8A701002DE9F04F3C
+:10971000B24DDFF8EC92DFF8ECB2DFF8ECA283B0E8
+:10972000AE484FF0FF324FF0FF3302210EF0E2FF60
+:10973000002840F0AD80EB6803F4F833B3F5805FA8
+:1097400000F0A2802B6A03F4F833B3F5804F00F0E9
+:1097500006810024EA682B6AA1496FF31032D1F820
+:109760000080EA606FF310339E4A2B62BFF35B8F79
+:1097700052E8003F23F0010142E800100028F7D131
+:10978000BFF35B8FDB0744BF0023C9E90033B8F1A7
+:10979000000F40F3EB80DBF80030DAF80020D9F856
+:1097A0000060A8EB030313448F4A1360002E00F0FF
+:1097B00009817779002C7CD1042F4AD8022F00F23E
+:1097C000BC808A4A8A498B4840F23D130FF05BF80F
+:1097D000404080F311884FF0030002DF042F019610
+:1097E00040F29580052F41D0804A81498148CF239E
+:1097F0000FF049F8404080F311884FF0030002DF7A
+:1098000001980023036001A802F08CFCDBF8003013
+:10981000DAF80010D9F80020A8EB03030B447249D2
+:109820000B602AB15279D11E01290DD9052A09D020
+:109830002CB1A3892046002B38D0FDF7B7FF0EF0DE
+:1098400001FC6DE7002BF3D000216B480EF0B2FF56
+:10985000EEE7052FB5D1002BF1D0D9F804203368FD
+:10986000C9F80030964200F0E78001964FF0FF32D1
+:109870004FF0FF330320FDF747FF014604460198F0
+:1098800001F052F80198BCE72B6900249C6061E765
+:10989000564A5A49574840F275130EF0F4FF4040BB
+:1098A00080F311884FF0030002DF44E70CF03CF82E
+:1098B000C5E7FA1E012A74D9052F00F0878001330D
+:1098C00062795BD0D9F80060042A71D8022A00F2CC
+:1098D000C480531E012B00F2B2800194022A00F0D2
+:1098E000D0804FF0FF324FF0FF330120FDF70CFF27
+:1098F00004460198002C00F0BF80214601F08AF850
+:10990000019A0023136001A802F00CFC90E7002FDD
+:109910003FF46AAF022F1AD04FF0FF324FF0FF33FF
+:109920000120FDF7F1FE04460198002C3FF469AFD9
+:10993000214601F06FF8019863E7D9F804203368F5
+:10994000C9F80030964245D0022F0196E4D100229A
+:109950000023012100200FF08CFD0446E4E7686A33
+:10996000002200230EF04CF80446F3E61E4A4FF0A6
+:10997000FF331360002C3FF462AF62790194042A34
+:1099800044D9052A45D14FF0FF324FF0FF33032071
+:10999000FDF7BAFE01460446019800F0C5FF019AA2
+:1099A000AFE7154800210EF005FF0F4B1B6886E757
+:1099B000052A44D1002E56D10B4B1B68002B52D0E8
+:1099C0000194E0E7002C7FF47AAF38E7002BE8D170
+:1099D000627979E7C9F80430B6E700BF4C0000208F
+:1099E0004C24002050240020A4230020C0A7010004
+:1099F0000CA801008CA701007400002000A8010041
+:109A0000A82300204824002040240020002A7FF4BE
+:109A100065AF214A21492248CF230EF034FF404050
+:109A200080F311884FF0030002DF019B00221A60CF
+:109A300001A802F077FB02E7C9F8043015E7164ADF
+:109A400016491748F4230EF01EFF404080F311889A
+:109A50004FF0030002DF0194DBE7124A0123136099
+:109A60000EB901943DE7D9F804300022226083B199
+:109A70001C60C9F80440E2E6046001A802F052FB51
+:109A8000DDE600220023012100200FF0F2FC044655
+:109A90002FE7C9E90044D2E6C0A701000CA80100E5
+:109AA0008CA70100A423002038B5074B05460121EF
+:109AB00018880FF0FFFC0121044608300FF04FFD1D
+:109AC000034620461D7038BD603B002070B500F194
+:109AD00008040E462046022115460FF040FD6B1C7F
+:109AE0003E2202704370012120460FF038FD0670BF
+:109AF00029462046BDE870400FF031BD70B502F137
+:109B0000080504460E46284602210FF028FD0346AC
+:109B1000082204211A70597028460FF020FDB4FA6B
+:109B200084F35B090470C370A0F8016070BD00BFCE
+:109B3000F8B5274E274D284A284B4FF0FF3737609E
+:109B40004FF0FF3641F6FF77C5E900670026002792
+:109B5000C2E900671F260027C3E9006740B30C462F
+:109B600001F09CFF0020FFF79FFF1D4A20601D4B66
+:109B70001D4E1E4D1E4800241460214602221C600A
+:109B800034602C600FF009FCBFF35B8F194B53E876
+:109B9000002F42F0010243E800210029F7D1BFF372
+:109BA0005B8F154B18682146BDE8F8400EF002BEE9
+:109BB0000B4D0D4A0D4C0B4B014629601160216085
+:109BC00019600B48BDE8F84002220FF0E6BB00BF69
+:109BD000B4230020000000203809002008000020E5
+:109BE000B0230020402400204C24002048240020E2
+:109BF00044240020502400203C2400202DE9F84378
+:109C0000174C66684FF000094C4606F000551746A1
+:109C100054EA050209D0134A12680646884602F043
+:109C20000800494650EA010201D1BDE8F883184610
+:109C30000B220421FFF74AFF0670A0F801703EB91D
+:109C400008F104010330BDE8F84308220FF07ABBA5
+:109C500049460330BDE8F84308220FF09EBB00BF21
+:109C6000000000200800002070B502F1080405463D
+:109C70000E46204602210FF072FC03460522042105
+:109C80001A70597020460FF06AFC0023A0F801609A
+:109C900003702B78C37070BD38B5064B0546188825
+:109CA0000C460FF007FC21462860BDE8384008301C
+:109CB0000FF055BC603B002070B5431E86B00846CF
+:109CC0001446102B0AD8DFE803F0132A450909537C
+:109CD000095E72810909090909100D006FF015006C
+:109CE00006B070BD2146FFF723FF002006B070BD0F
+:109CF00020460D21FFF7D0FF034602220020042159
+:109D0000D9711870987018715871187258729872C9
+:109D1000D87218735A70DA709A7106B070BD204606
+:109D20004121FFF7B9FF00240546214600F8014B09
+:109D300040220FF032FB6978AA78EB7861F0580185
+:109D400062F07C0243F0010320466970AA70EB7058
+:109D500006B070BD20460921FFF79EFF002400F8E1
+:109D6000014B214608220FF018FB204606B070BDBB
+:109D700089680020FFF7ACFB0020FFF795FE20600C
+:109D8000002006B070BD184E0FCE01AD0FC5336870
+:109D90002B7020461221FFF77FFF002400F8014BB3
+:109DA000112201A90FF0CEFA204606B070BD204660
+:109DB0001821FFF771FF00240546012100F8024B2E
+:109DC0000BF044FC6870204606B070BD204621218F
+:109DD000FFF762FF0146002401F8114B01300BF040
+:109DE000A7FC204606B070BD30A80100F0B58389FD
+:109DF0008FB00022022B099240F2918004460E4659
+:109E0000083003210FF0CBFBA28983789A42C0F07F
+:109E100086800588A44FB5F5105FA8B23D80C5F3D4
+:109E200009034FEA95226BD2002A73D0013A072A20
+:109E300070D8DFE802F0906F9E57776F6F04013B98
+:109E40004D2B67D8DFE813F05802980286026600AF
+:109E50007F0262025D0455044D044604E202BE0224
+:109E6000A50201033A0435042F0429041D03170336
+:109E700007039A0386037A036C0366035E034A03AF
+:109E80006600660066003B03660441022B02220264
+:109E900066006600190213020E021D040C04FB0387
+:109EA000F403EC03CB03A303F002E00166006600B9
+:109EB0006600660066006600660066006600660072
+:109EC0006600660066006600660066006600660062
+:109ED0006600660066006600660066002F03660086
+:109EE00066005102013B082B14D8DFE813F0E100B3
+:109EF0008300040113001300130013001300F80083
+:109F00003F2A07D12146184609AAFFF7D5FE163089
+:109F10001FD1388801210FF0DFFA0FB0F0BD00200B
+:109F20000FB0F0BD052BF5D1A368042109A81D8849
+:109F3000FFF7B2FE0446E11CA8B204F0A5F8A4F8AD
+:109F400001502070002840F0F183E3785B425BB25F
+:109F5000E3700998E1E7062B00F0EE831D2BD9D1C1
+:109F6000A368188803F096FF014638880FF0B4FA0A
+:109F7000D3E7352B24D82C2B0AD8012B00F0D9831A
+:109F8000032BC7D1204609A9FFF7D2FD0998C4E7E2
+:109F90002D3B082BBED801A252F823F0E3A100000C
+:109FA000159F0000159F0000159F000095A100005F
+:109FB000159F00006FA10000159F000015A1000073
+:109FC0007B2B00F0CC837C2B0FD1A3681D88598894
+:109FD000284604F093F80321044609A8FFF75CFE25
+:109FE0000470A0F80150099897E7632B92D1A268FA
+:109FF0002E4B83E1412109A8FFF74EFE00210446C4
+:10A00000402200F8011B0FF0C8F9E2786378E57B85
+:10A01000207CE17D94F806C0E77A94F8216062F034
+:10A020007F0243F02003E2706370A27E637F45F0FD
+:10A03000280540F0220041F0040162F0080243F0DC
+:10A040000F03E57394F822502074E17594F823000F
+:10A0500094F82410A276637794F8282094F8273097
+:10A0600065F00F0560F0060084F822506CF03F0C9C
+:10A07000FF2567F01B0746F0300641F07F0142F0F4
+:10A08000040263F07F0384F806C0E77284F821605D
+:10A0900084F8230084F8241084F8282084F82730DA
+:10A0A000E5762577099838E7603B002038090020DD
+:10A0B000092109A8FFF7F0FD034600220B204FF00D
+:10A0C000FF316FF00E0505241A70587018715D711C
+:10A0D00009989C719A70DA70D97119721DE707217D
+:10A0E00009A8FFF7D9FD0146002001F8010BFFF791
+:10A0F000D1F9099811E7092109A8FFF7CDFD002141
+:10A100000446082200F8011B0FF047F96023099864
+:10A11000637102E7B54B1B68002B40F31883B44B07
+:10A120001B68E3B1A66837783C46002F00F02C830B
+:10A130000024B048224608E001888B42A1EB0305C9
+:10A140000DD8BA42058000F01F8306EB820301326E
+:10A15000B3F80110B3F803301C440029ECD00121FE
+:10A1600009A8FFF799FD122303700998D5E6A368A3
+:10A17000012109A8B3F803401D88FFF78DFD9B4B13
+:10A180001A68002A40F0E7821A2DECD96442099837
+:10A190001C60C2E6A368954C1D78012109A8FFF751
+:10A1A0007BFD2368002B00F0D682914A1268002ABA
+:10A1B00040F0D1820270002D00F0F782012DD2D143
+:10A1C000002B3FF7C6AE8C4A8C4B8A4800211160A9
+:10A1D000022219600FF0E1F8236809985B422360BE
+:10A1E0009BE6A368042109A81D889E78FFF754FD0B
+:10A1F000A9B20446C31C32460220FFF789F9207039
+:10A200000998A4F8015088E6A36899781D88B3F8E6
+:10A210000540CE0703D5DA7842F00702DA708A07E4
+:10A2200003D51A7942F007021A71D9781B7941EAED
+:10A23000030212F0F80F40F0C7824E0700F0BF8211
+:10A240005A0700F0BC8214F003021CBF04F1FF3473
+:10A2500004F00102284603F0CBFE014638880FF0D7
+:10A260003BF95AE607F06CF9FFF71EFC55E6A068CB
+:10A2700007F05EFDFFF718FC4FE6A06800F117023B
+:10A28000C11D07F097FCFFF70FFC46E6A36859884D
+:10A29000188803F071FEC0B2FFF706FC3DE6052109
+:10A2A00009A8FFF7F9FC0AA904460DF1220003F002
+:10A2B00057FEBDF82230A4F801300022BDF8283046
+:10A2C00022700998A4F8033027E6A3681D889A88AD
+:10A2D0005988284603F0FAFD0446032109A8FFF730
+:10A2E000DBFC0470A0F8015033E6A068C17907F0E8
+:10A2F00003FEFFF7D9FB10E6A268414B11685268D4
+:10A300005A6019600020FFF7CFFB06E6A4682179A8
+:10A31000208801290AD06388984200F24B821F28C6
+:10A3200040F24882B3F5804F00F24482A57BA379C6
+:10A3300062790295657B01950734009402F072FC06
+:10A34000FFF7B2FBE9E5A1680120FFF7C1F8FFF7CD
+:10A35000ABFBE2E5092109A8FFF79EFC00210446BA
+:10A36000082200F8011B0FF018F8FF2149220123F1
+:10A370006170A270E370ECE5042109A8FFF78CFC82
+:10A3800007210022C17002701B2141708270099860
+:10A39000C3E5A468B4F813506188637922792088F2
+:10A3A0000495B4F811500395B4F80F500295257B2D
+:10A3B00001950634009406F059FB014638880FF0E9
+:10A3C0008BF8AAE5A3681878002800F0E9815B788B
+:10A3D000002B00F0E5810B490B4A00230B60136052
+:10A3E00002F046FFFFF760FB97E500BF4C2400201A
+:10A3F000B0230020442400204824002040240020D2
+:10A4000008000020B4230020B8230020A46863794A
+:10A41000B4F80320B4F801102078A4790094F7F779
+:10A42000EFFAFFF741FB78E5A3681A78D10744BF3C
+:10A4300007215970970744BF07229A709978587876
+:10A4400003F0CCFDFFF730FB67E5304606F016FD64
+:10A45000FFF72AFB61E5A368082109A81D88FFF71B
+:10A460001BFC0446E11CA8B203F0BEFC2070099856
+:10A47000A4F8015051E5A06806F046FDFFF714FB73
+:10A480004BE5A2681189538810880291D188019107
+:10A49000928800920022114603F01CFC0146388885
+:10A4A0000FF01AF839E5032109A8FFF7F5FB01467B
+:10A4B000002301F8023B0130FFF73AF849E5A268B2
+:10A4C0001189158853880291D18801919288009250
+:10A4D00028460022022103F0FDFBFDE6092109A820
+:10A4E000FFF7DAFB0346FF2200213F20D8701970E6
+:10A4F00003205A709A709871D971099819721A715B
+:10A500005A710AE5A3681D8800222846062106F034
+:10A51000EDF9E1E6A26832F8025B00212846F6E791
+:10A52000A268114602F10C0331F8020B0A3206F060
+:10A5300015FD014638880EF0CFFFEEE4092109A889
+:10A54000FFF7AAFB002300F8013B082108F054F9AB
+:10A550000998E2E4A0680AAA00F1100100230AF0B9
+:10A56000B9F9112109A8FFF797FB002300F8013B77
+:10A570000AA910220EF0E6FE0998CEE4A368188816
+:10A5800003F06CFC014638880EF0A6FFC5E4A36812
+:10A59000052109A81D88FFF77FFB0446221DA8B2EC
+:10A5A000E11C03F0FDFCE27823792070002A92FA86
+:10A5B000A2F2B2FA82F208BF4FF0FF32002B93FAF8
+:10A5C000A3F3B3FA83F302F1010208BF4FF0FF33A4
+:10A5D000E27001330998A4F8015023719DE4092128
+:10A5E00009A8FFF759FB0AAB04460DF122020DF151
+:10A5F0001E0008A903F0CAFCBDF82030BDF81E20DB
+:10A60000A4F80120A4F80330BDF82230A4F80530E6
+:10A610000022BDF8283022700998A4F807307CE4A5
+:10A62000A368188806F0EEFF0020FFF73DFA74E4F7
+:10A63000A368187806F0CAFFFFF736FA6DE4A16840
+:10A6400007220AA80EF07EFE072109A8FFF724FBC7
+:10A650000446611C0AA807F033FC207009985CE4EA
+:10A66000A16807220AA80EF06DFE072109A8FFF7CE
+:10A6700013FB0446611C0AA807F000FC207009982F
+:10A680004BE4022109A8FFF707FB044606F056FF3A
+:10A6900000236070237009983FE4A06806F0D0FEA4
+:10A6A000FFF702FA39E4A06807F022FAFFF7FCF995
+:10A6B00033E406F097FEFFF7F7F92EE4022109A82C
+:10A6C000FFF7EAFA00230370044606F089FE607083
+:10A6D000099822E4A3681878F6F78EFEFFF7E4F9EC
+:10A6E0001BE4A16811F8010B02F0E0FCFFF7DCF9B4
+:10A6F00013E4A16811F8010B02F084FCFFF7D4F910
+:10A700000BE4022109A8FFF7C7FA00220270427089
+:10A71000099802E4A3681D889A780023CDE90133E3
+:10A7200028460093022103F0D5FAD5E57F23E37094
+:10A730000FE4A268274BE1E5A3689978188803F035
+:10A7400073FB014638880EF0C7FEFFF7E6BB012118
+:10A7500009A8FFF7A1FA0C230370FFF7FABBA3685F
+:10A760001D880AA9284603F0A5FC0521044609A86E
+:10A77000FFF792FA0470A0F80150BDF82830A0F855
+:10A7800003300998FFF7C9BB134A144913680868D6
+:10A790002344136000210EF00DF80998FFF7BDBBAC
+:10A7A0000F4B4FF0FF321A601AE6002BBFF60BADCD
+:10A7B000FFF7CFBB1220FFF777F9FFF7AEBB1221EF
+:10A7C0000EF08AFEFFF7A9BB11210EF085FEFFF700
+:10A7D000A4BB00BF00000020402400203C24002037
+:10A7E000B423002083890022032B0A6041D92DE97C
+:10A7F000F04105460E46083004210EF0D0FEAB892C
+:10A800004788B0F80080BB420AD303F0E9F94FEA69
+:10A810001833044618B39A0802D1D3B1012B03D0E0
+:10A820006FF01500BDE8F081027963F30102027157
+:10A830006771A9683A46E01D0EF084FD2146C8F311
+:10A840000B0003F0D9F90028ECD0204603F0CEF934
+:10A85000E6E70379022262F301030371E8E7134B91
+:10A860001968034601F00072134305D16FF03600FA
+:10A87000D8E76FF0150070474FF0FF334FF0FF320D
+:10A880000120FCF741FF0221306008300EF067FE26
+:10A8900001241A22027044703068214608300EF0FC
+:10A8A0005EFE03466FF036001C70BBE70000002020
+:10A8B000064B1B6830B403F01004002554EA05036E
+:10A8C00001D130BC704730BCFFF7CEB9000000208A
+:10A8D00070B5044670B90E4D0E480F492E6830F819
+:10A8E00014200B683244013B2A60002220F8142017
+:10A8F0000B6070BD094A0A490A4840F64C730DF0D6
+:10A90000C2FF404080F311884FF0030002DFE2E70E
+:10A910004024002044240020B023002044A801004B
+:10A9200080A801008CA70100037F03F00303013B13
+:10A93000012B70B50DD92E4A2E492F4841F24713ED
+:10A940000DF0A1FF404080F311884FF0030002DFBB
+:10A9500070BD044601F1080528460421E6880EF082
+:10A96000FEFD237F03F00303022B0CBF46F40053CC
+:10A9700046F480530380617F418028460EF0EFFD4E
+:10A98000627F04F11F010EF0DDFC1C4B1A68002AE7
+:10A99000DEDD1B4C1B4923680968591A914217D206
+:10A9A0000133236036B9184A32F81630013322F8E1
+:10A9B000163070BD0E4A15490F484FF48A530DF0FA
+:10A9C00062FF404080F311884FF0030002DFEAE7A6
+:10A9D000074A0F49084841F23A130DF054FF40402E
+:10A9E00080F311884FF0030002DF2368D8E700BF2F
+:10A9F00044A801000CA801008CA701004C240020F1
+:10AA000048240020402400204424002080A8010085
+:10AA10004CA901002DE9F04F0579C788022D0446A5
+:10AA200089B00E4600F11C0011D0043D0C2D57D802
+:10AA3000DFE815F026015600560056005600560075
+:10AA4000CF00CD0166008800A100B7002700E37F9A
+:10AA5000033B122B00F2CA81DFE813F05C02C8014D
+:10AA6000C80146025202C8011F02C801C801EB0119
+:10AA70000E02C8012802C801C801C801C801CB01E3
+:10AA8000CB01784B586800210A4600F0005313436D
+:10AA900033D0754B18680B4600F4006213432CD07A
+:10AAA000052230460C21FFF711F8237F0370A0F830
+:10AAB0000170627F002A92FAA2F3B3FA83F308BF0F
+:10AAC0004FF0FF330133C370A27F92FAA2F3002A42
+:10AAD000B3FA83F308BF4FF0FF33013303710CE087
+:10AAE00041F25203614A624962480DF0CCFE404097
+:10AAF00080F311884FF0030002DF09B0BDE8F08F4A
+:10AB0000584B586800210A4600F000531343F4D014
+:10AB1000554B18680B4600F004021343EDD0092290
+:10AB200003213046FEF7D2FF237F0370E18B228C96
+:10AB3000638CA0F80730A0F80170A0F80310A0F80B
+:10AB40000520DAE7474B59680024224601F4004308
+:10AB50001343D2D00836022130460EF000FD0346E2
+:10AB60003022032130461A7059700EF0F8FC047040
+:10AB7000A0F80170C1E7404B1968002301F40002FE
+:10AB80001343BAD00836022130460EF0E8FC0346E3
+:10AB90005722022130461A7059700EF0E0FC0780EF
+:10ABA000ABE7304B586800210A4600F000531343CE
+:10ABB000A3D02D4B18680B4600F4002213439CD001
+:10ABC000304603221421FEF781FF0780237F837024
+:10ABD00093E7257F002D00F0CD81224B59684FF07F
+:10ABE0000008424601F00053134386D01E4BD3F8B1
+:10ABF00000C040F201210CEA0102434613430CF469
+:10AC0000007041463FF479AF002D40F0C6811B4AE9
+:10AC100013680133136050EA010304F11F08304642
+:10AC200040F0638212220121FEF750FF0570A0F868
+:10AC30000170637FC370A37F03F0010306460371B5
+:10AC40004146062205300EF07DFBE38E618EA28E1A
+:10AC5000A6F80D20A6F80B10A6F80F3094F838309F
+:10AC600073744AE7000000200800002044A8010097
+:10AC70000CA801008CA7010038090020B023002097
+:10AC8000CE4A237E257F94F81A9094F81BA092E870
+:10AC900003005B420A0C5BB26F060690ADF81C1015
+:10ACA0008DF81E20059300F15D81C54B5868002189
+:10ACB0000A4600F00053BAF1000F40F08D811343B3
+:10ACC0003FF41BAFBF4B1968534601F00202134318
+:10ACD0003FF413AFDFF8FC82D8F80020002A3FDBF6
+:10ACE00004F11E0B16D0B84D574606222946584689
+:10ACF0000EF018FB38B9227F15F8011CC2F3801042
+:10AD0000884200F03B82D8F800200137974205F1D5
+:10AD10000805EADBAD4DAE4F2A6807EBC202594683
+:10AD2000901C06220EF00EFB2A68217FD8F8003016
+:10AD300007EBC200C1F380114170207F012100F0B8
+:10AD40000F0081400F2B07F8321000F31482591CBA
+:10AD50000A46C8F800102960102A04BF00232B609F
+:10AD6000237F03F00F03012B00F00282637FA3F126
+:10AD7000060A5FFA8AFA0533DAB2574602213046EC
+:10AD8000FEF7A4FE01230370237F08AA03F00F033C
+:10AD90001344054613F8083C437006F0CFFB814589
+:10ADA00080F0DB814846EA1CA91C06F083FBAB78E7
+:10ADB0000233AB7005F10A0685F809A004F12401FD
+:10ADC00030463A460EF0BEFA059BF35595E67C4BAD
+:10ADD0001968002301F0100213433FF48EAE32468F
+:10ADE000394609B0BDE8F04FFEF73EBF41F21B13F4
+:10ADF00078E6734B586800210A4600F0005313436D
+:10AE00003FF47BAE6F4B18680B4600F040021343D3
+:10AE10003FF473AE30460A220721FEF757FE078043
+:10AE2000A38C4380E38C8380238CC380638C038159
+:10AE300063E6634B1968002501F400622B46134357
+:10AE40003FF45BAE0836022130460EF088FB034625
+:10AE50000C2208211A70597030460EF080FB0570E4
+:10AE6000A0F8017094F82030C370B4F821308380CA
+:10AE7000B4F82330C38040E6514B1968002301F039
+:10AE8000800213433FF439AE94F82000324639462D
+:10AE900009B0BDE8F04FFEF731BE0B463A46014619
+:10AEA000002009B0BDE8F04FFEF7A8BE444B58683B
+:10AEB00000210A4600F00053134364D0414B186848
+:10AEC0000B4600F0200213435DD030460A220621D3
+:10AED000FEF7FCFD0780238C4380638C8380A38C6A
+:10AEE000C380E38C038108E6354B1968002001F02C
+:10AEF0008002034613433FF400AE32463946C7E7AB
+:10AF000094F820300E2B7FF4F8AD0B463A46002122
+:10AF10001A20C6E72A4B586800210A4600F0005361
+:10AF200013433FF4EAAD274B18680B4600F01002BC
+:10AF300013433FF4E2AD30460C220521FEF7C6FD77
+:10AF400004F120010546082220F8027B0EF0FAF9F0
+:10AF500005F10A0004F12801022209B0BDE8F04F12
+:10AF60000EF0F0B90021084604F11E034A4606F02F
+:10AF700061FF9AE6A07F04F12503FF2204F11F017F
+:10AF800006F058FF29E60023CDE901333846009347
+:10AF90001A22022102F09EFEAFE550EA010340F0C2
+:10AFA000D080122201213046FEF790FD0446414632
+:10AFB00012220EF0F2F925709FE500BFB0A6010045
+:10AFC0000000002008000020BE230020B82300203D
+:10AFD000BC230020B423002013433FF48EAD7F4BED
+:10AFE00018680B4600F4806213433FF486AD237F5C
+:10AFF00003F00F03012B0CD0794A7A497A4840F6C6
+:10B00000DD330DF040FC404080F311884FF0030029
+:10B0100002DFDFF8E481D8F80020002A42DB04F1E7
+:10B020001E0A16D0714D00270622294650460EF002
+:10B0300079F938B9227F15F8011CC2F380108842D3
+:10B0400000F0BB80D8F800200137974205F10805D1
+:10B05000EADB674D674F2A6807EBC2025146901C36
+:10B0600006220EF06FF92A68207FD8F8001007EB4F
+:10B07000C20CC0F380108CF8010094F81CC00120B1
+:10B080000CF00F0C00FA0CF00F2907F8320000F357
+:10B09000918001310A46C8F800102960102A04BFC7
+:10B0A00000232B6011220B213046FEF70FFD0123F8
+:10B0B00003704370054606F041FA81456FD2484659
+:10B0C000EA1CA91C06F0F6F9AB780233AB70237FBB
+:10B0D000C3F3C0136B7204F12401062205F10A00C8
+:10B0E0000EF030F9059B2B7407E51E220A21FEF7AE
+:10B0F000EDFC0570A0F80170637FC370A37F03713E
+:10B1000006464146062205300EF01CF9062204F1DF
+:10B110002B0106F10B000EF015F9062204F12501B2
+:10B1200006F111000EF00EF9E38E618EA28EA6F8E4
+:10B130001920A6F81710A6F81B3094F8383073774A
+:10B14000DBE41E220A213046FEF7C0FC04464146DD
+:10B150001E220EF022F92570CFE4237FC3F3801363
+:10B16000AB70062204F11E01E81C0EF0EBF821E69C
+:10B1700000270B2202E601322A60EDE51D4911F895
+:10B18000373002F00F0223FA02F0C0073FF5B5ACEA
+:10B19000012000FA02F2134301F83730E0E5237F83
+:10B1A000C3F38013AB70062204F11E01E81C0EF0FD
+:10B1B000C9F88CE701322A6070E70E4810F8373082
+:10B1C00002F00F0223FA02F1CD073FF596AC012100
+:10B1D00001FA02F2134300F8373063E70800002059
+:10B1E00044A8010080A901008CA70100BE23002013
+:10B1F000B8230020BC230020B423002070B500F148
+:10B2000008040E462046022115460EF0A8F9034612
+:10B21000132205211A70597020460EF0A0F901235F
+:10B220000370A0F80160A0F8035070BD0379022BF1
+:10B2300008D0043BDBB20C2B01D900207047054A33
+:10B24000D05C7047037F03F00303032B0CBF042083
+:10B2500005207047A8A90100034B002102460846BB
+:10B260001A60FEF765BC00BF3C24002007F0C4BA9A
+:10B2700008B5002309F02EFB002008BD10B50446D8
+:10B2800007F0DCFA70B907F051FFE0B908F04EFCA6
+:10B2900050BB08F003FD002837D12046BDE8104020
+:10B2A0000CF044BF224A2349234840F22D530DF0AD
+:10B2B000EAFA404080F311884FF0030002DF07F004
+:10B2C00035FF0028E2D01A4A1A491B4840F232538F
+:10B2D0000DF0D9FA404080F311884FF0030002DFEF
+:10B2E00008F024FC0028D4D0114A124912484FF427
+:10B2F000A7630DF0C8FA404080F311884FF00300B7
+:10B3000002DF08F0CBFC0028C7D0094A09490A48E7
+:10B3100040F23E530DF0B7FA404080F311884FF0F1
+:10B32000030002DF2046BDE810400CF0FFBE00BF66
+:10B33000B8A90100F4A901008CA701000CF0F6BE29
+:10B340002DE9F84F2F4F0B783C780D4679789942CC
+:10B350009CBFBB782B709A428346924645D05A1CBC
+:10B36000294ED2B213FB04F3914208BF0022F11818
+:10B370002A703AD0F35A03804FF000084FF00109C9
+:10B3800022E07BB3037903F00303013B012B31D9A6
+:10B3900002234B6002F02AFC2B78797838789942A6
+:10B3A0009CBFBB782B709A4521D05C1CE4B213FB88
+:10B3B00000F3A14208BF0024F1182C7017D0F05AF6
+:10B3C000BBF80030984212D14868012820F00303EE
+:10B3D000D7D808F101085FFA88F8C1F80490002B6B
+:10B3E000DAD0D7E702234B60D6E74FF0000840469B
+:10B3F000BDE8F88F08F101085FFA88F8C1F80490F9
+:10B40000C8E700BFFC010020000200202DE9F04F3A
+:10B41000A74CA84EDFF8C0B287B0D4E9000103AA58
+:10B42000FCF702FB0746002840D0039B002B00F0EE
+:10B430003081187804AA02A904F078FF0546002894
+:10B440006AD0DDE90312BDF8083091F8009005924A
+:10B45000ADF80A300DF114080DF10A0704F07CFF75
+:10B460002946059ABDF80A0004F0BEFF03462846A7
+:10B470001D4604F035FF012004F0A8FB01212846F9
+:10B480000DB104F037FE42463946484604F04EFFFF
+:10B4900005460028E2D130680CF048FED4E90001EE
+:10B4A00003AAFCF7C1FA07460028BED104AA02A9E4
+:10B4B0000DF1070004F020FF054600286AD0049A29
+:10B4C000BDF808309DF807900592ADF80A300DF1EF
+:10B4D00014080DF10A0704F03FFF2946059ABDF84C
+:10B4E0000A0004F081FF034628461D4604F0F8FEDA
+:10B4F000012004F06BFB012128460DB104F0FAFD98
+:10B5000042463946484604F011FF05460028E2D17C
+:10B5100030680CF00BFEC1E7039B05931B79013BE0
+:10B520000A2B07D8DFE803F0392F061406060606B3
+:10B5300006251400604A6149614840F2E3630DF05A
+:10B54000A2F9404080F311884FF0030002DF64E766
+:10B55000574960680022FCF76FFA5A4B0599DB786F
+:10B56000594A0B703846FCF757FA30680CF0DEFD8C
+:10B5700094E74F4960680022FCF75EFA0599384667
+:10B5800002F066FE49E705A9384602F071FE002880
+:10B5900000F0C78007B0BDE8F08F45496068002221
+:10B5A000FCF74AFA059D95F82030D5F81CA07BB130
+:10B5B000012B00F0B280404A4049414840F21A73E2
+:10B5C0000DF061F9404080F311884FF0030002DF75
+:10B5D0003E4AD17892F801C090784B1CDBB29C4572
+:10B5E00008BF002398424FF0000C85F820C000F0FF
+:10B5F000AC802F60107800FB01214D60D370344D7A
+:10B60000AB78EA7895F800C09A422AD005F104098F
+:10B6100003FB0C9CBCF1000F23D09CF820309A0750
+:10B62000C3F3400703F0010858D5EA78AB7895F8E2
+:10B6300000C069789A4214D00133DBB2994265D0D8
+:10B640009A42AB700DD003FB0C9CBCF1000F08D0EC
+:10B65000002FE2D1B8F1000F03D09CF82030DB07B7
+:10B66000DBD5BAF1000F3FF4D8AE9AF80030002BCA
+:10B6700079D0013BDBB28AF80030002B7FF4CDAEED
+:10B68000DAF80430002B3FF4C8AEDAF80800984727
+:10B69000C3E6094A0F490A4840F22F630DF0F3F858
+:10B6A000404080F311884FF0030002DF039BC0E6A7
+:10B6B000042A00200C2A0020B8A901000CA80100CF
+:10B6C0008CA70100FC010020002A0020840000203B
+:10B6D000D8000020FCA90100700200205B463A4619
+:10B6E00039460120CBF808C0FCF70AFA00289CD0A4
+:10B6F000284A2949294840F232730DF0C4F84040E5
+:10B7000080F311884FF0030002DF8EE70023AB7057
+:10B71000002AA6D0DFF89CC09AE7284604F05AFB1E
+:10B7200056E71F4902466068FCF786F9059900292B
+:10B730003FF473AE1B4B1C4ADB780B703846FCF7AA
+:10B740006BF930680CF0F2FC67E6124A17491348AF
+:10B7500040F221730DF097F8404080F311884FF0CC
+:10B76000030002DF4BE70B4A11490C4840F24473D7
+:10B770000DF089F8404080F311884FF0030002DF9C
+:10B780009AF80030013BDBB28AF80030002B7FF4DE
+:10B7900044AE75E7B8A9010000AA01008CA701001A
+:10B7A000042A0020FC010020002A002018AA010021
+:10B7B00008AA0100DC0000202DE9F047A14BA24DB2
+:10B7C000186086B009F00AF8FCF746F99F48059022
+:10B7D0009F48A04CA04A0492CDE9020503210B2208
+:10B7E00002250423019200949C4A217023720621B1
+:10B7F000002025742576FDF77DFC002840F0F280BE
+:10B800000122002196480EF014FC06F0C3FF044606
+:10B8100018B1204606B0BDE8F087924BDFF84C82A5
+:10B82000914D904F181D03223421FCF763F84346D5
+:10B830000322181D0821FCF75DF8EC786A78AB78D4
+:10B840000134E4B2A24208BF00249C42404613D017
+:10B85000FCF77EF80646384676B1FCF779F838B141
+:10B860000660EA782B7802FB03535860EC70E5E73A
+:10B870007E493046FCF786F87D4B0F22181D482183
+:10B88000FCF738F87B4B1022181D0821FCF732F822
+:10B890007848FCF75DF80446002800F0BF80764A3F
+:10B8A0002046111FFCF7AAF87248FCF751F804462D
+:10B8B000002800F0A580714A714DDFF8DC91DFF8B7
+:10B8C000B0812046111F2E46FCF798F80C2306F88D
+:10B8D000043B99F80340002799F8012099F80230B9
+:10B8E0000134E4B2A24208BF00249C42304649D051
+:10B8F000FCF72EF882464046BAF1000F42D0FCF722
+:10B9000027F800283AD0CAF80470C0F800A099F8C7
+:10B91000031099F800202B7801FB0292013BDBB267
+:10B9200050602B7089F80340002BD5D107F0FCFB49
+:10B93000044600287FF46DAF01F01AFA044600288F
+:10B940007FF467AF08F0F0F8044600287FF461AF99
+:10B9500001F0FAFB044600287FF45BAF08F09CF985
+:10B96000044600287FF455AF02F0EAFB04460028A5
+:10B970007FF44FAF012006F0F5FA4AE73D49504603
+:10B98000FCF700F82B785F1EFFB2002BCED03D4EA7
+:10B99000DFF8E090F478DFF8D8807278B37801347B
+:10B9A000E4B2A24208BF00249C424846BED0FBF746
+:10B9B000CFFF82464046BAF1000FB7D0FBF7C8FF71
+:10B9C000013FFFB2002837D0C0F800A0F1783278EC
+:10B9D0002B7801FB0262013BFF2F50602B70F4704B
+:10B9E000DBD1A3E7284A294929484FF498730CF082
+:10B9F0004AFF404080F311884FF0030002DFFFE66A
+:10BA0000214A2449224840F21B530CF03CFF40409D
+:10BA100080F311884FF0030002DF4CE71A4A1D49FA
+:10BA20001B4840F214530CF02EFF404080F3118865
+:10BA30004FF0030002DF32E70E495046FBF7A2FF4A
+:10BA400074E700BF0C2A0020015501004556010093
+:10BA5000482B0020842D002065550100282A002055
+:10BA6000102A00207C240020840000201C250020B7
+:10BA7000C02500203C250020082A0020002A0020A4
+:10BA800038250020AC000020B8A90100F4A901006D
+:10BA90008CA70100A8AC0100980000202DE9F04F10
+:10BAA00087B001F067F9002840F0EF8001F024FC36
+:10BAB000002840F0FC80684605F0E0F9002800F01E
+:10BAC000098102F03FFB002840F01681B04BB14ED7
+:10BAD000B14FB24D00245C80204606F043FAB04BD3
+:10BAE00074805C807C806C800122214668460EF068
+:10BAF000A0FAAC4B224621460320C3F808D0FBF73E
+:10BB0000FFFF002840F006814FF0FF324FF0FF3377
+:10BB100068460CF031FBA44BDFF89092DFF8888286
+:10BB2000181D03223421FBF7E5FE4B460322181DA6
+:10BB30000821FBF7DFFEF4787278B3780134E4B2C1
+:10BB4000A24208BF00249C42484616D0FBF700FFE3
+:10BB500082464046BAF1000F0FD0FBF7F9FE40B124
+:10BB6000C0F800A0F278337802FB03635860F470E9
+:10BB7000E2E78E495046FBF705FF8D4B0F22181D5B
+:10BB80004821FBF7B7FE8B4B1022181D0821FBF74D
+:10BB9000B1FE8848FBF7DCFE0446002800F0D680A2
+:10BBA000854A2046111FFBF729FF8248FBF7D0FE8C
+:10BBB0000446002800F0BC80804A814EDFF8F0A1E6
+:10BBC0002046111FB046FBF719FF0C2308F8043B71
+:10BBD000EC784FF000096A78AB780134E4B2A24205
+:10BBE00008BF00249C42404620D0FBF7B1FE8346AC
+:10BBF0005046BBF1000F19D0FBF7AAFE90B1CBF86D
+:10BC00000490C0F800B0E9782A78337801FB02523A
+:10BC1000013BDBB250603370EC70002BDBD107B01E
+:10BC2000BDE8F08F63495846FBF7ACFE33785D1EE4
+:10BC3000EDB2002BF3D0FC78DFF87891DFF870815B
+:10BC40007A78BB780134E4B2A24208BF00249C4257
+:10BC50004846E4D0FBF77CFE82464046BAF1000F2E
+:10BC6000DDD0FBF775FE013DEDB200287CD0C0F8B9
+:10BC700000A0F9783A78337801FB0272013BFF2D7E
+:10BC800050603370FC70DBD1C9E74E4A4E494F48D3
+:10BC90004FF4BF730CF0F7FD404080F311884FF074
+:10BCA000030002DF01F028FB00283FF404AF454AFF
+:10BCB000454946484FF4C2730CF0E5FD404080F31F
+:10BCC00011884FF0030002DF684605F0D7F800281E
+:10BCD0007FF4F7AE01F032FB0446002849D094F817
+:10BCE000483000226FF3000384F84830626202F0AB
+:10BCF00029FA00283FF4EAAE324A334933484FF478
+:10BD0000CF730CF0C0FD404080F311884FF003006A
+:10BD100002DFDBE62B4A2E492C484FF4E8730CF087
+:10BD2000B2FD404080F311884FF0030002DFEBE6E4
+:10BD3000244A2849254840F21B530CF0A4FD4040FA
+:10BD400080F311884FF0030002DF35E71D4A2149D7
+:10BD50001E4840F214530CF096FD404080F31188C9
+:10BD60004FF0030002DF1BE712495046FBF70AFEC3
+:10BD700055E7144A184915484FF4C9730CF083FD70
+:10BD8000404080F311884FF0030002DFA7E700BFB7
+:10BD9000FC01002084000020AC000020980000205E
+:10BDA000D8000020400200207C2400201C25002018
+:10BDB000C02500203C250020082A0020002A002061
+:10BDC00038250020B8A90100F4A901008CA70100C2
+:10BDD00028AA0100A8AC010034AC01002DE9F04F05
+:10BDE00085B0CDE900015F4C5F4DDFF88491009A8A
+:10BDF00000231360D9E9000103AAFBF715FE0746EB
+:10BE0000002800F0A480039B58491A780198FFF796
+:10BE100097FA0346002840F09180A2788DF8092017
+:10BE2000E2780DF109010DF10A001E46FFF788FACC
+:10BE300046EA000212F0FF020346F1D1039B197992
+:10BE4000032978D14A49D9F80400FBF7F5FD49499F
+:10BE50003846FBF797FD2B780B2B5DD8013346490D
+:10BE600003982B70FBF78EFD2B78002BBFD0434F30
+:10BE7000DFF80081FE78DFF800A17A78BB78013620
+:10BE8000F6B2B24208BF00269E4240461FD0FBF7E2
+:10BE90005FFD83465046BBF1000F18D0FBF758FDFD
+:10BEA00088B10023CBF80430C0F800B0F9783A78B4
+:10BEB0002B7801FB0272013BDBB250602B70FE70ED
+:10BEC000002BDAD193E72B495846FBF75BFD2B7823
+:10BED000002B8CD02A4FFE787A78BB780136F6B2E8
+:10BEE000B24208BF00269E4281D02248FBF730FDB7
+:10BEF000804600283FF47BAF1F48FBF729FD08B3BD
+:10BF0000C0F80080F9783A782B7801FB0272013B87
+:10BF100050602B70FE706AE71A4A1B491B4840F2BA
+:10BF2000C2330CF0B0FC404080F311884FF00300A6
+:10BF300002DF2B7892E700990B601346184605B094
+:10BF4000BDE8F08F0B494046FBF71CFD4FE7E27858
+:10BF500006490198FFF7F4F90346184605B0BDE815
+:10BF6000F08F00BFFC01002038250020FE010020DA
+:10BF7000FC2900203C250020C0250020980000203E
+:10BF8000AC000020B8A9010030AA01008CA7010074
+:10BF900070B55A4982B000234868019301AAFBF7A3
+:10BFA0004BFD0446002850D055492046FBF7EAFCDB
+:10BFB000019A1379102B0ED8DFE803F0090D090D53
+:10BFC000090D0D0D0D0D1C09090909090900002BAA
+:10BFD00049D002B070BD4B4A4B494C484FF44073B6
+:10BFE0000CF051FC404080F311884FF0030002DF59
+:10BFF00002B070BD137F95683C2B2C6842D0537FF4
+:10C00000E3B1D4F8D00028B100234149C4F8D030BE
+:10C01000FBF7B8FC94F8D6306FF3000384F8D63001
+:10C02000002001F0A5F90446002000F071FF50EA5D
+:10C030004400CED105F0F0FA02B070BD94F848206B
+:10C0400063F3000284F84820EAE72E4A31492F487A
+:10C0500040F22E230CF017FC404080F311884FF083
+:10C06000030002DFA0E7274A2B4928484FF43F731B
+:10C070000CF009FC404080F311884FF0030002DF10
+:10C0800002B070BDAE68EEB1F36D0022AA6063B17C
+:10C090001C4A22491D4840F28F230CF0F4FB40401B
+:10C0A00080F311884FF0030002DF06F1500106F122
+:10C0B0004C00FBF7A7FC054690B13068F56501F030
+:10C0C00067FDA7E70F4A164910484FF423730CF099
+:10C0D000DAFB404080F311884FF0030002DFD3E722
+:10C0E000084A0C49094840F292230CF0CCFB40402E
+:10C0F00080F311884FF0030002DFDEE7FC29002007
+:10C100003C250020B8A901000CA801008CA7010063
+:10C11000C0250020A8AC010088AA010070AA010077
+:10C1200064AA01002DE9F04F0468AD4D83B0834649
+:10C13000002C45D0AB4FDFF8DC92AB4EA046246814
+:10C1400098F80430102B6ED8DFE803F0216D216DD4
+:10C15000216D6D6D6D6D097E21212121210098F8E1
+:10C160001C303C2B00F01881022B00F0D880E3B18A
+:10C170009E494FF456733A4630460CF084FB4040DB
+:10C1800080F311884FF0030002DF98F8043063B9A0
+:10C1900097494FF467733A4630460CF074FB4040C1
+:10C1A00080F311884FF0030002DF2B780B2B72D83D
+:10C1B000013390492B704046FBF7E4FB002CBDD1C6
+:10C1C0000027CBF800702B7853B38B4EDFF8348206
+:10C1D000F478DFF820927278B3780134E4B2A242A6
+:10C1E00008BF00249C42404668D0FBF7B1FB824662
+:10C1F0004846BAF1000F61D0FBF7AAFB002859D0DE
+:10C20000CAF80470C0F800A0F17832782B7801FBEE
+:10C210000262013BDBB250602B70F470002BDAD16C
+:10C2200003B0BDE8F08F40F2B6333A464946304697
+:10C230000CF029FB404080F311884FF0030002DF2F
+:10C24000002C7FF47BAFBBE7B8F8060001F0AEFC32
+:10C25000836F804663B1694940F2A9333A4630465C
+:10C260000CF011FB404080F311884FF0030002DF17
+:10C2700008F16C0108F16800FBF7C4FB8246002856
+:10C2800000F09280C8F878A0404601F081FC002CB4
+:10C290007FF454AF94E75A4940F2C2333A463046ED
+:10C2A0000CF0F1FA404080F311884FF0030002DFF8
+:10C2B0002B787DE753495046FBF764FB2B785F1ED4
+:10C2C000FFB2002BACD0504EDFF83881F478DFF8A5
+:10C2D00024917278B3780134E4B2A24208BF0024FA
+:10C2E0009C4240469CD0FBF733FB82464846BAF15D
+:10C2F000000F95D0FBF72CFB013FFFB2002800F0A8
+:10C300009980C0F800A0F17832782B7801FB0262A6
+:10C31000013BFF2F50602B70F470DAD180E7D8F822
+:10C320000830D3F800A0DAF82480B8F1000F73D0F9
+:10C33000D8F85C300022CAF8242063B1334940F2B7
+:10C3400041333A4630460CF09EFA404080F3118863
+:10C350004FF0030002DF08F1500108F14C00FBF739
+:10C3600051FB019070B3019BD8F80000C8F85C3015
+:10C3700001F00EFC9AF848306FF300038AF8483059
+:10C38000002000F0B7FD00287FF418AF05F044F955
+:10C39000002C7FF4D3AE13E716494046FBF7F2FAC0
+:10C3A000002C7FF4CBAE0BE719494FF46B733A4680
+:10C3B00030460CF068FA404080F311884FF00300DB
+:10C3C00002DF5FE712494FF451733A4630460CF0F2
+:10C3D0005AFA404080F311884FF0030002DFC2E7B1
+:10C3E00038250020B8A901008CA70100A8AA0100E7
+:10C3F000B4AA0100C025002098000020D8AA01009E
+:10C4000030AA01003C250020AC00002070AA0100E9
+:10C41000A8AC01000CA801000A4940F23E333A469C
+:10C4200030460CF030FA404080F311884FF00300A2
+:10C4300002DF7DE70449504603B0BDE8F04FFBF74B
+:10C44000A1BA00BF64AA01003C2500200148FBF707
+:10C450007FBA00BF3C2500200149FBF793BA00BF1B
+:10C460003C2500200148FBF773BA00BFC02500201F
+:10C470000149FBF787BA00BFC0250020024B034AE1
+:10C48000DB780B70FBF7C8BAFC010020002A002003
+:10C49000014B18680BF04ABE0C2A002010B40D4B5B
+:10C4A0009A78DC78A24209D8A11AC9B2884202D887
+:10C4B000A242197809D1002010BC70475978891A16
+:10C4C0002144C9B28842F6D8197810BC02FB013366
+:10C4D000586870479800002010B40A4B9978DA78B1
+:10C4E00018785C788A420AD04A1CD2B201FB00312B
+:10C4F000944208BF002248689A7010BC7047002020
+:10C50000FBE700BF9800002070B5134AD678557835
+:10C510009478731CDBB29D4208BF00239C420AD072
+:10C52000154615F8044B14FB06F42E1903D02853B6
+:10C53000D370716070BD094A09490A4840F20C4342
+:10C540000CF0A1F9404080F311884FF0030002DFA6
+:10C5500000231B80FFDE00BFFC010020B8A9010002
+:10C560009CAC01008CA70100086001480BF0DEBD07
+:10C57000102A002010B54FF0FF320C464FF0FF3369
+:10C5800002480BF0F9FD206810BD00BF102A002002
+:10C59000044A13680BB118467047034610601846EA
+:10C5A000704700BF74240020044A136823B19842E6
+:10C5B00006BF002111600023184670477424002034
+:10C5C000014B1868704700BF74240020044A1368A8
+:10C5D0000BB118467047034610601846704700BFFD
+:10C5E00078240020044A136823B1984206BF002132
+:10C5F000116000231846704778240020014B18680A
+:10C60000704700BF7824002030B5056815F1100F81
+:10C6100087B00BD004460122684600210DF009FDC9
+:10C620002B7C134AC5F818D06A6113B9002007B0F3
+:10C6300030BD104B0022114603209C60FBF760FACE
+:10C6400040B94FF0FF324FF0FF3368460BF094FDD6
+:10C6500007B030BD084A0949094840F277430CF059
+:10C6600012F9404080F311884FF0030002DFE8E741
+:10C670003DB3000050020020B8A9010000AA01004B
+:10C680008CA7010010B40D4B9A78DC78A24209D82F
+:10C69000A11AC9B2884202D8A242197809D1002051
+:10C6A00010BC70475978891A2144C9B28842F6D81B
+:10C6B000197810BC02FB013358687047AC000020A9
+:10C6C00010B40A4B9978DA7818785C788A420AD0E4
+:10C6D0004A1CD2B201FB0031944208BF00224868D4
+:10C6E0009A7010BC70470020FBE700BFAC00002030
+:10C6F00038B50C46054603F0F9FD21462070034A83
+:10C700002846BDE83840FBF787B900BF082A00205B
+:10C710000122024B11460020FBF7F2B96002002013
+:10C720002DE9F047194E9DF824A0F478777896F813
+:10C7300002C0651CEDB2AF4208BF0025AC4521D058
+:10C74000994633460F46114613F8042B02FB043476
+:10C75000C4B18046102220460CF0F4FD94F820204D
+:10C76000C4F810900AF0010A22F0030343EA0A0316
+:10C77000089AE261C4E90587F57084F8203000204A
+:10C78000BDE8F0876FF03600BDE8F087D8000020E4
+:10C79000054B9A78D978187891421ABF043302FB76
+:10C7A00000300020704700BFD800002030B40C4B90
+:10C7B00002785C78DD78197894429CBF9A78027090
+:10C7C00095420AD0531C074DDBB29C4208BF0023A0
+:10C7D000037002FB015030BC70470020FBE700BF34
+:10C7E000D8000020DC000020064B9978D8781A7811
+:10C7F000884205D001FB0233586810B120307047E1
+:10C800000020704784000020F8B5144A9378D4784B
+:10C81000117855789C421FD003FB012101334C68ED
+:10C82000DBB29D4208BF002393709CB10125002616
+:10C830002768E0612571266003F058FD084A2070E2
+:10C8400021463846FBF7E8F8064B30462A4629468B
+:10C85000FBF756F92046F8BD0024FBE784000020D2
+:10C86000082A002060020020F8B50568D5F8CC70D1
+:10C870000646EFB1D5F8D0400023C5F8CC306CB3F4
+:10C8800000214FF6FF730A22C5F8D01004F11C00F6
+:10C890002271E3801E220CF080FD3C23A660384606
+:10C8A00023772146FFF7EAFDBDE8F840FFF7F0BD2A
+:10C8B000124A134913484FF4D7630BF0E4FF40408A
+:10C8C00080F311884FF0030002DFD5F8D040D5F88F
+:10C8D000CC700023C5F8CC30002CD1D1074A0A49CE
+:10C8E000084840F2BC630BF0CEFF404080F3118853
+:10C8F0004FF0030002DFD5F8D040C1E7F0AA0100F5
+:10C9000030AB01008CA7010044AB01002DE9F041E0
+:10C9100015464FF6FF7295428AB01C4618D01B7C14
+:10C920000133DBB280460F462374002B61D0384EB2
+:10C93000384BC6F80080002204F11C0C114601207F
+:10C940009E6077603581C6F80CC0FBF7D9F838B91E
+:10C9500094F8285015F0010514D00AB0BDE8F08114
+:10C960002D4A2E492E484FF4C5630BF08CFF4040F2
+:10C9700080F311884FF0030002DF94F8285015F07F
+:10C980000105EAD1042109A805F056FF09982549B7
+:10C99000254A0694A1FB0031431A01EB5303A21A66
+:10C9A000224C049540F247111B0A520901FB130364
+:10C9B000A4FB021202321E4905910133CDE9025552
+:10C9C000CDE900552846D2B201210993FCF768FC55
+:10C9D00030F00203C1D0104A1649114840F23E63BC
+:10C9E0000BF051FF404080F311884FF0030002DF4D
+:10C9F000B3E7094A10490A4840F21C630BF043FFB1
+:10CA0000404080F311884FF0030002DF8FE700BF42
+:10CA1000A02E002080020020F0AA010000AA010040
+:10CA20008CA7010021F1D490B42D00202949922433
+:10CA3000DDCA000060AB01005CAB0100002830D112
+:10CA400038B51F4D0A7C01F11C030C46AB60E2B106
+:10CA50004A696AB11B4A1C491C4840F29E630BF0AC
+:10CA600012FF404080F311884FF0030002DFAB68F3
+:10CA700017491848A36100226161E860104B114614
+:10CA80000220FBF73DF868B938BD114BEB6001217E
+:10CA90002B460220FBF734F80028F5D040F2AA63B9
+:10CAA00002E0704740F2A563064A0B4907480BF0C5
+:10CAB000EAFE404080F311884FF0030002DF38BDEA
+:10CAC00090020020F0AA01007CAB01008CA70100BD
+:10CAD00069C80000A528010000AA010000B970473C
+:10CAE00010B50C46FFF76CFD84420CD0064A07498E
+:10CAF000074840F25F630BF0C6FE404080F31188A8
+:10CB00004FF0030002DF10BDF0AA010090AB01005E
+:10CB10008CA7010030B5194C194A1C1B64091D462D
+:10CB2000A2FB043414F0FF0F83B019D1A21C154BE3
+:10CB30000095D2B201210020FCF702FC30F0020384
+:10CB40000CD0114A114912484FF4D0630BF09BFEF0
+:10CB5000404080F311884FF0030002DF03B030BD86
+:10CB6000094A0C490A4840F27B630BF08CFE4040B6
+:10CB700080F311884FF0030002DFD7E7B42D0020C7
+:10CB8000294992243DCA0000F0AA010060AB0100CF
+:10CB90008CA70100C0AB010070B51D4C656AEB6D40
+:10CBA00063B11C4A1C491D4840F2D3630BF06BFE75
+:10CBB000404080F311884FF0030002DF05F150017F
+:10CBC00005F14C00FAF71EFF064690B12868EE65A5
+:10CBD00000F0DEFF0025D4F8D0006562FFF748FCC6
+:10CBE000D4F8CC00C4F8D050FFF736FCC4F8CC50D1
+:10CBF00070BD084A0A49094840F2D5630BF043FE6C
+:10CC0000404080F311884FF0030002DFDEE700BFF1
+:10CC1000B42D0020F0AA0100CCAB01008CA70100CC
+:10CC2000A8AC01002DE9F0474E4D4F4C844694F8D6
+:10CC3000D6608A4695E8030082B016F00106994650
+:10CC40009DF82C809DF8303000908DF8041072D142
+:10CC500094F82C10208DDFF814E1154627272D229B
+:10CC600017FB012702AA5244BAF1010F08F007018D
+:10CC700012F808ACE25D4FEA410103F0030308BF7C
+:10CC80004FF0000C0AF00F081AF00E0F41EA0323D0
+:10CC900022F01F0294F8D610A4F8D4C048EA020289
+:10CCA0000CBF4FF0010C4FF0000C00EA0E0065F3D2
+:10CCB00042016CF3451203432385E2554A0704EB16
+:10CCC0000708CBB284F8D61009D569F3C3030A99D3
+:10CCD00084F8D630062204F1D7000CF033FBE25D75
+:10CCE00002F00F03012B05F0010129D098F8013063
+:10CCF00061F38612C3B16FF3C712E25594F87C104A
+:10CD0000AD0127237D2213FB012305F0400545F0EB
+:10CD10000405E5541C44637813B906221E4662706C
+:10CD2000304602B0BDE8F08763F3C7120623E25530
+:10CD300088F80130E2E70C26304602B0BDE8F08703
+:10CD400061F38612944669F3C71C0A9904F807C078
+:10CD5000062208F108000CF0F5FA0C2388F80130DF
+:10CD6000CCE700BFB8A60100B42D0020F1FCFFFF06
+:10CD70000020704730B54B4C94F8D630DA0785B0B8
+:10CD800049D52046FFF704FC84420CD0464A474967
+:10CD900047484FF4E5630BF076FD404080F311887F
+:10CDA0004FF0030002DF94F82830DB0703AD35D4E1
+:10CDB000022203213F4B009500200392FCF7C0FAAA
+:10CDC0002946FFF7D7FB002851D13B48FFF71CFC51
+:10CDD000002839D13348FFF7E7FB84420CD0324AB0
+:10CDE0003249334840F24A730BF04DFD404080F326
+:10CDF00011884FF0030002DF636A0BB1FFF7CCFE2E
+:10CE000094F8D63000206FF3000384F8D63000F099
+:10CE100095FA002840D0002005B030BD02220392D0
+:10CE20000321244B009501220020FCF789FA2946B2
+:10CE3000FFF7A0FB0028BBD01A48FFF7B5FB8442E0
+:10CE4000E9D040F2337319E0174A1C49184840F200
+:10CE500047730BF018FD404080F311884FF003003A
+:10CE600002DF1048FFF7A0FB8442B8D1C4E70D48A9
+:10CE7000FFF79AFB8442CED040F241730A4A0B4935
+:10CE80000B480BF000FD404080F311884FF0030089
+:10CE900002DF002005B030BD04F0BEFB002005B06D
+:10CEA00030BD00BFB42D0020F0AA0100E0AB0100AE
+:10CEB0008CA7010069C50000D02D002000AA010048
+:10CEC000034A044B801A4009A3FB003080B270472C
+:10CED000B42D002029499224044A0068044B801A8A
+:10CEE0004009A3FB003080B2704700BFB42D002082
+:10CEF0002949922438B9054890F8D63013F0010F2B
+:10CF000008BF002070470020704700BFB42D0020EC
+:10CF100028B9044B93F8D60000F0010070470020B8
+:10CF2000704700BFB42D002050B9064B93F8D600CF
+:10CF300010F0010005D093F8290000F003007047BD
+:10CF400000207047B42D00202DE9F04190F82C40CE
+:10CF500004EB8403C4EBC30300F11C0C03F11106C2
+:10CF600005461CF8060000F00F0EBEF1010F0F463B
+:10CF70000CEB060138D0904695F82B2094425FFACE
+:10CF800082FE34D085F82CE0BFF34F8F95F82B202C
+:10CF9000964533D00134E4B2022C1CF806002AD0A6
+:10CFA0002722022312FB0433C0F34012C0F303060E
+:10CFB00046EA4216C0F3801246EA821600F080006C
+:10CFC00005F12B023043D618D05402310622B01C92
+:10CFD0000CF0B8F93A46414606F1080006370CF065
+:10CFE000B1F9777085F82C400020BDE8F08101345C
+:10CFF000E4B2022CD4D102230024D5E71CF80600A9
+:10D000000233D1E70A4601460148FFF79DBF00BF42
+:10D01000B42D00202DE9F04190F87C4090F87BE0A1
+:10D0200004EB84030546C4EBC30303F1610005F17F
+:10D030001C0CA6450E4617460CEB000109D05FFA02
+:10D040008EF285F87C20BFF34F8F95F87BE0724518
+:10D0500027D00134E4B2022C25D02722022312FB70
+:10D0600004331CF80000C0F3801005F17B0280013E
+:10D0700002EB030840F00400D054B31D88F80130DF
+:10D08000023108F1020006220CF05CF93246394602
+:10D0900008F108000CF056F985F87C400020BDE846
+:10D0A000F0810233DDE702230024DAE70A46014675
+:10D0B0000148FFF7AFBF00BFB42D00202DE9F041BC
+:10D0C0001C461B7C0133DBB280460F461646237498
+:10D0D00083B1174D174BC5F8008000221C34114650
+:10D0E00001209D60EC606F602E81FAF709FD78B930
+:10D0F000BDE8F081104A114911484FF4F8730BF064
+:10D10000C2FB404080F311884FF0030002DFE0E7EC
+:10D11000094A0C490A484FF4FE730BF0B4FB404037
+:10D1200080F311884FF0030002DFBDE8F08100BFFB
+:10D13000042F0020A0020020ECAB01005CAB01003A
+:10D140008CA7010000AA01000020704730B50546F9
+:10D1500085B008460C46FFF71BFA84420CD02F4AD4
+:10D160002F4930484FF4BB730BF08DFB404080F3E8
+:10D1700011884FF0030002DF2A1D022103AD039145
+:10D18000294B00950321D2B20020FCF7D9F829469B
+:10D19000FFF7F0F950BB04F11C00FFF735FAB8B9FE
+:10D1A0002046FFF701FA84420FD01C4A1C491D4853
+:10D1B0004FF4C4730BF067FB404080F311884FF0CD
+:10D1C000030002DF002005B030BD002005B030BDF7
+:10D1D000124A1649134840F285130BF054FB4040A5
+:10D1E00080F311884FF0030002DFD9E72046FFF7F4
+:10D1F000DBF984420FD0094A09490A4840F27F13FB
+:10D200000BF041FB404080F311884FF0030002DF38
+:10D210000C2005B030BD0C2005B030BDECAB0100DA
+:10D220002CAC01008CA7010069C5000000AA010018
+:10D2300038B50E4C94F84830DB0701D5606A10B160
+:10D240000C25284638BD2146FFF780FF05460028FB
+:10D25000F7D194F8483060F3000384F84830FFF7C2
+:10D2600049FE0028EDD104F0D7F9EAE7B82E0020F6
+:10D2700080B338B51F4C94F8483013F0010135D114
+:10D28000C3F341059B070AD50120FCF703F90621EA
+:10D29000FAF7A8FB60B394F84850C5F3410594F839
+:10D2A0003200C0F3C10004F0FBF994F8333094F875
+:10D2B00032206FF30003FF2184F83330D30984F860
+:10D2C000341002D0023D012D06D9BDE8384009488E
+:10D2D000F4F7F6BBFFF7ACBF002004F08BFA94F82C
+:10D2E000333043F0010384F83330EEE70C2038BDCF
+:10D2F000122038BDB82E002008B5FFF799FF002096
+:10D3000008BD00BF044A054B801A8008A3FB00300B
+:10D31000C0F34700704700BFB82E0020BD86F21A48
+:10D32000044A0068044B801A8008A3FB0030C0F355
+:10D3300047007047B82E0020BD86F21A38B905485C
+:10D3400090F8483013F0010F08BF0020704700200C
+:10D35000704700BFB82E0020044A92F8483003F00E
+:10D36000010303430CBF104600207047B82E002075
+:10D3700088B90A4A92F8483013F001000CD092F8AC
+:10D380003200526A03F00103C00903FA00F01AB137
+:10D3900040F0040070470020704700BFB82E002006
+:10D3A00050B9064B93F8480010F0010005D093F8EF
+:10D3B0003200C0F3C100704700207047B82E002033
+:10D3C00010B4D0E96C240346084664B1944227D0D7
+:10D3D000D3F8BC11914218D01268C3F8B0210023D1
+:10D3E00010BC03607047D3F8BC11914223D011796F
+:10D3F00001F0030103290DD01268C3F8B021002207
+:10D40000C3E96D2210BC0060704711460968C3F87B
+:10D41000BC11E1E7D1790329DED00A29ECD1DBE7A1
+:10D42000D3F8B8111268C3F8B021A14218BFC3F8ED
+:10D43000B421E7D1E3E7002AE8D1D3F8B8111446C4
+:10D44000F0E700BF4B070CD5810101F574709042E5
+:10D4500028BF10464FF42961884238BF084680B281
+:10D46000704710B400F10D0401F003000444C1F34F
+:10D470004001E400CC40A3B2B3F5A47F00F1280042
+:10D4800038BF4FF4A473C4009A4224FA01F128BFB4
+:10D490001A468A42104638BF084680B210BC704710
+:10D4A00010B50C4630B994F8DC306FF3410384F8C2
+:10D4B000DC3010BD094A0A490A484FF4C9630BF031
+:10D4C000E2F9404080F311884FF0030002DF94F846
+:10D4D000DC306FF3410384F8DC3010BD3CAC01005C
+:10D4E0007CAC01008CA7010038B5D0F8B0310446FF
+:10D4F0000D461BB190F8521188070DD5D4F8B41120
+:10D5000001B34ABBD4F8B8311A682A601D60C4F868
+:10D51000B8512B689BB138BD94F8AB11C907EDD455
+:10D52000D4F8BC118B4204BF1968C4F8BC11D4F8FC
+:10D53000B411F9B1002AE5D040F25F730EE0C4F8EF
+:10D54000C05138BD2B60C4F8B051002AE2D1C4E903
+:10D550006D55002BDFD1F2E740F271730B4A0C4995
+:10D560000C480BF090F9404080F311884FF0030015
+:10D5700002DFC7E7196829601D60002AC9D1C4E924
+:10D580006D552B68002BC6D1D9E700BF3CAC01001C
+:10D5900090AC01008CA7010038B51348134B012251
+:10D5A0004FF4E471FAF7A6F9114B0722181D242154
+:10D5B000FAF7A0F90F4B042298182021FAF79AF9EC
+:10D5C0000D4B0B22181D0821FAF794F90B4B0C494F
+:10D5D0000C4A0D481B251D8007234FF4A4740B70C3
+:10D5E00013700480002038BD182F0020142F002055
+:10D5F000EC300020EC31002070320020623B002033
+:10D600009D3B00209C3B0020643B00202DE9F04323
+:10D61000D0F80080354983B005464FF4E4724046A7
+:10D62000FAF7CCF905F14C06294606F0CFFE286D35
+:10D63000314601AAFAF700FA40B32D4C4FF6FF77B6
+:10D6400004F10409E17894F801C0A2784B1CDBB224
+:10D650009C4508BF00239A4238D0227812FB01F281
+:10D6600019EB020E32D0DDF804C029F80270DCF8A4
+:10D670000010CEF804C001AA0160CCF800003146C9
+:10D68000286DE370FAF7D8F90028DBD1D8F830011B
+:10D6900008F5987450B100232146C8F83031FFF7DF
+:10D6A00027F8FFF735F803B0BDE8F083114A1249B7
+:10D6B000124840F204730BF0E6F8404080F3118802
+:10D6C0004FF0030002DFD8F83001E4E7094A0C49C3
+:10D6D0000A484FF4DE630BF0D6F8404080F311881F
+:10D6E0004FF0030002DF00231B80FFDE182F002015
+:10D6F000B00200203CAC0100A0AC01008CA70100EE
+:10D7000098AC010010B50C46B0B9124B002211467E
+:10D7100002209C60FAF7F4F900B910BD0E4A0F49D7
+:10D720000F484FF4CF630BF0AEF8404080F3118800
+:10D730004FF0030002DF10BD074A0A49084840F2D3
+:10D7400071630BF0A0F8404080F311884FF00300A4
+:10D7500002DFDAE7580300203CAC010028AA0100F0
+:10D760008CA70100B0AC010010B50C4690B9204662
+:10D77000FEF738FF84420CD00D4A0E490E484FF494
+:10D78000CD630BF080F8404080F311884FF0030028
+:10D7900002DF10BD064A0949074840F264630BF0F6
+:10D7A00072F8404080F311884FF0030002DFDEE79B
+:10D7B0003CAC0100BCAC01008CA70100B0AC010086
+:10D7C00010B50C4690B92046FEF700FF84420CD0FD
+:10D7D0000D4A0E490E4840F25F630BF054F840408A
+:10D7E00080F311884FF0030002DF10BD064A09499B
+:10D7F000074840F25B630BF046F8404080F3118825
+:10D800004FF0030002DFDEE73CAC0100BCAC0100DE
+:10D810008CA70100B0AC010000B9704710B50C46F0
+:10D82000FEF7ECFE844210D0FEF7CAFE84420CD014
+:10D83000064A0749074840F254630BF024F8404079
+:10D8400080F311884FF0030002DF10BD3CAC0100F3
+:10D85000C8AC01008CA701002DE9F041054626481F
+:10D860000E4690461F46FAF773F8002841D003236E
+:10D8700004794371D5F8B02180F808802343112141
+:10D8800047720371C1711AB195F85231990710D5D9
+:10D89000D5F8B4313BB3D5F8B8311A6802601860D6
+:10D8A000C5F8B8010268DAB1032333700020BDE87F
+:10D8B000F08195F8AB31DB07EAD4D5F8BC319A4258
+:10D8C00004BF1368C5F8BC31D5F8B431002BE2D1E0
+:10D8D0001368036010600268C5E96D00002AE3D197
+:10D8E000C5F8C001E0E70260C5E96C00C5F8B80101
+:10D8F000D9E76FF03600DAE7EC31002070B5044666
+:10D9000079B190F87E200B7842F01002012680F861
+:10D910007E2043F0030306254E7000200B70CD706F
+:10D9200070BD2648FAF714F8002843D094F87E30EA
+:10D93000027943F01003012184F87E304171D4F85C
+:10D94000B03142F0030206210271C171E3B194F8D3
+:10D950005221910718D494F8AB21D20714D4D4F8EB
+:10D96000BC21934204BF1A68C4F8BC21D4F8B42186
+:10D97000CAB1D4F8B8311A6802601860C4F8B801A6
+:10D98000036863B1002070BDD4F8B421002AF0D13F
+:10D990000360C4E96C00C4F8B801002BF2D1C4F8EC
+:10D9A000C001184670BD1A68026018600368C4E9B7
+:10D9B0006D00E6E76FF0360070BD00BFEC3100206F
+:10D9C00090F85231D0F8B4219B0770B504460D464B
+:10D9D00009D5002A3DD0D0F8B8311A680A6019601C
+:10D9E0002B6833B370BDD0F8B011E1B190F8AB3112
+:10D9F00090F8E86090F8E900864203F0010303D054
+:10DA000094F8EA0003282CD0B3B9D4F8BC31994279
+:10DA100045D09AB90B682B600D60C4E96D552B6831
+:10DA2000002BDFD105E04AB92A60C0E96C55C0F887
+:10DA3000B851C4F8C05170BD002A36D0D4F8B831FE
+:10DA40001A682A601D60C4F8B8512B68002BC9D130
+:10DA5000EFE7D0F8B0310B60C4F8B011002BC1D1A2
+:10DA6000E7E7087900F003000328CDD1C87903283F
+:10DA700001D00A28C8D1F3B9D4F8BC318B4222D0E6
+:10DA800032B340F25F73144A144915480AF0FBFEA2
+:10DA9000404080F311884FF0030002DFCEE70B68AF
+:10DAA000C4F8BC31002AC9D1B4E72960C4E96C5577
+:10DAB000C4F8B85170BD12B140F27173E3E7296048
+:10DAC000C4F8B05170BD0B68C4F8BC31002AD8D17D
+:10DAD0000B682B600D6083E73CAC010090AC01004B
+:10DAE0008CA70100F8B5064624480D461746F9F7FD
+:10DAF0002FFF00283ED0BB793979214A0446787936
+:10DB00001B0443EA00230B43D6F81C1196F8DC00F3
+:10DB100013430B40C3F31003C6F81C31BB7997F8CD
+:10DB200005C039791B0443EA0C230B4321791343C5
+:10DB3000C3F310030927082240F0010041F003015C
+:10DB4000C6F8203186F8DC002171A0186771E771F2
+:10DB500000210BF022FC96F81C312372492201238C
+:10DB60003046A37262722146FFF72AFF03232B700F
+:10DB70000020F8BD6FF03600F8BD00BFEC3100208A
+:10DB8000D030FEFF0148F9F7E3BE00BF142F00209C
+:10DB90000149F9F7F7BE00BF142F002002494FF4E6
+:10DBA000E472F9F70BBF00BF182F002002464FF4B4
+:10DBB000E4710148F9F7FEBE182F002058B908B5E6
+:10DBC00002464FF4E4710548F9F7F4FE838D03B97A
+:10DBD00008BD002008BD0020704700BF182F00209E
+:10DBE0000148F9F7B5BE00BFEC3000200149F9F754
+:10DBF000C9BE00BFEC30002000285BD1F0B5024662
+:10DC000089B02E480C464FF4E471F9F7D3FE868DA7
+:10DC1000E6B92B4AD778557891787B1CDBB29D42C8
+:10DC200008BF0023994215D0154615F8041B11FBB7
+:10DC300007F16F180ED090F93DC06E52BCF1000F85
+:10DC40007C60D3700ADB002009B0F0BD6FF01500D6
+:10DC500009B0F0BD6FF0360009B0F0BD838E002B27
+:10DC6000F1D090F8DC3013F00204ECD143F0020361
+:10DC700080F8DC30134A0690012305920393CDE926
+:10DC80000144234604940094052203212046FBF717
+:10DC900007FB30F00203D6D00B4A0C490C48FD2399
+:10DCA0000AF0F1FD404080F311884FF0030002DFDD
+:10DCB0002046C9E76FF01500704700BF182F0020FD
+:10DCC00014030020A1D400003CAC01001CAD0100F5
+:10DCD0008CA701002DE9F843BDF82090BDF8248001
+:10DCE000BDF82870002854D10C4616464FF4E47154
+:10DCF00002463C481D46F9F75DFE838D002B48D156
+:10DD0000E4B1013C14F0FF0490F8702190F8711117
+:10DD10004ED08A423AD090F8722102F007010329CE
+:10DD200034D104F0070444F0080422F00F02144335
+:10DD300080F8724180F87361184628E090F87231DB
+:10DD4000D90629D590F93D30002B48DB90F8042105
+:10DD500090F80531934219D190F80621A0F8089166
+:10DD60000133012122F0070280F8043142F005025C
+:10DD7000002380F81411A0F80A81A0F80C7180F833
+:10DD80000621C0F810311846BDE8F8830C20BDE824
+:10DD9000F8830220BDE8F88390F8DC30DA0703D579
+:10DDA000D0F81C319B07CDD590F8702190F87111F7
+:10DDB0008A42EBD1B0F87231A0F8745103F0F0034D
+:10DDC000013243F0080380F87021A0F87691A0F8A2
+:10DDD0007881A0F87A71A0F872310020D7E71A2074
+:10DDE000D5E700BF182F0020D0B9F8B502460D4680
+:10DDF0000C484FF4E471F9F7DDFD868D04466EB9E9
+:10DE000000F1380784F8C4610522394628460BF032
+:10DE100099FA94F8C4010028F4D1F8BD0220F8BDA5
+:10DE200002207047182F0020A0B910B502460C46FA
+:10DE300009484FF4E471F9F7BDFD0346808D38B908
+:10DE400093F82C2183F82E41013283F82C2110BD48
+:10DE5000022010BD02207047182F0020B0B908B56D
+:10DE600002464FF4E4710A48F9F7A4FD838D5BB9CB
+:10DE700090F8192190F818118A4205BF013280F8F4
+:10DE800018210C20184608BD022008BD022070474A
+:10DE9000182F0020B0B908B502464FF4E4710A48C3
+:10DEA000F9F788FD838D5BB990F8252190F824114E
+:10DEB0008A4205BF013280F824210C20184608BD93
+:10DEC000022008BD02207047182F0020002843D1EF
+:10DED00038B50D4614464FF4E47102461F48F9F771
+:10DEE00069FD838D1BBB90F89A311A0721D490F8F5
+:10DEF000DC20D10703D5D0F81C21920619D590F863
+:10DF0000981190F899218A4217D003F00703032B48
+:10DF100004D0033303F00703012B0CD8B0F8A4316D
+:10DF20004BB9A0F8A451A0F8A641184638BD02206C
+:10DF300038BD1A2038BD0C2038BD90F89A31A0F8B1
+:10DF40009E5101326FF3020380F89821A0F8A2419C
+:10DF500080F89A31002038BD02207047182F002029
+:10DF6000034A044B12881B8802800B80704700BF55
+:10DF7000623B0020643B0020024A034B1080198062
+:10DF800000207047623B0020643B002030B41B251A
+:10DF90004FF42964058015800C801C8030BC7047CC
+:10DFA000C0B938B50D4614464FF4E47102460A482C
+:10DFB000F9F700FD0346808D50B993F86420C2F351
+:10DFC00002022A7093F86530C3F30203237038BD50
+:10DFD000022038BD02207047182F0020024A034B50
+:10DFE00010701970002070479D3B00209C3B002062
+:10DFF000002844D1F8B50D4616464FF4E4710246A8
+:10E0000020481F46F9F7D6FC838D04469BBB90F849
+:10E01000AB0110F0080030D194F8DC30DB0704D5F8
+:10E02000D4F81C3113F4106F27D094F8E82094F83A
+:10E03000E9309A421DD194F8A83194F8A9219A4266
+:10E0400017D105F00705AB00B4F8AA1143F48065B9
+:10E0500007F0070345EA431306F0010643EA4623A7
+:10E0600001F4794101320B4384F8A821A4F8AA31C4
+:10E07000F8BD0C20F8BD0220F8BD1A20F8BD022022
+:10E08000704700BF182F002080B910B502460C461B
+:10E0900007484FF4E471F9F78DFC0346808D18B9F9
+:10E0A00093F8C130237010BD022010BD02207047CC
+:10E0B000182F0020D8B9024610B50E480C464FF470
+:10E0C000E471F9F777FC0246808D70B9B2F8D2108E
+:10E0D000D38D094A03FB01F3C3EB431103EB810327
+:10E0E000A2FB03239B09238010BD022010BD022048
+:10E0F000704700BF182F0020D34D6210D8B90246D8
+:10E1000038B50E480D464FF4E471F9F753FC02465A
+:10E11000808D70B9D38D40F2E24404FB03F442F2E7
+:10E12000107303FB0543013BB3FBF4F3A2F8D230B9
+:10E1300038BD022038BD0220704700BF182F0020D4
+:10E14000FFF72ABA30B5002285B04FF4E4712B48AE
+:10E15000F9F730FC0446FEF71BFA84420CD0284A3B
+:10E160002849294840F285630AF08DFB404080F33E
+:10E1700011884FF0030002DF03AD02220392032156
+:10E18000224B009505220020FBF7DAF82946FEF71E
+:10E19000F1F9F0B10023A3672046FEF705FA8442A7
+:10E1A0000CD0174A1749184840F294630AF06BFBE9
+:10E1B000404080F311884FF0030002DF14491548F6
+:10E1C000154A002343804B801360FFF7E5F905B043
+:10E1D00030BD04F11C00FEF717FA0028DAD0084A17
+:10E1E0000E49094840F28E630AF04DFB404080F32F
+:10E1F00011884FF0030002DFCCE700BF182F00208A
+:10E200003CAC01004CAD01008CA7010069C50000C9
+:10E21000B002002014030020E030002000AA01001A
+:10E22000014B1888704700BF623B0020014B1888E3
+:10E23000704700BF643B0020014B1878704700BF57
+:10E240009D3B0020014B1878704700BF9C3B00208D
+:10E250008B689B6810B493F82140E40901F108022F
+:10E2600002D010BCF5F74CBA10BCF5F78DBC00BF5E
+:10E270000B68DA88002A5ED12DE9F04F0D4685B093
+:10E2800007464FF4E471B348F9F794FB838D0446D5
+:10E29000002B40F09480286894F85211027F02F01D
+:10E2A0000302032A064601F0010C2BD190F81FA0AF
+:10E2B000BCF1000F00F08A8094F93D30002B01F092
+:10E2C0000401C0F27B86002940F0E780BAF1020F1A
+:10E2D00000F03183BAF1050F00F0A385BAF1060F03
+:10E2E00000F09580BAF10D0F00F0C984BAF1110F5A
+:10E2F00000F07B833D2384F82F312B6803221A71B1
+:10E3000000200AE062B9BCF1000F03D03D2384F87D
+:10E310002F31286803230371002005B0BDE8F08F7A
+:10E32000BCF1000FF8D03D2284F82F212A68032188
+:10E3300018461171F1E703221A710020704794F812
+:10E34000AA318A4243F0030384F8AA3112D1B4F807
+:10E35000AA3194F8AC118048184001F007039B00E3
+:10E36000C1F3021143EA4113013A034384F8A9219E
+:10E37000A4F8AA3194F8AA2196F8213096F8201032
+:10E38000C2F38200034001EA52119B0043EA4113A9
+:10E3900002F00302134313F01C0F84F8AA3102D0D9
+:10E3A00013F0E00F05D194F8AA3103F0030384F8C9
+:10E3B000AA3194F8AB3143F0010384F8AB312B68F8
+:10E3C000032200201A7105B0BDE8F08F00F11C0295
+:10E3D000BAF1190F1FD8DFE81AF0C300BA02AE0273
+:10E3E0009B0418051F053E057A026A023502E70103
+:10E3F000610522045204E303CE033D030803EF0248
+:10E40000E90388008800F503AA0167013201737FE0
+:10E41000012B00F02F855148F9F79AFA002800F0F7
+:10E420004986022302794371D4F8B03180F808A0FC
+:10E4300042F0030207210271C17103B394F8522123
+:10E4400091071CD494F8AB21D20718D4D4F8BC217E
+:10E45000934204BF1A68C4F8BC21D4F8B4219AB915
+:10E460001A68026018600368C4E96D00002B00F0B0
+:10E47000BD8503230020337105B0BDE8F08FD4F8CB
+:10E48000B421002A00F0B685D4F8B8311A680260C9
+:10E490001860C4F8B8010368E8E7BAF1020F00F0A9
+:10E4A0004A82BAF10B0F00F0AC85BAF1040F7FF489
+:10E4B00011AF737F0D2BAED1082206F1200104F1BC
+:10E4C000F6000AF03FFF06F12801042204F19C0047
+:10E4D0000AF038FF94F852312A6843F0010303210F
+:10E4E00084F852310020117117E7437F092B92D134
+:10E4F000BAF1140F00F0E48594F8981194F899217A
+:10E50000B4F85E3001938A42B4F85C30B4F86280AB
+:10E51000B4F860900091029301F0578294F89A2128
+:10E52000002102F00702022A00F0E28596F81FA0FF
+:10E53000BAF1150F3FF4F0AE08460849F9F722FA90
+:10E5400094F89A3103F00703042B7FF4E5AE6FF0E3
+:10E550000F00E2E6182F002003FBFFFFEC31002044
+:10E5600094F93D30002BBFF656AF437F0C2B7FF460
+:10E5700052AFB0F82900E38EC31A1B0401F1D0801A
+:10E5800094F8E83094F8E9209B1A03F00303022B77
+:10E5900001F00F81E14B1A68002A01F0718196F8B1
+:10E5A000203084F81431B6F8211094F8063140F286
+:10E5B000E24202FB01F2C4F8102196F8241096F80A
+:10E5C000232042EA0122A4F8082196F8261096F8A2
+:10E5D000252042EA0122A4F80A2196F8271094F88F
+:10E5E000052196F82860A4F8EC0023F00703D4F87E
+:10E5F000000143F00403013A41EA062184F80521B1
+:10E6000084F80631A4F80C1178602B681F602B6821
+:10E61000C4F8003100232B6094F8702194F8713114
+:10E62000934207D094F8723103F00703042B01D111
+:10E6300084F871210023A4F8CC3018466DE694F9D3
+:10E640003D30002BFFF6E7AE477F032F7FF4E3AEAC
+:10E6500094F8641094F8653090F820200B4303F090
+:10E66000070313423FF458AE94F8E83094F8E920D9
+:10E670009B1A03F00303022B3FF44EAE04F1ED00AE
+:10E6800002F02AFD94F8E92094F8EC30023A0221D5
+:10E6900084F8E92084F8EA102A6843F0010384F83A
+:10E6A000EC300020177138E694F93D30002BBFF6AE
+:10E6B000B2AE437F052B7FF4AEAE90F8201090F8F9
+:10E6C000213041EA030010F0070040F0548794F82D
+:10E6D000A81194F8A9318B423FF4CBAE94F8AA313B
+:10E6E00003F00303022B7FF4C4AE94F8642094F883
+:10E6F000AB3184F8A91160F30003114662F30611EF
+:10E7000084F8AB3113F00403A4F8CC0084F864104F
+:10E71000C2F302023FF40AAE2B6810211971307760
+:10E72000727794F86530C3F30203B377F5E594F993
+:10E730003D30002BFFF66FAE437F032B7FF46BAEB3
+:10E7400094F8A92194F8A8319A423FF492AE94F833
+:10E75000AA1101F00303022B7FF48BAE90F8213055
+:10E7600090F82020C1F3820003409B0043F0030394
+:10E7700002EA511243EA421313F01C0F84F8AA3143
+:10E7800002D013F0E00F05D194F8AA3103F003038F
+:10E7900084F8AA3194F8AB31002243F0010384F8E5
+:10E7A000AB31A4F8CC2064E694F93D30002BBFF6E1
+:10E7B00032AE457F012D7FF42EAE5948F9F7C8F8E7
+:10E7C0000346002800F0768494F8522194F87E10D5
+:10E7D00022F005026FF3C30184F87E1042F00502B7
+:10E7E000017984F852214571D4F8B02141F0030138
+:10E7F0000B201971D871002A00F01E8494F8521170
+:10E80000880700F1198494F8AB11C90700F114844A
+:10E81000D4F8BC118A4204BF1168C4F8BC11D4F802
+:10E82000B411002901F0E380D4F8B821116819600F
+:10E830001360C4F8B8311A68002A7FF41AAEC4F81D
+:10E84000C03116E6437F092B7FF4E5AD90F8223006
+:10E8500090F8210096F8202032491B0443EA002357
+:10E860001343D4F81C0194F8DC200B430340C3F39A
+:10E870001003C4F81C3196F8223096F8215096F80F
+:10E8800020001B0443EA052303430B43C3F3100397
+:10E8900094F81811C4F8203142F00102002384F8E2
+:10E8A000DC2084F81911A4F8CC30184635E594F929
+:10E8B0003D30002BBFF6AFAD737F092B7FF4ABADBE
+:10E8C000311D204605B0BDE8F04FFFF70BB9737F4F
+:10E8D000022B7FF4A0AD94F8711194F8703196F882
+:10E8E0002020994202D00F2A00F0708594F89831C8
+:10E8F00094F89911994202D0142A00F0028794F8F2
+:10E90000A81194F8A9318B4202D0162A00F02E8764
+:10E91000122A04BF032333718CE600BFE0300020CD
+:10E92000EC310020D030FEFFBAF1070FCFD0BAF1A2
+:10E93000020F40F05183737F022B7FF46CAD96F889
+:10E94000203084F82F31032333710020E5E494F95B
+:10E950003D30002BBFF65FAD437F082B7FF45BADEE
+:10E96000B0F82550E38EEB1A180400F1D98694F81C
+:10E97000E83094F8E9209B1A03F00303022B00F01F
+:10E980001887052206F1200104F1ED000AF0DAFCF7
+:10E9900094F8EC2094F8E930A4F8F25002206FF3D8
+:10E9A0000002023B032184F8EA0084F8EC2084F89A
+:10E9B000E93000203171B0E4457F012D7FF42BADAB
+:10E9C000D148F8F7C5FF0146002800F073830379AA
+:10E9D000457143F00303132220460B71CA71FEF701
+:10E9E000EFFF03233371002097E4737F032B7FF441
+:10E9F00012AD96F82030033B132B3FF63AAD01A23F
+:10EA000052F823F063EF000073E4000073E40000A9
+:10EA100073E4000073E4000073E4000073E400009A
+:10EA200073E4000073E4000073E4000073E400008A
+:10EA300073E40000FDEE000073E4000073E40000E6
+:10EA400073E4000073E40000BFEE000073E4000014
+:10EA5000A3EF000094F93D30002BFFF6DCAC437FC0
+:10EA6000182B7FF4D8AC94F8702194F871319A4245
+:10EA70003FF4FFAC94F8723103F00703042B7FF4EA
+:10EA8000F8AC078C052FBAB240F26086408CB0F526
+:10EA9000486F83B200F25A869A4200F25786B18CD0
+:10EAA000B1F5FA7F1FFA81FC80F05086F28CA2F15A
+:10EAB0000A0E1FFA8EFE40F67649CE451FFA82F8FE
+:10EAC00000F244860CFB033CBCEB880F80F03E86D2
+:10EAD00096F828E07345C0F039860023A4F87A211F
+:10EAE00084F87CE1A4F87471A4F87601A4F8781194
+:10EAF000A4F8CC3096F82A1096F8293094F87221B0
+:10EB000043EA0123A4F87E3196F82C1096F82B30B6
+:10EB100043EA0123A4F8803196F82E1096F82D30A0
+:10EB200043EA0123A4F8823196F8301096F82F308A
+:10EB300043EA0123A4F8843196F8321096F8313074
+:10EB400043EA0123A4F8863196F8341096F833305E
+:10EB500043EA0123A4F8883196F8353096F8360058
+:10EB60002E68012143EA002361F30202A4F88A31EE
+:10EB700084F872217DE4437F182B7FF44CAC634F03
+:10EB80003B68002B00F069829C4200F06682011D08
+:10EB9000202320460F2205B0BDE8F04FFEF75CBEF3
+:10EBA00094F93D30002BBFF687AE34E4437F012B50
+:10EBB0007FF431AC00230322A4F8CC301846327124
+:10EBC000FFF7ABBB437F032B7FF425AC94F93D30BB
+:10EBD000002BC0F2578394F8A92194F8A8118A4217
+:10EBE00007D094F8AA3103F00303013B022B40F253
+:10EBF000928594F8E83094F8E9001B1A03F00303B7
+:10EC0000022B00F0268594F8700194F87131984237
+:10EC10003FF495AB311D20462A231622BBE7457FE2
+:10EC2000062D7FF4F8AB94F82631DF0740F1A1837D
+:10EC300013F002037FF41DAC94F82421A4F8CC3027
+:10EC400084F8252196F8203084F8273196F8221090
+:10EC500096F8212094F8263142EA0122A4F82821CE
+:10EC600096F8232096F8241043F0020342EA01228A
+:10EC7000A4F82A2184F826310020FFF74EBB737FC9
+:10EC8000022B7FF4C8AB94F8E83094F8E9209A425C
+:10EC900004D094F8EA20032A00F04A8594F8A801E9
+:10ECA00094F8A931834200F0F68496F8202086F883
+:10ECB0002120232A12D094F8643094F8AB1184F800
+:10ECC000A901C3F3020060F306136FF300010020F3
+:10ECD00084F8643084F8AB11A4F8CC0094F8AB311C
+:10ECE00059077FF5C6AB10233277337194F864303F
+:10ECF000C3F30203737794F86530C3F30203B37769
+:10ED00000020FFF70ABB00BFEC310020E0300020FC
+:10ED100094F93D30002BBFF67EAB737F172B7FF449
+:10ED20007AABE648F8F714FE0746002800F0C281E7
+:10ED300003790D2243F003034FF0040800F10805A6
+:10ED40000371427180F807800C21284603F060FDB2
+:10ED50002946082204F1F6000AF0F4FA424607F1C7
+:10ED6000100104F19C000AF0EDFAD4F8B031002B48
+:10ED700000F0648294F85221910700F15F8294F8C8
+:10ED8000AB21D20700F15A82D4F8BC21934204BFD0
+:10ED90001A68C4F8BC21D4F8B421002A00F02E86E9
+:10EDA000D4F8B8311A683A601F60C4F8B8713B688B
+:10EDB000002B00F0718594F8EC2094F8E9300221E2
+:10EDC000023B61F30102032184F8E93084F8EC206E
+:10EDD00084F8EA10082206F12A0104F1EE000AF094
+:10EDE000B1FA042206F1320104F198000AF0AAFAFD
+:10EDF00094F85231B4F8CA20A4F8CC2043F00103AF
+:10EE000084F852310020FFF788BA94F93D30002B86
+:10EE1000BFF64FABFFF7FFBA94F93D30002BFFF67A
+:10EE2000FAAA94F8E82094F8E9309A423FF4F3AA59
+:10EE300094F8EA30032B7FF4EEAA727F012A7FF464
+:10EE4000EAAA94F8EC206FF3010284F8EC20002089
+:10EE50003371FFF762BA437F012B7FF4DCAA94F988
+:10EE60003D30002B06DA00212046FEF747FD002842
+:10EE70007FF453AA94F8523123F0030384F85231FB
+:10EE800094F852315E077FF5D5AB2A686FF38203A1
+:10EE90000D2184F852311171FFF7CCBB437F012B58
+:10EEA0007FF4B9AA94F93D30002B80F2AE8094F83B
+:10EEB0007E306FF3041384F87E30FFF7DABA94F8EB
+:10EEC000982194F8993193423FF4D3AA0023092161
+:10EED00084F89921A4F8CC307177B4F85E20B4F8A6
+:10EEE0005C70B4F86250B4F8601032841522184691
+:10EEF000B7847584F184F277FFF70FBA94F8712123
+:10EF000094F870319A423FF4B4AA94F93D1096F8FF
+:10EF100021200029C0F28C851A2A00F0D38594F8AC
+:10EF2000722102F00701042900F0938513077FF591
+:10EF3000A0AA96F8213033770C223271E38DB4F811
+:10EF4000C620218EF38303FB02F27D2303FB02F331
+:10EF500031844FF47A720020B3FBF2F37384FFF72D
+:10EF6000DCB994F8E83094F8E9209A423FF481AA99
+:10EF700094F8EA20032A7FF47CAA94F8522184F8BA
+:10EF8000E93022F00302002384F85221A4F8CC30A7
+:10EF900096F8212086F820200D221846F277FFF7F8
+:10EFA000BCB994F8A80194F8A93183423FF461AA4E
+:10EFB00096F82120232A7FF47EAE8FE600293FF4C5
+:10EFC000B3ACBAF1020F3FF4B6ACBAF10B0F3FD0BD
+:10EFD000BAF1030F3FF4A1AEBAF1060F7FF482A994
+:10EFE000737F012B3FF43FAFFFF715BAC4F8C001A0
+:10EFF000FFF73FBA0360C4E96C00C4F8B801FFF73B
+:10F0000035BA437F012B7FF406AA2C48F8F7A0FC01
+:10F01000034600284ED094F8520194F87E201979C6
+:10F0200040F0010084F8520122F01802012084F817
+:10F030007E205871FFF7D8BBD4F8B41100297FF4B3
+:10F04000F3AB1A60C4E96C33C4F8B831FFF7F3BB13
+:10F05000437F012B7FF4DFA929E794F93DC094F8A1
+:10F06000710194F870210090BCF1000FC0F2F180A2
+:10F07000824209D094F8722112F0070200F0FB825C
+:10F08000043A012A40F2F78294F8E82094F8E90063
+:10F09000121A02F00302022A00F0908494F8A801E8
+:10F0A00094F8A921904200F0FB83311D20462A23C9
+:10F0B0000F2270E56FF03600FFF72FB9EC3100201A
+:10F0C000BE48F8F745FC01460028F3D094F89801B3
+:10F0D00094F89921B4F85E3001939042B4F85C3012
+:10F0E000B4F86280B4F860900090029340F0E2843B
+:10F0F000328C1A2A40F2CD82B4F8D600824228BF60
+:10F100000246B6F824C094F8DC00019BBCF11B0F4A
+:10F1100034BF9E464FF01B0EC00740F1B682D4F8B4
+:10F120001C01030540F1AF83B4F8D800B0F5296F96
+:10F1300028BF4FF42960B0F5A47F38BF4FF4A47006
+:10F140004FF4296CB6F822B0F38C0393BBF5A47F7F
+:10F15000C0F0998294F864A0834528BF83461AF0D2
+:10F16000040F0AF0070040F0888300F1280A4FEAF4
+:10F17000CA0A40102AFA00F0584538BF584680B2F3
+:10F18000039BB3F5A47FC0F07C82BCF5A47F94F808
+:10F1900065A038BF4FF4A47C634528BF63461AF0CE
+:10F1A000040F9B460AF0070C40F030830CF1280A4C
+:10F1B0004FEACA0A4FEA6C0C2AFA0CFCDC4538BF4D
+:10F1C000DC461FFA8CFC019B9E4500F0F682009BFA
+:10F1D000A4F89CE1013B84F89931A4F89E2194F8AD
+:10F1E0009A31A4F8A0C1A4F8A201002900F0F58387
+:10F1F000052666F3020384F89A31D4F800317B6067
+:10F200002B681F602B68C4F8003100232B60002995
+:10F210003FF482A80B798A8143F003031522092564
+:10F22000C881A1F808E02046A1F80AC00B714D7111
+:10F23000CA71FEF7C5FB0020FFF76FB8D4F8B42100
+:10F24000002A7FF4ADAD3B60C4E96C77C4F8B871B7
+:10F25000ADE500998A4200F0058194F8722190078B
+:10F2600000F00081564A5749574841F2A56309F01A
+:10F270000AFB404080F311884FF0030002DF0020BA
+:10F28000FFF74BB84D48F8F763FB024600283FF400
+:10F2900011AF94F8AA1194F8A9E194F8A87194F820
+:10F2A000AC31022060F30101774584F8AA11C3F361
+:10F2B000020503F0070CC3F3021013D1C9B26CF3BB
+:10F2C000840194F8ABC1B4F8CA30A4F8CC30013F43
+:10F2D00060F347116FF3820C84F8A97184F8AA11C6
+:10F2E00084F8ABC194F8AA1196F8213096F82070F2
+:10F2F000C1F3820C03EA0C0307EA51179B0043EAAF
+:10F30000471301F003010B43032784F8AA31117955
+:10F310005771D4F8B03115723943172550721171F5
+:10F32000D571002B00F09C8194F85211880700F1F0
+:10F33000978194F8AB11C90700F19281D4F8BC1100
+:10F340008B4204BF1968C4F8BC11D4F8B411002969
+:10F3500000F0AA83D4F8B831196811601A60C4F8B3
+:10F36000B8211368002B7FF484A8C4F8C021FFF7EC
+:10F3700080B81248F8F7ECFA014600283FF49AAE3C
+:10F3800094F82621037942F0010284F8262143F003
+:10F3900003030C22457103710B254FF0FF336FF00F
+:10F3A0000E00CA7105224872CB720B730D728A72FD
+:10F3B0002046FEF705FB0323337143E4EC310020C4
+:10F3C0003CAC01000CA801008CA7010094F872214C
+:10F3D00094F93D1042F01002002984F87221C0F225
+:10F3E000188294F8043194F8052193420ED0DA4A39
+:10F3F000DA49DB4841F2297309F045FA404080F3CD
+:10F4000011884FF0030002DF94F8052194F872018F
+:10F41000B4F87631A4F80831052363F3020094F8B8
+:10F420000611B4F87861531EC0F3C00284F80531A8
+:10F430009200012384F814311A4321F007031A4380
+:10F440002968B4F87A5184F8720184F80621002002
+:10F450000322C4F81001A4F80A61A4F80C510A713F
+:10F46000FEF75BBFB6F82080B8F1050F1FFA88F2EF
+:10F470007BD9B6F822E0BEF5486F1FFA8EF174D83A
+:10F480008A4272D8B6F824C0BCF5FA7F1FFA8CFA0B
+:10F490006BD2F08CA0F10A091FFA89F940F6764B7D
+:10F4A000D94582B261D80AFB0119B9EB820F5CD24F
+:10F4B00096F828B0594558D3A4F878C1A4F87481B7
+:10F4C000A4F876E1A4F87A0184F87CB196F82AE0F1
+:10F4D00096F82900B4F82EC040EA0E20A4F87E0168
+:10F4E00096F82CE096F82B0040EA0E20A4F8800154
+:10F4F00096F82EE096F82D0040EA0E20A4F882013E
+:10F5000096F830E096F82F0040EA0E20A4F8840127
+:10F5100096F832E096F8310040EA0E20A4F8860111
+:10F5200096F8330096F834E040EA0E20A4F88801FB
+:10F5300096F8350096F83660614540EA0620A4F852
+:10F540008A0100F00B8394F87221032161F3020217
+:10F5500084F87221009A013A84F87121002B7EF41C
+:10F56000DBAE3C601846FEF7D8BE311D20461E2398
+:10F570000F22FFF710BB708CE28E821A120400F18A
+:10F58000CF8094F8E82094F8E9C0A2EB0C0202F0D6
+:10F590000302022A00F00D8194F8A8C194F8A92171
+:10F5A000624519D094F8AA2102F00302022A13D16D
+:10F5B00094F8AB2194F8EC6084F8A9C16FF30002D1
+:10F5C000C2F3800C6CF341064FF0000C84F8AB21C1
+:10F5D00084F8EC60A4F8CCC094F8EC20A4F8EE0019
+:10F5E0009B0003F01C0343EA411302F002021343A1
+:10F5F000D4F8002184F8EC307A602B681F602B6807
+:10F60000C4F8003100232B60FCF766FF0546002894
+:10F6100000F03C822B68D4F800215A6094F8E9206D
+:10F6200094F8EC30C4F80051023A062113F01C0F94
+:10F6300084F8E92084F8EA103EF46EAE94F8642071
+:10F64000C3F3820363F3061284F864200020FEF7FC
+:10F6500064BE94F8EA30032B7FF4DCAAFFF7D3BA38
+:10F66000D4F8B41100297FF475AE1360C4E96C229C
+:10F67000C4F8B82175E6311D204623230F22FFF779
+:10F680008ABAC4469FE548467AE54FF4A47084469A
+:10F6900058E5029A35E594F8712194F870319A4250
+:10F6A0003FF40DAC96F8203086F8213094F93D20D7
+:10F6B000002AC0F2C6811A2B00F0048294F872214D
+:10F6C00002F00703042B7FF431AC264F3B689C42C9
+:10F6D0000ED0214A2449224841F2B20309F0D3F85E
+:10F6E000404080F311884FF0030002DF94F872214C
+:10F6F00094F8703184F8713100233B60A4F8CC3069
+:10F7000014E494F89A2184F8993142F0080384F8BB
+:10F710009A31FEF78FBF011D23232046FFF77DBAE4
+:10F7200003233371282384F82F310020FEF7F5BD21
+:10F7300094F8522184F8E93022F00302002384F87F
+:10F740005221A4F8CC301846FEF7E7BD311D204603
+:10F750001E231022FFF71FBA3CAC01005CAD010074
+:10F760008CA70100E030002084AD010094F8AB319B
+:10F7700094F8642084F8A91123F00903114643F09A
+:10F78000080362F306115F0784F8AB3184F8641054
+:10F79000C2F3020240F11C81296800231020087185
+:10F7A0007277337794F86530C3F30203B377FEF7CB
+:10F7B00041BF032333712A23B5E7009B84F89931B5
+:10F7C000029B00279A42A4F8CC7000F02681A4F88E
+:10F7D00062C0002900F01C8194F89A51009BA4F8A3
+:10F7E0009CE10327013B67F3020584F89931A4F8F3
+:10F7F0009E21A4F8A0C1A4F8A20184F89A51A6F809
+:10F8000020E0B284A6F822C0F08400E54FF4296C11
+:10F81000D4E4CC4F3A6894420ED0CB4ACB49CC4882
+:10F8200041F2417309F02FF8404080F311884FF006
+:10F83000030002DF94F8703194F8722184F871317A
+:10F8400000233B6012F008032A683EF470AD0C21DF
+:10F850001A2311713377E38DB4F8C620218EF38318
+:10F8600003FB02F27D2303FB02F331844FF47A722F
+:10F87000B3FBF2F37384FEF7DDBE4FF429607BE443
+:10F880001C60FEF78CBE10F4807F4FF4A47000F073
+:10F89000BC804FF0A80C55E4C4F8C071FFF78BBAD8
+:10F8A000B6F82080B8F1050F1FFA88F07FF65DAE3C
+:10F8B000B6F822E0BEF5486F1FFA8EF23FF655AE5D
+:10F8C00090423FF652AEB6F824C01FFA8CF0BCF559
+:10F8D000FA7FCDE90100BFF448AEF08CADF80C0022
+:10F8E000A0F10A091FFA89F940F6764AD1451FFAB4
+:10F8F00080FB3FF63AAE019800FB0229B9EB8B0F73
+:10F90000BFF433AE96F828A05245FFF42EAEBDF8F2
+:10F910000C00A4F878C1A4F87481A4F876E1A4F8E6
+:10F920007A0184F87CA196F82AE096F82900B4F8C8
+:10F930002EC040EA0E20A4F87E0196F82CE096F83E
+:10F940002B0040EA0E20A4F8800196F82EE096F8ED
+:10F950002D0040EA0E20A4F8820196F830E096F8D7
+:10F960002F0040EA0E20A4F8840196F832E096F8C1
+:10F97000310040EA0E20A4F8860196F8330096F88C
+:10F9800034E040EA0E20A4F8880196F8350096F895
+:10F990003660624540EA0620A4F88A0100F0FF8044
+:10F9A0008E0794F872217FF5D0AD2968022060F3AC
+:10F9B0000202032084F872210871CBE594F8EA2052
+:10F9C000032A7FF472ABFFF769BB0021FEF7B0BDDD
+:10F9D0002B6803221A71FEF72DBE042666F302037C
+:10F9E000A4F85C20A4F8600084F89A3105E411685A
+:10F9F00019601360C4E96D33FEF71DBF1A683A60E1
+:10FA00001F60C4E96D77FFF7D2B98446FFF79ABB50
+:10FA1000A4F85C20A4F86000F1E648457FF4D7AE76
+:10FA2000C4457FF4D4AE2B6803251D71FFF7EFBBEF
+:10FA3000232A3FF474AAD4F89421C4F8E420FFF7F1
+:10FA40006EBA232B3FF43AAED4F89431C4F8E430C4
+:10FA500034E63C4F39688C4210D03B4A3B493C4825
+:10FA600041F2B20308F00FFF404080F311884FF0DD
+:10FA7000030002DF94F8703194F8722184F8713138
+:10FA800000233B60A4F8CC30FFF750BA2E4A31492E
+:10FA90002F4841F26A3308F0F6FE404080F31188A7
+:10FAA0004FF0030002DFB5E5196811601A60C4E980
+:10FAB0006D2256E494F89A2112F0060F3FF418AB29
+:10FAC000FEF72FBD94F8043194F8052193420ED02F
+:10FAD0001D4A21491E4841F2970308F0D4FE4040D8
+:10FAE00080F311884FF0030002DF94F8052194F8A9
+:10FAF0007211B4F87631A4F80831052363F30201DA
+:10FB000094F8060184F87211C1F3C0039B0020F041
+:10FB1000070043F001030343013A012584F805215E
+:10FB20000020B4F8782184F80631B4F87A3184F8EA
+:10FB30001451C4F81001A4F80A21A4F80C31FEF7FE
+:10FB400098BC00BFE03000203CAC010084AD010057
+:10FB50008CA701009CAD01005CAD0100208E5045DA
+:10FB60007FF4F1AC40F2E24000FB01F142F2107090
+:10FB700000FB0212B4F8C600013AB2FBF1F292B2F5
+:10FB800090427FF4E0ACB4F8722102F0F00242F04F
+:10FB90000102A4F872212A6803211171DAE4228E8D
+:10FBA000029882427FF4FCAE40F2E24202FB0CF08B
+:10FBB00042F21072B4F8C66002FB0B02013AB2FBCB
+:10FBC000F0F292B296427FF4EBAEDCE72DE9F04121
+:10FBD0003B4F3C4EFA7804463D1D2DE04FF4E47156
+:10FBE0003046F7F7E7FE828D0346002A30D1D8F879
+:10FBF00004100A79487902F00302022A33D000285F
+:10FC000032D1D3F8BC2100200860002A43D0D3F8B9
+:10FC1000C02102B11160C3F8C011FA78BB787978BD
+:10FC20009A4205D00133DBB2994208BF0023BB7072
+:10FC3000013C14F0FF0437D0BB783978934233D0BD
+:10FC400013FB01F315EB03082ED0EA5A002AC5D0A6
+:10FC5000D8F804100B796FF301030B714FF6FF70A6
+:10FC6000FCF752FCD9E708B393F9AC010028C8DAD5
+:10FC700093F8AC01012A6FF3C71083F8AC01C0D12F
+:10FC80000A79022060F301020A71D3F8BC21002036
+:10FC90000860002ABBD1D3F8B021C3F8BC11002AF8
+:10FCA000B5D1C3F8B011B6E7BDE8F08193F8AC2147
+:10FCB00042F0800283F8AC21FCF726FCADE700BFE0
+:10FCC00014030020182F00203B4B2DE9F04F1A6839
+:10FCD000D0F8004180F84C11824204BF00221A6023
+:10FCE000828DA0F836210B2383B0064600F11C0B51
+:10FCF00080F8343144B103252068214644680D71F1
+:10FD0000FCF7BCFB002CF7D1D6F8B01181B3DFF8BB
+:10FD1000BC80DFF8B0A0DFF8B89006F16C0707E010
+:10FD2000294620463A46F7F777FED6F8B011F9B1E2
+:10FD30003046FDF745FB05464046F7F709FE044609
+:10FD40000028EDD11D484FF4DB635246494608F0C8
+:10FD50009AFD404080F311884FF0030002DF2946EE
+:10FD600020463A46F7F758FED6F8B0110029DFD101
+:10FD700096F82C20124BCDF800B00532D2B20121FA
+:10FD80000020F9F7DDFA30F002030CD00D4A0E49DD
+:10FD90000A4840F2C56308F076FD404080F31188C0
+:10FDA0004FF0030002DF4FF6FF73FF20B38503B06F
+:10FDB000BDE8F04FFFF70ABFE03000208CA701003C
+:10FDC00005D700003CAC01001CAD010070320020E2
+:10FDD000A8AC01002DE9F041C669B28B4FF6FF7364
+:10FDE0009A428AB052D090F82730F468012B054629
+:10FDF00000F02881022B43D0002B00F0048194F8FE
+:10FE00002F11002940F0AD80B6F82480AB8C099109
+:10FE100008F101070891BFB2DBB396F92D30002B32
+:10FE2000C0F2208195F826300022A4F8C420A3BB9C
+:10FE3000B4F8C85025B9B4F8C650A4F8C8507DB37A
+:10FE4000BD4240F21A81ED1BABB2062B4FF000050C
+:10FE5000A4F8C830B58440F2FB8096F92D30AB424F
+:10FE60001EDAB8F1000F40F0F380D4F8E0506B08D0
+:10FE700015F0010518BF43F00043C4F8E0300FE06F
+:10FE80003D2184F82F112046FFF71EFF0AB0BDE880
+:10FE9000F08195F82630002B7DD00025A4F8C850BD
+:10FEA000B4F8CC302BB1BB4240F2EC80DB1BA4F8A1
+:10FEB000CC30B4F8D4302BB1BB4240F29280DB1B83
+:10FEC000A4F8D430B4F8D02094F8E83094F8E910CD
+:10FED00052B1BA4271D8B4F8CC200020A4F8D000B6
+:10FEE00012B9994200F0DC805B1A03F00303022B85
+:10FEF0006BD094F8042194F805319A4200F0AA805E
+:10FF00000022B284DDE908430DB9424563D00132D5
+:10FF100091B20BB9002C4CD0327F724FF668069626
+:10FF2000002005320391CDE90100D2B2049500947E
+:10FF300005970121F9F7B4F930F00203A6D0FCF7D8
+:10FF40003FFB8642A2D0684A6849694840F2D243E2
+:10FF500008F099FC404080F311884FF0030002DF65
+:10FF600094E796F92D30002B8DDB94F8DC3013F0FC
+:10FF7000020288D13D2986D0B6F82480A98C099246
+:10FF800008F101070892BFB2002982D043F00203B2
+:10FF900084F8DC3046E7B4F8C430002B3FF448AFB7
+:10FFA000BB4240F28480DB1BB4F8C850A4F8C430D4
+:10FFB00045E700296BD02346AEE75B1A03F0030345
+:10FFC000D71B022BA4F8D07093D194F8EA30013BF0
+:10FFD000012B8ED894E713B9002C3FF457AF294674
+:10FFE0009AE7FCF779FA0146002855D00023B28B36
+:10FFF000A4F8D4300E23C28003710068FCF73EFAE7
+:020000021000EC
+:10000000FCF746FA5EE796F86E30190704D494F8C8
+:100010005231DA077FF5F3AE338CB4F8D220991D54
+:100020008A42C4BFD31A063BB4F8CE10CCBF9BB2F1
+:100030001346994210D0A4F8CE30A4F8D030A4F8DA
+:10004000D420DCE60023A4F8D430A4F8D030D6E6DF
+:10005000012525E7B28C55E7B4F8D41000297FF4C8
+:10006000CEAEEAE708AA09A92846F3F745FDD4F879
+:10007000B0310BB30023B384D4E620460821FFF748
+:1000800023FE03E720462221FFF71EFEFEE6002D99
+:100090003FF4FCAE23463FE70123A4F8D43011E738
+:1000A0008B1E052284F8E93084F8EA2021E72046F7
+:1000B0003E21FFF709FEE9E6FF20FFF787FDD4F8B0
+:1000C000B021002AD6D1D6E91601F7F7ADFC0028F9
+:1000D000D0D196F83030DB077FF5A4AE338CB384F3
+:1000E000A0E600BF19D800003CAC0100D4AD01006F
+:1000F0008CA70100D0F8B031002B00F0E780013967
+:100100002DE9F047DFF8CC81DFF8CCA1DFF8CC9106
+:100110000446CDB212E04046F7F71AFC0746002825
+:1001200066D03146384604F16C02F7F775FCD4F816
+:10013000B031013DEDB2002B00F0898094F8AB2185
+:10014000D10703D494F85221920766D5D4F8B4218C
+:1001500093427CD1FF2D7AD0D4F8B0112046FDF720
+:100160002FF9037903F00303032B0646D3D1C37998
+:10017000033B142BCFD801A252F823F0D901010080
+:10018000D901010017010100170101001701010049
+:100190001701010017010100D9010100D10101007F
+:1001A00017010100170101001701010017010100EB
+:1001B00017010100170101001701010017010100DB
+:1001C00017010100170101000D0201000D020100DD
+:1001D00094F93D30002B9EDA94F8523143F002033B
+:1001E00084F852314046F7F7B3FB0746002898D110
+:1001F000374840F24E535246494608F044FB4040CF
+:1002000080F311884FF0030002DF8AE794F8AB31E6
+:1002100043F0010384F8AB317DE71A7902F0030261
+:10022000032A97D1DA79032A01D00A2A92D194F8C5
+:10023000E91094F8E8208A420BD094F8EA20032AC7
+:1002400088D01A681AB1D4F8B4118A422DD0BDE80A
+:10025000F08794F8190194F818118842F1D194F8B4
+:10026000250194F824118842EBD194F8710194F897
+:1002700070118842E5D194F8990194F89811884258
+:10028000DFD194F8A90194F8A8118842D9D194F843
+:10029000EC30012161F30103023A032184F8E920E3
+:1002A00084F8EC3084F8EA1054E7D4F8B811D4F8A4
+:1002B000C001C4F8B0210A681A600B60C4F8BC31F0
+:1002C00000287FF447AFC4F8C03143E7704700BF50
+:1002D0008CA70100703200203CAC0100A8AC0100EA
+:1002E0000149F7F74FBB00BF70320020014BD878AF
+:1002F000704700BFB0020020F0B40B4B9C78DE7852
+:100300001F78B4420DD0043314FB07F405461819C6
+:1003100005D02E701C5B43680C8013601868F0BC1D
+:1003200070470020FBE700BFB002002030B4094B4B
+:100330009C781D7884420BD0043314FB05F4181903
+:1003400004D01C5B43680C801360186830BC704795
+:100350000020FBE7B002002010B40A4B9978DA784D
+:1003600018785C788A420AD04A1CD2B201FB00316C
+:10037000944208BF002248689A7010BC7047002061
+:10038000FBE700BFB002002070B5134AD67855785D
+:100390009478731CDBB29D4208BF00239C420AD0B4
+:1003A000154615F8044B14FB06F42E1903D02853F8
+:1003B000D370716070BD094A09490A4840F28C53F4
+:1003C00008F061FA404080F311884FF0030002DF2B
+:1003D00000231B80FFDE00BFB00200203CAC010008
+:1003E00098AC01008CA70100F0B5537983B0144696
+:1003F00005460F46002B33D0237903F00302032A6E
+:1004000016D04FF6FF7295420AD16FF301032371A4
+:10041000002621462846FCF777F8304603B0F0BDA9
+:10042000C4482A464FF4E471F7F7C4FA0646F0E7E9
+:100430004FF6FF739D4221D100263868844245D093
+:100440000028E6D0BC4ABD49BD4840F2AE5308F092
+:100450001AFA404080F311884FF0030002DFD8E71A
+:10046000B54AB849B64840F29B5308F00CFA4040F0
+:1004700080F311884FF0030002DFBDE7AD482A4644
+:100480004FF4E471F7F796FAE379023B0646162B30
+:1004900018D8DFE813F01E0102014600170017000C
+:1004A000170017001700F1005A001700500017003E
+:1004B000170017004D0017001700D800B0001F00EC
+:1004C0002600E0003868A042BAD120469E49F7F7DE
+:1004D00059FAA2E790F8AA31022262F3010380F8E8
+:1004E000AA3196F93D30002B14DA984996F8642029
+:1004F00096F8AA3103C942EA93030DF1080C0CE9FE
+:10050000030003F00703634413F8083C63F3061287
+:1005100086F8642096F8AB316FF3000386F8AB31B0
+:100520008BE796F8523143F0020386F8523184E7A4
+:10053000237A032B81D196F85231002223F0030352
+:1005400086F85231A6F8CC2077E790F93D30002BA1
+:10055000E7DB2379032243F003031721E27108222A
+:100560002371617100F25511A01808F0EBFE96F8A6
+:100570005331237496F8543163740C2104F1120042
+:1005800002F046F9D6F8B031002B00F0AC8096F8B6
+:100590005221910700F1A78096F8AB21D20700F114
+:1005A000A280D6F8BC21934204BF1A68C6F8BC21C9
+:1005B000D6F8B421002A00F0B580D6F8B8311A6810
+:1005C00022601C60C6F8B84123683A68002B00F02E
+:1005D0008780002A7FF421AF574A5D49584840F28E
+:1005E000A75308F050F9404080F311884FF0030002
+:1005F00002DF00206AE790F8981190F899318B4259
+:100600003FF41BAF90F89A2102F00703032B05D0AB
+:10061000033303F00703012B3FF654AFB6F89E31C6
+:10062000A6F85C3002F00703B6F8A201A6F8600055
+:10063000052B71D0B6F8A431002B5FD186F8991143
+:10064000A6F8CC30F9E690F89A31022262F3020360
+:1006500080F89A31F1E690F8EC3090F8641090F858
+:10066000AB21C3F3820363F306116FF3000280F83A
+:10067000641080F8AB21E0E690F85231B0F8CA205F
+:10068000A0F8CC2023F0060390F8502180F85121E7
+:1006900043F0060380F85231CFE6082204F112013C
+:1006A000EE3008F04FFE042204F11A0106F1980022
+:1006B00008F048FE96F85231B6F8CA1096F8502164
+:1006C000A6F8CC1043F0020386F8523186F8512187
+:1006D000B3E6217A132908BF1621FFF7F5FAACE635
+:1006E000C6F8C04175E7D6F8B421002A7FF465AF9B
+:1006F0002360C6E96C44C6F8B84166E7002161F39F
+:100700000202A6F89E31B6F8A63186F89A21A6F81C
+:10071000A411A6F8A23190E6042363F3020286F83E
+:100720009A218AE61A6822601C602368C6E96D4433
+:100730004BE700BF182F00203CAC01003CAE01008D
+:100740008CA7010030AE0100EC31002054AE010056
+:1007500048AE010090F8E93090F8E820934203BFDA
+:10076000013380F8E83000200C20704790F84810E2
+:10077000B0F84430C1F30212022A10D0042A12D079
+:10078000DB080A3B9BB290F86220B0F84000D2062A
+:1007900044BF043B9BB2984228BF184670479B0851
+:1007A0000B3B9BB2EFE709074BBFA3F51473A3F50F
+:1007B000D7739B111B11023B9BB2E4E7014B002254
+:1007C0001A607047E030002000B9704708B5074A4A
+:1007D000074908484FF4F07308F055F8404080F39B
+:1007E00011884FF0030002DF08BD00BF60AE0100BA
+:1007F000B0AC01008CA7010008B5074A07490848BA
+:100800004FF4EC7308F03FF8404080F311884FF04C
+:10081000030002DF08BD00BF60AE0100A4AE01000E
+:100820008CA70100012800D0704710B50C46FBF7DB
+:10083000C7FE844203D0BDE81040FFF7DDBF10BD06
+:100840002DE9F04105468846184629461C461746BC
+:10085000F1F7FAF900283AD1237C0133DBB2237493
+:100860003BB31C4E1C4B3560002204F11C0C11469E
+:1008700001209E60C6F804803781C6F80CC0F7F7E7
+:100880003FF940B9FF20FFF7A1F92046FF21BDE85D
+:10089000F041FFF72FBC114A114912484FF4CE73B3
+:1008A00007F0F1FF404080F311884FF0030002DFB2
+:1008B000E8E70A4A0C490B484FF4C87307F0E3FF16
+:1008C000404080F311884FF0030002DFC9E7BDE824
+:1008D000F08100BFE43200208803002060AE0100F8
+:1008E000F4A901008CA701005CAB010070B50E46B5
+:1008F0001546FDF763F9002840D004465EB990F82C
+:10090000E82090F8E9309A4203D090F8EA30032BBF
+:1009100026D00C2070BD90F8520110F0040012D1C6
+:1009200094F8E82094F8E9309A42F2D094F8EA304A
+:10093000032BEED194F8EC3084F8ED6060F3010302
+:1009400084F8EC3070BD94F82C2194F82D3193424A
+:10095000DFD1013384F82C3184F82E61002070BD82
+:100960002946102200F25D1008F0ECFCB4F8EC30DF
+:1009700003F0FC033046A4F8EC3070BD022070BDDB
+:10098000704700BF00B9704708B5074A07490848D3
+:1009900040F2173307F077FF404080F311884FF0A3
+:1009A000030002DF08BD00BFD4AE0100B0AC0100FF
+:1009B0008CA701002DE9F0410546884618462946D6
+:1009C0001C461746F1F740F9002841D1237C01333A
+:1009D000DBB2237473B30120FFF7F8F8012120463E
+:1009E000FFF788FB1B4E1C4B3560002204F11C0CEA
+:1009F000114601209E60C6F804803781C6F80CC0FD
+:100A0000F7F77EF840B9FF20FFF7E0F82046FF2116
+:100A1000BDE8F041FFF76EBB104A1149114840F2A2
+:100A2000033307F030FF404080F311884FF003009C
+:100A300002DFE8E7094A0C490A4840F2F12307F0CF
+:100A400022FF404080F311884FF0030002DFC2E72D
+:100A5000BDE8F081FC32002098030020D4AE0100F4
+:100A6000F4A901008CA701005CAB01002DE9F04F57
+:100A700089B080460393BDF8503002930020BDF842
+:100A800054309DF84CA0BDF8587004938946164622
+:100A9000FCF762FC002800F0A181D0F824B00546E4
+:100AA000BBF1000F2ED0304600F0FAFD95F8333040
+:100AB000FF226FF3000385F8333085F83420AEB1A0
+:100AC000AAF10203012B40F2538195F848306AF3F2
+:100AD000420385F8483002F0A5F8002840F0548120
+:100AE0002846F0F7EDFF09B0BDE8F08F01F06AFC91
+:100AF0000028E5D003981299324600F0BDFF85F832
+:100B00003400DDE7FBF7A2FC0590002800F07B81B4
+:100B1000FDF738F80446002800F0778142464B463E
+:100B2000594605F11C000096F0F7A2FF95F8323007
+:100B3000039A129962F3451385F83230062205F1C3
+:100B40003B0008F0FFFB2F86C5F828B004F1240015
+:100B5000F7F7E4F804F11C08002840F04381032172
+:100B600004F1280001F048FE029BA06F049AE3857F
+:100B70004FF6FF732286A385002800F0408104F120
+:100B80006C0204F16801F6F739FFB4F86430AF493C
+:100B900094F87E20AE4820660B4043F4887343F0FF
+:100BA00001034FF0000922F007024FF01B11A4F8D7
+:100BB00064307F2384F87E20E16584F8C130C4F876
+:100BC0007890A4F87C90A4F83290C4F8349004F1A2
+:100BD000380000F081FA94F83D3060F3050384F8A2
+:100BE0003D3001210DF11F0001F006FE9DF81FE0D0
+:100BF000984B208E94F83DC084F83F90A3FB0E23C1
+:100C0000DB0803EB4303AEEB830E029B924AA4F88E
+:100C1000C89040F2E24101FB03F10EF1050E4B1EBC
+:100C200084F83EE042F2107E0EFB0733DFF848E224
+:100C3000B3FBF1F30A448E44B2FBF1F2A4F8C630E0
+:100C4000BEFBF1F193B200F1060E0CF03F0CA4F8DC
+:100C5000CA1073454FF00601A4F8CC90A4F8D490C4
+:100C6000A4F8D090A4F8D23084F83DC0A4F8C41001
+:100C700002DD181A063883B20598A4F8CE3094F82D
+:100C8000523194F8DCE094F8261194F87E2094F820
+:100C900072C1C4F8300194F89A014FF0000923F0B2
+:100CA00007032EF0030E21F0030169F3041C22F068
+:100CB000180269F3C30084F85231684B84F8DCE011
+:100CC00084F8261184F872C184F87E20C4F81C319F
+:100CD000A4F8E89084F8EA90C4F80091A4F804918C
+:100CE000A4F81891C4F82091A4F8249184F82F91C5
+:100CF000A4F85091A4F87091A4F89891A4F8A49144
+:100D000084F89A01FDF78CFAA4F8D600FDF78EFA64
+:100D1000D4F8A821524BA4F8D8001340C4F8A83145
+:100D2000FDF78AFA94F8AC3160F3020384F8AC3131
+:100D3000FDF788FA94F8AC21C4F8C091030103F0E0
+:100D4000700322F07802134384F8AC31C4E96E9941
+:100D5000C4E96C99C5F8248094F82030C4F8189040
+:100D600069F30003C4F81490E46184F820309AE633
+:100D7000002000F03FFD95F8333043F001030AF006
+:100D8000010A85F83330A0E66C6AE36D63B1354A39
+:100D90003549364840F2213307F075FD404080F375
+:100DA00011884FF0030002DF04F1500104F14C0000
+:100DB000F6F728FE064600283AD02768E665D7F8F9
+:100DC00030413CB32046FBF747FB3846FCF7E0FEDA
+:100DD000002303206B6209B0BDE8F08F0C2009B03E
+:100DE000BDE8F08F1F4A22492048972307F04BFDAA
+:100DF000404080F311884FF0030002DFAFE604F1BA
+:100E00007000A067BBE607206DE60598FBF724FBA2
+:100E1000072068E6134A1749144840F22A3307F0BE
+:100E200032FD404080F311884FF0030002DFC9E734
+:100E30000C4A10490D4840F2233307F024FD40408E
+:100E400080F311884FF0030002DFB6E780F8FFFF60
+:100E500048014801ABAAAAAA7FC3C901FF49010002
+:100E60000000FFF6D4AE0100CCAB01008CA701005E
+:100E7000F4A90100A8AC0100FF5962022DE9F84372
+:100E800007460020FCF75AFA28B3466A044616B310
+:100E900001460020FCF75AF90546C8B93668D6F86D
+:100EA000308106F59879B8F1000F18D04046FBF76D
+:100EB000D3FA1C340A214FF6FF720223C6F83841D8
+:100EC00086F83411A6F8362186F84C31C7F8009020
+:100ED0002846BDE8F8830C252846BDE8F883074A74
+:100EE0000749084840F2911307F0CDFC404080F3D9
+:100EF00011884FF0030002DFD8E700BFD4AE010035
+:100F0000A8AC01008CA7010070B5064600F0F0F80F
+:100F10000020FCF753FE0446E8B190F93D30002B69
+:100F200019DBFFF717FC054698B93146052204F195
+:100F3000ED0008F007FA94F8EC2094F8E83042F05D
+:100F400001020133022184F8EC2084F8E83084F8AF
+:100F5000EA10284670BD0025284670BD2DE9F843EB
+:100F60008846164699460746FCF728FE002863D0B7
+:100F700090F8502190F851319A4204463DD190F8B2
+:100F8000E82090F8E9309A4203D090F8EA30032B39
+:100F900033D0FCF725FE054678B34946102204F20B
+:100FA0005D1008F0CFF994F87E3013F0180327D0C5
+:100FB000182B1FD14146082204F2551008F0C2F93F
+:100FC000337884F85331737884F854312B790121C4
+:100FD00043F003030A222B716971EA7138462946EE
+:100FE000FCF70AFE30B994F85031013384F85031DF
+:100FF000BDE8F8832846FCF7F9FD0C20BDE8F8832E
+:101000002B79032243F00303EA711720082241469B
+:101010002B716871A81808F095F933782B747378E0
+:101020006B74082105F1120001F0E6FB042105F1C3
+:101030001A0001F0E1FBD1E70220BDE8F88300BF10
+:1010400008607047C3680268996810B40C68488AE1
+:10105000E16810BC1033F3F70BB900BF10B50446BC
+:10106000D0F8F420C16800F58873C08DF3F700F95B
+:10107000D4F810310549D4F8F020A1FB03139B0AE2
+:10108000C3F307211370517010BD00BF5917B7D1BA
+:1010900000B590F93D30002B85B0BCBFD0F8E430EE
+:1010A000C0F894314FF00002D0F88C3103920193D4
+:1010B0004FF006020DF10B038DF80B200093B8BF23
+:1010C00000F5CA72B0F87631A8BF03AA0021F2F782
+:1010D000A3FE05B05DF804FB08B50349052208F03E
+:1010E00031F9024B187808BDA803002064040020E1
+:1010F00010B5064C01460522204608F023F920468B
+:101100000521F6F7F3FD024B187010BDA80300206F
+:101110006404002070B4054600781B4C02FB0111EA
+:101120000A1884FB02011144491101EBC10401EBCF
+:101130008401511AC8B2C20828709C5C9DF80C50FA
+:1011400001F007010C4114F001041BD1B0FBF5F2D2
+:1011500005FB1202D2B25D1E1E1D04F1080115F836
+:10116000013F2046CCB213F0010F00F101014FEA1C
+:10117000530302D032B1013AD2B2C8B28442F2D1A2
+:10118000B542EAD170BC7047A7C867DDF0B52F4FF4
+:101190002F4E80EA01050324280AEDB200EB8020DF
+:1011A00005EB852506EA401E07EA400C07EA4500E4
+:1011B00006EA45154CEA0E0C284300EB00250CEB23
+:1011C0000C2E00EB05200CEB0E2C4FEA1C4CC0F350
+:1011D000074040EA0C2000EB0010013C084414F0EA
+:1011E000FF0485B2D8D11B486940A0FB01500D1AFD
+:1011F00000EB5500400900EBC00500EB8500081A24
+:10120000C0F3C40500F00706555D3541ED07C0B2D7
+:101210001AD401FB03F3561EC3F30743043204F14F
+:10122000080516F8011F2046ECB211F0010F00F17D
+:1012300001054FEA510102D033B1013BDBB2E8B204
+:10124000A042F2D1B242EAD1F0BD00BF10210200AB
+:10125000408408004D91CFBA2DE9F84388461546E1
+:101260000AB1FF231370174E00F0010706F10209BF
+:10127000002404E0BA4214D00134082C0ED016F831
+:101280003430D907C3F34002F4D4002DF4D02B78C6
+:10129000FF2B08BF2C700134082CF0D1FF20BDE8D3
+:1012A000F8830622414609EBC40008F03BF830B150
+:1012B000002DE1D016F83430DB07DDD4E7E7E0B2EB
+:1012C000EDE700BF3C3500202DE9F84F214F224DBE
+:1012D000DFF88890DFF888A0A7F10208A5F1020BDB
+:1012E00000241BF83430012613F0010F384606FAAB
+:1012F00004F6294607F106074FF0060222D099F8B6
+:10130000003063B115F8013C072B03EB830C06D8C2
+:101310001AF83C3013F0040F01D0DB0612D51BF88D
+:10132000343098F801E098F800C0C3F34003A340BC
+:101330004EEA03034CEA060688F8013088F800609C
+:1013400008F000F80134082C05F10805C9D1BDE802
+:10135000F88F00BF7E3500203E3500209F3B0020E7
+:10136000C43300202DE9F041DFF86080164D08F10C
+:101370000107AE1C002402E00134082C21D004EB4C
+:101380008403D90018F83330DA07F5D56A7895F870
+:1013900000C0C3F380134FF0010E0EFA04FEA34009
+:1013A00004EB440013434CEA0E0C394406EB4000B6
+:1013B000062201346B7085F800C007F0C3FF082CCB
+:1013C000DDD1BDE8F08100BF04350020C43300202A
+:1013D00008B50020FBF7CCFFB0FA80F0400908BD4B
+:1013E0000820704710B50020FBF79EFD00BBFBF7FF
+:1013F000D7FF10F001001BD10E4A0F4C02EBC003C7
+:101400005B78072B03EB830105D814F831306FF3B9
+:10141000451304F8313012F830306FF3000302F84E
+:10142000303001300828E9D1044B0020187010BD7D
+:101430000C2010BD3C350020C4330020A03B002010
+:1014400038B504460020FBF76FFD78B9FBF7A8FF1D
+:1014500010F001050AD12078FF2809D0611C2A4626
+:10146000FFF7FAFE072807D9022038BD0C2038BD47
+:101470000D4B1D70284638BD0C4A02EBC0035B784B
+:10148000072B08D80A4903EB830311F8334065F3AF
+:10149000451401F8334012F830306FF3000302F8BE
+:1014A0003030002038BD00BFA03B00203C3500207C
+:1014B000C433002007282DE9F04104460D4690462C
+:1014C00017D8194E04EB8403A70016F83330DB0756
+:1014D0001CD52744282116F83730C3F3801301FBAD
+:1014E00004612B7040460131BDE8F041062207F04F
+:1014F00029BF0E4A0E490F48E92307F0C4F94040BE
+:1015000080F311884FF0030002DFDAE7074A0A4947
+:101510000848EA2307F0B7F9404080F311884FF0FC
+:10152000030002DFD5E700BFC433002068AF01002D
+:10153000ACAF01008CA70100B8AF010008207047D4
+:10154000F8B50020FBF7E4FC08B10C20F8BD044618
+:10155000FFF73EFF0028F8D01A4B1B4993F85020A4
+:1015600093F800C093F8287093F8786093F8A0502F
+:1015700093F8C8000C7064F3000293F8F01083F83D
+:10158000502093F8182164F3000064F3000C64F316
+:10159000000764F3000664F3000564F3000164F3DC
+:1015A000000283F8C80083F800C083F8287083F82D
+:1015B000786083F8A05083F8F01083F81821204653
+:1015C000F8BD00BFC43300209E3B002038B505465F
+:1015D0000020FBF79DFC08B10C2038BD0446FFF746
+:1015E000F7FE0028F8D03DB1012D01D0122038BD02
+:1015F000034B1D70204638BD014B1D70284638BD79
+:101600009F3B0020034A4FF47A7303FB00F31360FF
+:10161000704700BF38350020B0B10D4B1A6810B5C7
+:101620004FF4004340F2E7300021E3FB02014FF4A6
+:101630007A720023EFF764FDBDE8104002460B46C6
+:101640000448054906F0BCBE034808F07BBD00BF56
+:1016500038350020780A0020480900200D4A08B5D6
+:101660000023138070B90C4B0C4A1B7800201080AB
+:1016700003B908BDFBF77CFE0028FAD1BDE808409D
+:10168000FFF770BE1846FBF78BFEC307EBD4FFF7DE
+:101690001BFEE8E77C3500209F3B0020043500203E
+:1016A0000E4A08B500231380C2070ED40C4B0D4A16
+:1016B0001B780020108003B908BDFBF729FC002827
+:1016C000FAD1BDE80840FFF74DBE1846FBF72CFCE9
+:1016D0000028EBD1FFF7F8FDE8E700BF7C350020DC
+:1016E0009F3B0020043500202DE9F84390F82A7034
+:1016F000072F05460C4601F1020645D8DFF8F080B9
+:1017000007EB87034FEA870918F83330190729D503
+:101710009A0759D5227809EB070308EBC30342F077
+:101720004002596A22703046062207F00BFE2378E9
+:1017300003F00F03012B25D1B94404F1080018F878
+:1017400039305B0733D495F8D6302278C3F3C00321
+:1017500063F3C712227005F1D7010622BDE8F843F2
+:1017600007F0F0BD90F8D6002378C0F3400060F396
+:10177000861323703146F7F78DFE237803F00F03AD
+:10178000012BD9D0BDE8F88390F8D6000B78C0F3D0
+:10179000400060F3861323703146F7F77BFE237811
+:1017A00003F00F03012BEDD104F10800CBE7237800
+:1017B000282143F0800301FB078123701E31BDE81F
+:1017C000F843062207F0BEBD064A074907484FF412
+:1017D000137307F058F8404080F311884FF003006E
+:1017E00002DF97E768AF0100CCAF01008CA70100D2
+:1017F000C43300202DE9F04F824687B008F0FBFC8F
+:101800004B014201B2EB000843EAD06363EB0103F2
+:101810009B004FEA880243EA987312EB000843EBFF
+:101820000101C90041EA58714FEAC8034FEAD338B1
+:10183000CE0B48EA41480196BAF1000F17D1764B1A
+:10184000D3E900014C1C08BFB0F1FF3F0FD0734B30
+:101850001A68B8EB000466EB01050023944275EBAF
+:101860000303ACBF4FF001094FF0000901E04FF056
+:1018700001096B4EDFF8BCB1A6F12407002404EB8C
+:101880008403A50017F83330DA0715D5B9F1000F36
+:1018900001D1980710D42B1917F83330590735D4D4
+:1018A0002B1917F833301A0719D4254417F8353097
+:1018B00043F0020307F835300134082C06F12806FE
+:1018C000DDD1B9F1000F04D0534B019AC3F8008069
+:1018D0005A60BAF1000F3DD107B0BDE8F08F02A900
+:1018E000A6F11D0007F0AEFD002840F081804D4AB2
+:1018F00004EB440302EB430302A9184606223160BD
+:10190000009307F01FFD009B3360CEE716F80D3CF7
+:10191000454A02EB03120F320DF107030DF11700D8
+:1019200012F8011903F8011F8342F9D1B11F02A86F
+:1019300007F088FD0028B3D03C493D4840F216230B
+:101940005A4606F0A0FF404080F311884FF0030094
+:1019500002DFA5E70020FBF7CDFA04460028BBD044
+:1019600090F8D6305B07B7D590F82A30072BB3D85C
+:1019700090F82C5090F82B1005EB8502C5EBC202B5
+:1019800002F111031C308D4200EB0306CFB207D0E9
+:1019900084F82C70BFF34F8F94F82B108F4238D0FF
+:1019A0000135EDB2022D31D02721022211FB052293
+:1019B00004F12B01C35C885CC3F34017C3F303033A
+:1019C00043EA471320F03F0003438F188B5420460F
+:1019D0003946FFF789FE727807F10800063A06F1EA
+:1019E000080107F0AFFC73787B7084F82C5073E724
+:1019F0000E490F4840F223235A4606F044FF404068
+:101A000080F311884FF0030002DF70E70222002507
+:101A1000CEE70232CCE700BF400900203835002075
+:101A2000E83300200C33002044330020F4A90100E7
+:101A30008CA7010068AF010010B50120FFF7DAFEA6
+:101A40000A4B1A6840F2E7304FF400430021E3FBF1
+:101A500002014FF47A720023EFF752FBBDE8104009
+:101A600002460B460248034906F0AABC383500205E
+:101A7000780A0020480900202DE9F84F8B461646C9
+:101A80000AB1FF231370DFF8648000F0010908F148
+:101A9000010A002404E04A4519D00134082C12D070
+:101AA00004EB8405E80018F83530D907C3F3801239
+:101AB000E7B2F0D4002EF0D033780134FF2B08BF0A
+:101AC0003770082CECD1FF273846BDE8F88F50441A
+:101AD0000622594607F026FC0028F5D0002EDCD05F
+:101AE00018F83530DB07D8D4E6E700BFC433002050
+:101AF0002DE9F041054682B00020FBF715FA0028D9
+:101B000040D1FBF74DFC10F001043BD12878FF28B1
+:101B10003CD005F1010841460DF10702FFF79CFB9F
+:101B200007282BD99DF80760072E36D81E4F2A7834
+:101B300017F8363007EBC60062F341034146062230
+:101B4000023007F8363007F0FDFB28782246414680
+:101B5000FFF792FF072822D8144900EB800407EB17
+:101B6000C60211F83430507043F0200301F83430CD
+:101B700017F8363043F0010307F83630002002B082
+:101B8000BDE8F0810C2002B0BDE8F081084B0122D5
+:101B900020461A7002B0BDE8F0810720F3E707EB9A
+:101BA000C603FF225A70E3E73C350020C43300200F
+:101BB000A03B00202DE9F04F064685B000200D46E1
+:101BC0001446FBF7A5F918B10C2005B0BDE8F08F5D
+:101BD000FFF7FEFB0028F7D0B1460DF10F0219F810
+:101BE000010B4946FFF748FF072840F286809DF821
+:101BF0000F80B8F1070F79D808EB8803474FDB0057
+:101C0000581C08EB880A062249463844019307F01D
+:101C100099FB317817F83A204FEACA0B61F3861224
+:101C20002846102107F80B20F5F7DCFE17F80B20EB
+:101C3000102160F38202204607F80B20F5F7D2FE50
+:101C400017F80B20019B00F0010060F3C30212F0B3
+:101C5000040F07F80B2007EBCA0A4FEA880B1AD0CB
+:101C6000DFF8C4E0DFF8C4C09EF800102C4A0CF87E
+:101C700001808AF8171002EB011C01318EF8001068
+:101C80000CF1FF3C05F10F02691E12F801590CF826
+:101C9000015F8A42F9D190BB03F1180006220021AE
+:101CA000384407F07AFB0BEB0803DC0017F83330FD
+:101CB00023F012033B55494630780022FFF7CCFA57
+:101CC000072815D83B5D174A43F0200302EBC000FC
+:101CD0003B5580F80180D844002017F8383043F095
+:101CE000010307F8383005B0BDE8F08F07206CE736
+:101CF0003B5D6FF345133B55EDE7122065E7D81DBB
+:101D0000214610223844019307F01CFB0BEB08021C
+:101D100007EBC2020021019B5162BDE7C4330020E2
+:101D2000443300203C3500209E3B00203C33002003
+:101D30002DE9F04F054683B00020FBF7E9F818B114
+:101D40000C2003B0BDE8F08F0446FFF741FB0028EC
+:101D5000F6D02F46224617F8010B3946FFF78CFEC6
+:101D60000728064603D9022003B0BDE8F08FDFF84C
+:101D7000BC8000EB800308EBC30118F833305B072D
+:101D80004FEA80092ED5DFF8A8A09AF80020013A82
+:101D900012F0FF0B23D0CB7D5B4521D0204801936F
+:101DA00000EB0B11102200EB031007F0CBFA019BA4
+:101DB00004EB840208EBC20118F8322012F0010F84
+:101DC000E0B204F1010404D0520702D5CA7D5A459D
+:101DD0001FD0082CECD19AF80020013A00E05A46B6
+:101DE0008AF80020287839460022FFF735FA0728BC
+:101DF00004D80C4B03EBC000FF2343704E4400207B
+:101E000018F836306FF3000308F8363003B0BDE839
+:101E1000F08F054C9AF80020E054CB75013ADFE7CB
+:101E2000443300203C3500203C330020C4330020E4
+:101E30009E3B002038B51C465B7903F0C003402B65
+:101E400000D038BD19B10022FFF716FE0246072A5E
+:101E5000F7D8094B02EB820113F83110C907F0D50E
+:101E60001821282010FB0210184421460622BDE844
+:101E7000384007F067BA00BFC433002038B50346C6
+:101E80000D4613F8010B00221946FFF7F5FD072850
+:101E900001D9022038BD094C2823182213FB002049
+:101EA000044420460621F5F79DFD0028F1D0214687
+:101EB0002846062207F046FA002038BDC433002029
+:101EC00010B503460C4613F8010B00221946FFF724
+:101ED000D3FD072801D9022010BD064B00EB80007E
+:101EE00003EBC0030622596A204607F02BFA0020B4
+:101EF00010BD00BFC433002070B5054600200E465B
+:101F0000FBF706F808B10C2070BD0446FFF760FA35
+:101F10000028F8D02946224611F8010BFFF7ACFD46
+:101F200007281AD876B1012E0AD100EB80030C499C
+:101F300011F8332042F0100201F83320204670BD22
+:101F4000122070BD064B00EB800013F8302066F3C2
+:101F5000041203F83020304670BD022070BD00BF6F
+:101F6000C4330020314A3249F0B40023314C13709D
+:101F700004EBC3025278072A02EB820505D811F858
+:101F800035206FF3451201F8352014F833206FF334
+:101F9000000204F833200133082BE9D10F7891F8BF
+:101FA000285091F8504091F8782091F8A0600023D3
+:101FB00063F300070F70204F63F3000563F3000421
+:101FC00063F300023B7081F828501C4F91F8C85011
+:101FD00081F8504081F8782091F8F04091F818216C
+:101FE0003B7063F3000663F3000563F3000463F3DF
+:101FF000000281F8A060124B124E134F81F8C850B6
+:1020000081F8F0404FF0FF354FF0FF34C3E9004551
+:1020100081F81821376020B1F0BC0C490C4808F059
+:1020200089B8F0BC0A4808F08DB800BFA03B00207A
+:10203000C43300203C3500209F3B00209E3B002005
+:102040004009002038350020A0BB0D00391A0100DE
+:1020500048090020072807D8044B00EB800013F83C
+:102060003000C0F3C000704700207047C433002028
+:1020700007280DD800EB8000064911F830301A0708
+:102080004FEAC00004D59B0702D50844406A704758
+:1020900000207047C4330020024B1B7803700248B5
+:1020A000704700BF9E3B00204433002038B50C46EB
+:1020B00050B1072922D82A4D15F83430DA072FD528
+:1020C00005EBC404607838BD07293AD8254B04EBEA
+:1020D000840213F83230DB0701D5204638BD224A8E
+:1020E000224923484FF42F7306F0CDFB404080F384
+:1020F00011884FF0030002DF204638BD1A4A1D49FF
+:102100001B4840F2B62306F0BEFB404080F3118826
+:102110004FF0030002DF124D15F83430DA07CFD448
+:10212000114A1549124840F2B72306F0ACFB404073
+:1021300080F311884FF0030002DF05EBC4046078E0
+:10214000C1E7094A0D490A4840F2BA2306F09BFB51
+:10215000404080F311884FF0030002DFB6E700BF74
+:102160003C350020C433002068AF010040B10100BD
+:102170008CA70100E0AF010084B001009CB0010019
+:1021800010B5204B1B78834204460CD91E4B1C5DB6
+:10219000072C19D81D4B04EB840213F83230DB07EF
+:1021A00020D5204610BD1A4A1A491B4840F2C623C2
+:1021B00006F069FB404080F311884FF0030002DF16
+:1021C000114B1C5D072CE5D9114A144912484FF4F4
+:1021D000327306F058FB404080F311884FF0030043
+:1021E00002DFD7E70A4A0E490B4840F2C92306F03E
+:1021F0004AFB404080F311884FF0030002DF204685
+:1022000010BD00BF9E3B00203C330020C4330020A3
+:1022100068AF01004CB101008CA701006CB1010056
+:1022200040B10100072823D870B500EB8003114EA0
+:1022300016F83330DB0704464FEA800505D52C44F9
+:1022400016F83400C0F3401070BD0B4A0B490C481F
+:102250004FF4357306F017FB404080F311884FF0C0
+:10226000030002DF2C4416F83400C0F3401070BDA8
+:1022700000207047C433002068AF0100B8AF0100F0
+:102280008CA70100034A044B00280CBF10461846D7
+:10229000704700BF043500207C350020144B1B78AC
+:1022A0009BB1072970B50C460DD860B9114E01EBF2
+:1022B00081038D0016F83330DA070BD52C4416F85D
+:1022C0003400430703D4012070BD01207047C0F3E0
+:1022D000001070BD084A094909484FF43F7306F0E1
+:1022E000D2FA404080F311884FF0030002DFE5E7A7
+:1022F0009F3B0020C433002068AF0100B8AF01004D
+:102300008CA701001C4B1B78FBB11378FF2B1CD151
+:102310002DE9F047194D06460023AF1F03EB830458
+:102320005FFA83FE17F8344014F001004FEA830C83
+:1023300003D0C4F38014B44209D00133082B05F153
+:102340002805EBD10120BDE8F08701207047AC1FC4
+:1023500001F1FF3814F801AF18F8019FCA45ECD11C
+:10236000AC42F7D1634482F800E017F833305A07E3
+:10237000E9D5C3F30010E6E79F3B0020CA330020F5
+:1023800030B40E4B1C7874B1072A0CD80C4C02EBFD
+:10239000820514F835502B0705D520B14B7903F091
+:1023A000C003402B02D0002030BC7047282000FB27
+:1023B0000240073030BC07F032B800BF9F3B00201E
+:1023C000C4330020024B1878003818BF0120704732
+:1023D0009F3B0020684620F007018D4601B502F0C2
+:1023E000CBFBF4F73FFEF5F701F8BDE80140854669
+:1023F000704700BF08B5094BD3F840213AB9012016
+:10240000F5F7D2FBBDE808400220F5F7CDBB002070
+:10241000C3F84001F6F7BAFEF1E700BF00B0004094
+:102420000020F5F7C1BB00BF02F0E2BC012800D8D4
+:10243000704708B5064A074907484FF41B7306F072
+:1024400022FA404080F311884FF0030002DF08BDFC
+:1024500074B10100BCB101008CA70100012800D8B3
+:10246000704708B5064A0749074840F2772306F047
+:102470000AFA404080F311884FF0030002DF08BDE4
+:1024800074B10100BCB101008CA7010030B500227D
+:102490008BB00B68154C16490892CDE90322CDE9A3
+:1024A0000122069207940591D3E900549968A54248
+:1024B0002CBFC1EB0501C1EB04010346009110469E
+:1024C0001146F6F7D1FE022801D80BB030BD094AFB
+:1024D00009490A4840F2952306F0D5F9404080F3B7
+:1024E00011884FF0030002DF0BB030BD5D24010006
+:1024F0005527010074B10100DCB101008CA7010077
+:102500002DE9F04385B004464FF0FF0C0DF10F00AC
+:10251000DDF830809DF834908DF80FC00D461646DA
+:102520001F46FAF743F918B91EE0FAF73FF9D8B198
+:1025300090F820309B070DF10F00F6D12D4B9A68D3
+:10254000AAB9B9F1000F36D00122019200973346A3
+:10255000294620464246FAF7E3F8D8B96FF043041B
+:10256000204605B0BDE8F083224B9A681AB3CDE946
+:1025700000793346294620464246FAF7D1F848B951
+:10258000B9F1000FEAD1D8F80C10D8F80000FFF725
+:102590007DFFE3E7184A1949194840F2112306F074
+:1025A00072F9404080F311884FF0030002DFB9F167
+:1025B000000FD3D1E7E7D8F80C201A60C3E9014532
+:1025C0004046B04700220F4B009204461146104689
+:1025D000F6F7B6FE0228C3D9074A0B49084840F26D
+:1025E0004B2306F050F9404080F311884FF0030070
+:1025F00002DFB5E7B435002074B10100F4A9010091
+:102600008CA701002D240100DCB10100F0B54C4E77
+:102610008BB0FAF7BDF8B368FF228DF80E209BB19E
+:1026200033688BB10DF10E00FAF7C0F8044658B1CB
+:1026300094F8203013F003050DF10E0006D0FAF7E0
+:10264000B5F804460028F3D10BB0F0BD05ABD6E9D0
+:102650000027E169E068009304ABB847074600280B
+:1026600062D0B36831682846984717F10B0F1AD02B
+:10267000483711D0334A3449344840F2DF2306F05A
+:1026800002F9404080F311884FF0030002DF03E0BD
+:1026900090F820309B0741D00DF10E00FAF786F834
+:1026A0000028F5D1D0E7FF230DF10F008DF80F3092
+:1026B000FAF77CF848BB3268059B00930992012326
+:1026C000002201933260D6E90101049B06AAFAF7C1
+:1026D00027F80028E0D01B4A1D491C4840F2DD23A2
+:1026E00006F0D1F8404080F311884FF0030002DF7C
+:1026F000D2E743F0020380F82030836998470DF158
+:102700000F00FAF753F80028D5D090F820309A0738
+:10271000F5D4C26831689142F1D1EAE7C168006836
+:10272000FFF7B4FE0BB0F0BD94F82030A269E16869
+:1027300043F0020384F8203020469047ACE700BF06
+:10274000B435002074B1010004B201008CA701006F
+:1027500000AA0100002208B511460A4B0120F5F736
+:10276000CFF900B908BD084A0849094840F2A32337
+:1027700006F089F8404080F311884FF0030002DF33
+:1027800008BD00BFB003002074B1010000AA010021
+:102790008CA7010010B5154804F062FF144B1860B7
+:1027A00000B3144B00249C6000F02CFA002818DBC6
+:1027B000224621460120F4F73DFC224621460B200B
+:1027C000F4F738FC224621461820F4F733FC0120A8
+:1027D000F4F7FEFB0B20F4F7FBFB1820F4F7F8FBF3
+:1027E000204610BD6FF0120010BD00BF10B20100F6
+:1027F000B0350020B4350020044A10B403461068F8
+:1028000084688AB21946236810BC1847B035002086
+:10281000084B1B689A6810B4546834B18AB2A44655
+:10282000014610BC1846002360476FF0220010BC20
+:10283000704700BFB0350020FFF7EABF00207047A7
+:1028400010B582B0049C009400240194FFF758FE58
+:1028500002B010BD10B582B0009090F82040C3695E
+:10286000026904F00104D0E905010194FFF748FE74
+:1028700008B1443001D102B010BD074A07490848E9
+:10288000E42306F000F8404080F311884FF0030085
+:1028900002DF02B010BD00BF74B1010014B201002C
+:1028A0008CA7010030B5044683B0002835D0264BF4
+:1028B0001A6882422BD0FF230DF107008DF80730F4
+:1028C000F9F774FF034640B91FE094420ED00DF1B2
+:1028D0000700F9F76BFF0346B8B193F82020920781
+:1028E000F5D4DA6818461146002CEED193F8202072
+:1028F0009D6942F0020283F82020A8470DF10700ED
+:10290000F9F754FF03460028E7D103B030BD9B68B8
+:102910006BB1214600209847CDE70B4A9368002B06
+:10292000C9D011680029C6D000209847C3E7074ADC
+:1029300007490848EE2305F0A6FF404080F31188C0
+:102940004FF0030002DFB6E7B435002074B1010098
+:1029500028B201008CA701000020704710B5044682
+:10296000F9F716FF3CB120B320681030F9F74CFF9F
+:1029700080B1002010BD1D4CA36843B32068002324
+:10298000A36023600028F1D000681030F9F73CFF05
+:102990000028EED1164A174917484FF49E7305F0E8
+:1029A00072FF404080F311884FF0030002DF0020E7
+:1029B00010BD0F4A1149104840F21F1305F063FF84
+:1029C000404080F311884FF0030002DFCCE7084A53
+:1029D0000B4909484FF4927305F055FF404080F3CE
+:1029E00011884FF0030002DFC8E700BFB4350020B4
+:1029F00074B1010054B201008CA7010030B2010093
+:102A000040B20100024B9868B0FA80F0400970476C
+:102A1000B43500206FF04700704700BFD0E90023B5
+:102A2000002A04DB9A4238BF1A4610467047806875
+:102A3000984238BF1846704710B51446F6F724FD83
+:102A40002146F6F723FD0330030204D4092894BF7E
+:102A50000020012010BD002010BD00BF262810B5A9
+:102A600004461CD0272812D0252808D00A281ED9B1
+:102A7000272821D80330400002F006F902E00220A6
+:102A800002F002F92046BDE8104002F003B95020E0
+:102A900002F0FAF82046BDE8104002F0FBB81A2018
+:102AA00002F0F2F82046BDE8104002F0F3B8023020
+:102AB000400002F0E9F8E5E7064A074907484FF405
+:102AC000C37305F0E0FE404080F311884FF003002F
+:102AD00002DFD7E774B101000CA801008CA7010048
+:102AE00002F046B902F050B908B502F081F9BDE82C
+:102AF000084002F04DBA00BF08B502F079F902F0C3
+:102B000047FABDE8084002F0F3B900BF08B502F08B
+:102B10006FF902F03DFA02F023FA02F04BFCBDE837
+:102B2000084002F0E5B900BF08B50146154802F0BB
+:102B300033F802F07DF950B102F0F2FA00F0A6F895
+:102B400000280CDBBDE808400020FFF707BF02F0BB
+:102B500037F902F0E5FA00F099F80028F2DA0A4AAB
+:102B60000A490B4840F2E91305F08DFE404080F31E
+:102B700011884FF0030002DF0020BDE80840FFF796
+:102B8000EDBE00BF2924010074B101005CB2010058
+:102B90008CA7010010B50446FFF7B8FF2046BDE83A
+:102BA0001040FFF7C1BF00BF01F1100005F0BEBA31
+:102BB00030B504468BB00D460122002104A807F071
+:102BC00038FA00230E4A03932046032369460192F4
+:102BD000029305F0C7FE002810DB4FF4004340F2DB
+:102BE000E7300021E3FB05014FF47A720023EEF792
+:102BF00087FA02460B4604A805F0BEFA0BB030BDBA
+:102C0000A92B010010B50120F3F724FA044901248F
+:102C100000238C60CB60BDE810404B6005F0A2BE85
+:102C2000CC3500200C4B1A780AB10020704710B543
+:102C300001201870F3F70EFA4FF4FA710446FFF70B
+:102C4000B7FF38B9204605F0D6FE02280CBF002099
+:102C50006FF0040010BD00BFA13B002008B50A4B77
+:102C6000BFF35B8F53E8002F511C43E8001000288E
+:102C7000F8D1BFF35B8F002A01DD002008BDF3F718
+:102C8000F1F9002008BD00BFC835002008B50D4B84
+:102C90001A68002A12DDBFF35B8F53E8002F511E24
+:102CA00043E800100028F8D1BFF35B8F012A01DD53
+:102CB000002008BDF3F7ECF9002008BD6FF04400D8
+:102CC00008BD00BFC835002010B50446FFF71EFF41
+:102CD00002F03CF92046BDE81040FFF725BF00BFD9
+:102CE00030B583B00446FFF7FFFE962002F060F98E
+:102CF00000231A461946184602F0D0F802F0BCF834
+:102D000002F02AF802F080F8E8B91E48214601F0E6
+:102D100043FFFFF757FB58BB02F05EFA0021044661
+:102D2000084602F033F800210546084602F02AF86A
+:102D30002C44C334201A02F007FA02F03FFA02F0E2
+:102D4000C7F803B030BD104A1049114840F2811352
+:102D500005F099FD404080F311884FF0030002DF39
+:102D60000848214601F018FFFFF72CFB0028D3D0BC
+:102D70000DF10700FFF790F901469DF8070002F0FA
+:102D8000DFFAC9E71932010068B20100B4B20100EC
+:102D90008CA70100037BC3F302132DE9F041002B44
+:102DA000044693FAA3F0B0FA80F008BF4FF0FF306A
+:102DB000451C53D0227B591E0B4063F3061222732D
+:102DC00005F12400FFF74AFEE27B217C8A42D3B260
+:102DD0003ED00133DBB2022B37D02725022215FB70
+:102DE0000325E373012704F10F0808EB05063046BD
+:102DF00001F0B8FF18F8053003F00F03022B45D09F
+:102E0000204694F8601010F85F2F9142D3B236D06C
+:102E10000133DBB2022B42D02722022112FB031224
+:102E200084F85F30104402300622B11C06F08AFAA2
+:102E300021461C4801F0B0FE962002F0B9F80020AF
+:102E400002F01EF83046BDE8F0811D460023C8E7B9
+:102E50002725022215FB03250027C4E7124A134940
+:102E6000134840F27A2305F00EFD404080F31188AC
+:102E70004FF0030002DF237BC3F302139AE7002F16
+:102E8000D6D0272303FB01000230CCE709482146B6
+:102E900001F082FE02F00EF83046BDE8F0811A46DD
+:102EA0000023BDE7E12C010068B20100C8B20100B7
+:102EB0008CA70100E5300100F0B5C568444B2C79C2
+:102EC00083B014F00104019353D1064601F084FE4F
+:102ED000204601F0D3FE2146204601F0A3FE224603
+:102EE0002521082001F002FF01A801F0E5FE394983
+:102EF00040F25B6001F0A6FF2B7BC3F3420262F35A
+:102F000006132B732846FFF745FFFFF75BFA18BB44
+:102F10006B7B9B074CD12F6834683846FFF77EFDEA
+:102F20000444726804F10901012002F04DF802F036
+:102F300045F92846F9F7D0FF811C2246C9B2384628
+:102F4000FFF77AFDF8B12448294601F025FE01F08B
+:102F500037FF002003B0F0BD687B10F0030018BFFE
+:102F60000120FFF78FF94178821C007801F0D2FF31
+:102F7000D1E7FFF78BFE00281CDB0020FFF7EEFCFB
+:102F8000002003B0F0BD2846FFF7E6FC0028E0D0A3
+:102F9000124A1349134840F21B1305F074FC4040D9
+:102FA00080F311884FF0030002DF002003B0F0BD72
+:102FB0000120D6E7094A0C490A48BE2305F063FC04
+:102FC000404080F311884FF0030002DFD5E700BFD7
+:102FD000D6BE898E55555500C92C010068B2010036
+:102FE00000AA01008CA701005CB20100C36870B5A3
+:102FF0001E680446F6F748FA05463046FFF70EFD10
+:1030000000232D1AC4E9005323812046BDE87040F7
+:10301000FFF752BF824208B511D0127BD20702D40B
+:103020006FF0470008BD144A1A60029A002313602B
+:10303000FFF714FE00280FDB6FF00A0008BDD37BFA
+:10304000272101FB0322537C03F00F03012B14BF44
+:103050006FF04700002008BD084A0949094840F2BE
+:10306000451305F010FC404080F311884FF0030039
+:1030700002DF6FF00A0008BDED2F010068B2010009
+:103080005CB201008CA7010010B5D8B10C46FFF767
+:10309000FDFD002804DB2046BDE81040FFF75EBCC4
+:1030A0000C4A0D490D4840F26B1305F0ECFB404013
+:1030B00080F311884FF0030002DF2046BDE8104086
+:1030C000FFF74CBC064801F067FDBDE8104001F079
+:1030D00077BE00BF68B201005CB201008CA701009E
+:1030E000C92C010010B50446FFF710FD237B03F047
+:1030F0007102012A05D1C3F3420262F3061323735E
+:10310000DBB213F0700F06D101F020FF2046BDE8BE
+:103110001040FFF709BD2046FFF73CFE01F04AFED4
+:10312000BDE8104002F04AB8002070470020704708
+:1031300010B582B00446FFF791FD002819DB134A51
+:103140001349144800940023FFF77AFB08B1443078
+:1031500001D102B010BD104A104911486B2305F08F
+:1031600092FB404080F311884FF0030002DF02B071
+:1031700010BD094A0B490A48682305F084FB40400A
+:1031800080F311884FF0030002DFD8E7B92E010069
+:10319000893001001530010068B20100D0B2010091
+:1031A0008CA701005CB201002DE9F843457B9DF836
+:1031B00020801746EA0789461E460AD5B8F1000F57
+:1031C00017D099F80030B7EBD31F19D00020BDE815
+:1031D000F883044611F8020B099AC0F38010FFF738
+:1031E00091F80028EDD1637BDB07EFD5B8F1000F34
+:1031F000E7D1099B1878FFF715F80028E1D1E5E73A
+:1032000009F108013046062206F08CF8B0FA80F089
+:103210004009BDE8F88300BF2DE9F04F87B00446B0
+:1032200001F0FCFD10F0FF0F0AD1FFF76FFCC04862
+:10323000214601F0B1FC01F0C3FD07B0BDE8F08FFD
+:1032400001F00CFE064601F093FE804601F09AFE66
+:1032500002F0BCF8074602F0A7F8824601F050FEE3
+:103260008146FFF753FC16F0FF0FE0D017F0FF0781
+:1032700040F08880FF208DF8170001F0FDFDE57B10
+:103280000646007811234FF0270A0AFB053500F0A7
+:103290000F0204EB050B032A5FFA88F80BF1020317
+:1032A00000F08580052AC2D17278222ABFD1625DE2
+:1032B00002F00F02012A00F0C580627B910766D5FB
+:1032C000B8F1000F00F0B480625D3078C2F3801175
+:1032D000B1EBD01FABD102F00F02012A06F10805B5
+:1032E00000F0DF8029461846062206F01BF8B0FAE7
+:1032F00080F0400900289AD0A368002B97D00420C2
+:10330000F9F7C0F9002892D08A48214601F044FC20
+:1033100001F056FD01F078FD00287BD119F0FF0F78
+:1033200072D1237943F00102DB0722715ED4F9F7F1
+:10333000C7F94FF6FF7305460A22C3803146027172
+:1033400024221C3005F0FEFFAC6001F0E3FE286192
+:1033500001F03CFF00210446084601F013FD241A49
+:103360006C61002F40D09DF81730AB76F9F7A8F9C3
+:103370002946E8602868F9F7BBF9F9F7C9F907B0F9
+:10338000BDE8F08F5FFA8AF0FEF7FAFE73E7C0F34C
+:1033900080100DF11702B11C0393FEF7B3FF039BDE
+:1033A000002891D1627B92077FF541AF88E7727860
+:1033B0000C2A7FF43CAF625D02F00F0101293FF45B
+:1033C00036AF0DF117010191CDF80080C2F38012E4
+:1033D000314620460393FFF7E7FE00286CD1307892
+:1033E000039B00F00F025DE7FF23BEE7524A5349FB
+:1033F00053484FF4447305F046FA404080F3118877
+:103400004FF0030002DF92E701F06CFDA36883F840
+:10341000A50086E7484A4B49494840F2023305F087
+:1034200032FA404080F311884FF0030002DF75E765
+:103430009DF817000393FEF7F5FE039B00287FF429
+:1034400043AFF4E606F10208C0F3801041460DF1E7
+:1034500017020393FEF756FF039B00283FF4E7AEE5
+:10346000625D3078C2F38011B1EBD01F7FF4DFAE24
+:1034700002F00F02012A06F1080A4FD05146184601
+:10348000062205F04FFF00287FF4D1AE9DF817000B
+:10349000FF2831D0A37BFF2B2ED0C51A684268418C
+:1034A00028E7062229461846039305F03BFF00282B
+:1034B0003FF422AF039B15E71D48214601F06CFB4A
+:1034C00001F0F8FC94F85F000AFB0040613001F065
+:1034D00049FC01F099FC00283FF4AFAE164A1949A7
+:1034E000174840F2C52305F0CEF9404080F311881B
+:1034F0004FF0030002DFA0E63378625DC3F3801370
+:10350000B3EBD21F7FF493AE41460BF108000622C5
+:1035100005F008FFB0FA80F04009EBE606225146BC
+:103520001846039305F0FEFE0028AFD0039BA5E7E5
+:10353000E5300100C92C010068B2010000AA0100B9
+:103540008CA70100B4B2010008B51946034801F088
+:1035500023FBBDE8084001F033BC00BF7D3A010009
+:10356000F0B5C468834B25798DB015F001050B9338
+:1035700040F08980A37D65F30003A375064601F042
+:103580002BFB284601F07AFB2946284601F04AFB2E
+:103590002A462521082001F0A9FB0120F9F772F83D
+:1035A0000546002800F0CB8005F11C0001F0D4FB9B
+:1035B0000BA801F081FB704940F25B6001F042FC16
+:1035C000A07DC0F341002530FFF748FA21466B4843
+:1035D00001F0E2FA962001F0EBFC00231A461946AE
+:1035E000184601F05BFCFEF7EDFE002835D1A37D07
+:1035F00013F0180F40F08A80276835683846FFF7C7
+:103600000DFA0544726805F10901002001F0DCFCA7
+:1036100001F0D4FD01F05CFC2046F9F781FE011DAC
+:10362000C9B238462A46FFF707FA0146002834D1C6
+:10363000A36A002B48D1A3683BB1514B0122022160
+:1036400000209E60F4F75CFA80BB2046FFF784F907
+:10365000002864D100200DB0F0BDA07DC0F3C000F3
+:10366000FEF710FE05460DF12B00FEF715FD6978FB
+:103670000746AA1C287801F04DFC9DF82B0039461E
+:1036800001F05EFEB8E7FFF701FB002864DB0020D5
+:10369000FFF764F900200DB0F0BD3A48214601F073
+:1036A0007BFA01F08DFB00200DB0F0BD364A3749A2
+:1036B000374840F2191305F0E6F8404080F31188CE
+:1036C0004FF0030002DFC0E74FF4827200930892CC
+:1036D000304B314A079305922B46CDE90300CDE9E3
+:1036E000010006940322F5F7BFFD30F00203A2D0DB
+:1036F000254A2A49264840F2051305F0C4F84040FF
+:1037000080F311884FF0030002DF94E70120FEF7F9
+:10371000B9FD4178821C007801F0FCFB6CE71A4A85
+:103720001F491B484FF48F7305F0ADF8404080F3FC
+:1037300011884FF0030002DF00200DB0F0BD124AE7
+:1037400018491348A92305F09EF8404080F31188DA
+:103750004FF0030002DF27E70B4A13490C488B2385
+:1037600005F091F8404080F311884FF0030002DF2C
+:103770008DE700BFD6BE898E5555550039440000EF
+:10378000C0030020B53A0100E4B2010028AA0100FC
+:103790008CA70100653901004935010060AB0100CB
+:1037A00000AA010030B301005CB2010030B583B063
+:1037B0000546FFF7ABF9962001F0FAFB0023184607
+:1037C0001A46194601F06AFB0120F8F75BFF044630
+:1037D000C0B104F11C0001F0BFFAFEF7F3FD38B9E7
+:1037E00001F076FB0E48294601F0D6F903B030BD52
+:1037F0000DF10700FEF750FC01469DF8070001F0AF
+:103800009FFDEDE7074A0849084840F2FB1305F021
+:103810003AF8404080F311884FF0030002DFD8E708
+:1038200039440000E4B2010030B301008CA701006C
+:1038300010B50446FFF7BAFFA37D6FF30003A3752D
+:1038400001F0B2FABDE8104001F0B8BC70B582B02A
+:103850000546FFF749F9962001F0AAFB0023184618
+:103860001A46194601F01AFB0120F8F70BFF04462F
+:1038700000283DD004F11C0001F06EFA01F0C4FAFA
+:10388000D8B9FEF79FFD48BB01F0A6FC0021044615
+:10389000084601F07BFA00210646084601F072FA5C
+:1038A0003444C334201A01F04FFC01F011FB1748D7
+:1038B000294601F071F902B070BD154A1549164844
+:1038C00040F2D11304F0DFFF404080F311884FF045
+:1038D000030002DFFEF776FD0028D5D00DF10700CA
+:1038E000FEF7DAFB01469DF8070001F029FDCBE762
+:1038F000074A0A49084840F2CD1304F0C4FF40408B
+:1039000080F311884FF0030002DFB3E73944000071
+:10391000E4B20100B4B201008CA7010030B3010091
+:10392000C36870B51E680446F5F7AEFD054630461F
+:10393000FFF774F800232D1AC4E9005323812046B1
+:10394000BDE87040FFF70CBE08B5FFF72FFFF5F795
+:103950009BFDC11C002001F0A3FBBDE8084001F065
+:103960002DBC00BF00B9704708B5074A0749084891
+:103970004FF4BD7304F087FF404080F311884FF08F
+:10398000030002DF08BD00BFE4B20100B0AC0100DB
+:103990008CA7010010B5D8B10C46FFF777F90028C5
+:1039A00004DB2046BDE81040FEF7D8BF0C4A0D49A5
+:1039B0000D484FF4B57304F066FF404080F3118862
+:1039C0004FF0030002DF2046BDE81040FEF7C6BFFF
+:1039D000064801F0E1F8BDE8104001F0F1B900BF80
+:1039E000E4B201005CB201008CA70100B53A01000D
+:1039F000824210B51BD114461B48114601F0CCF889
+:103A000001F0DEF9A37DC3F34100013000F00300B3
+:103A1000032807D060F34203A3752530FFF71EF893
+:103A2000002010BD6FF34203A3752520F6E70F4A6F
+:103A30001A60029A00231360FFF710F9002802DBD6
+:103A40006FF00A0010BD0A4A0A490B484FF4A073F0
+:103A500004F019FF404080F311884FF0030002DFAB
+:103A60006FF00A0010BD00BF493901002139010083
+:103A7000E4B201005CB201008CA7010038B5044635
+:103A8000FEF7C0FF00B138BD054601F05FFAA27D28
+:103A9000C2F34103013303F00303032B14BF63F3A9
+:103AA000420265F34202A2752046BDE83840FFF7A6
+:103AB0003BB800BF10B582B00446FFF727F80023DB
+:103AC0000093194618460322F5F73AFC01F078F9FD
+:103AD000204602B0BDE81040FFF7D0BFF8B507465A
+:103AE00003200E461546F8F7CDFDC8B10446F8F799
+:103AF000E7FD4FF6FF720423E28023715FB97F2058
+:103B0000207621462068A676E576F8F7F1FDF8F7ED
+:103B1000FFFD0020F8BD01F0E5F900F07F00EFE7C0
+:103B20006FF03600F8BD00BF0020704700207047DE
+:103B300010B582B00446FFF791F8002819DB134A4C
+:103B40001349144800940023FEF77AFE08B144306C
+:103B500001D102B010BD104A10491148702304F081
+:103B600092FE404080F311884FF0030002DF02B064
+:103B700010BD094A0B490A486D2304F084FE4040F9
+:103B800080F311884FF0030002DFD8E761350100B0
+:103B900095390100F1390100E4B20100D0B2010011
+:103BA0008CA701005CB20100F8B50546FEF7AEFF38
+:103BB000F8F71AFE0446002833D0214B2149224A47
+:103BC0001B8808781178A3800122A071E17122700E
+:103BD0001BB195F92130002B04DB2846BDE8F840E5
+:103BE000FEF7A2BF95F8493003F00703022B16D069
+:103BF000042B14BF28274FF4BC7701F0D3FA0646F4
+:103C000001F0D6FA6A6B361A0023C4E90327A660CE
+:103C100028466B63EB63BDE8F840FEF785BF1827C5
+:103C2000EBE70A4A0A490B4840F2332304F02BFE23
+:103C3000404080F311884FF0030002DFBDE700BF72
+:103C4000663B0020A33B0020A43B002038B30100CA
+:103C500040AB01008CA7010038B590F8623043F00A
+:103C6000040380F86230054601F002F9037800226F
+:103C7000012161F30103427004460370D5E9130189
+:103C8000F3F7D2FE2378003818BF012060F3041345
+:103C90002370204638BD00BF0020704700207047C9
+:103CA0000720704714207047014B33F8100070470D
+:103CB000A4B3010005480649064A10B40023064C87
+:103CC00003700B701370238010BC7047A23B002060
+:103CD000A33B0020A43B0020663B002010B5D0B1E0
+:103CE0000C46FEF7D3FF002804DB2046BDE8104059
+:103CF000FEF734BE0B4A0C490C487B2304F0C3FD8D
+:103D0000404080F311884FF0030002DF2046BDE8F9
+:103D10001040FEF723BE064800F03EFFBDE810400D
+:103D200001F04EB838B301005CB201008CA701006D
+:103D3000A93B0100F8B505460120F8F7A3FC0446AD
+:103D400050B395F84960B5F8427006F00706304662
+:103D5000002100F067FF95F8623072001B0704F144
+:103D60001C0442F001020ED5391DC9B2082000F032
+:103D7000BDFF2246314605F1630001F033FABDE88C
+:103D8000F84000F0E9BFF9B2082000F0AFFF20468C
+:103D9000BDE8F84000F0E0BF064A0749074840F296
+:103DA000A91304F070FD404080F311884FF0030028
+:103DB00002DFC6E738B3010030B301008CA7010071
+:103DC00038B50446FEF790FE962001F0F1F894F81D
+:103DD000482094F84900C2F3C00300F0070002F045
+:103DE0000702002101F05AF82046FFF7A3FF01F077
+:103DF0000BF8A0BB01F0F0F9054694F84900012149
+:103E000000F0070000F0C2FF94F8493003F0070308
+:103E10000544022B05F1A3051FD0042B14BF282352
+:103E20004FF4BC7394F84800C0F3C00100F00700E1
+:103E30001D4400F0A7FF281A01F086F90F4B1B88DC
+:103E40002BB994F92130002B01DB01F041F8214618
+:103E50000B48BDE8384000F09FBE1823E2E7094A4E
+:103E600009490A4840F2751304F00DFD404080F303
+:103E700011884FF0030002DFBCE700BF663B002063
+:103E8000913F010038B30100B4B201008CA70100DA
+:103E9000F8B50F4690F84810B0F8406001F00704FC
+:103EA0000546C1F3C001204600F0BCFE95F8623023
+:103EB0006200DB0642F00102F1B20DD50431C9B255
+:103EC000082000F013FF394605F1840001F0E2F903
+:103ED000BDE8F84000F046BF082000F007FF384674
+:103EE000BDE8F84000F03EBF2DE9F04390F86230A5
+:103EF0005B0783B088463ED4044601AAD0E913018B
+:103F0000F3F792FD814600283CD0019F94F8616050
+:103F100094F860300437BD1913B96B7884F86030B9
+:103F200026B1BA5D012161F30102BA559B1B6B708A
+:103F3000BB5D6FF30413BB552046FCF717FC6B7891
+:103F4000834204D96870BB5D43F01003BB55D9F8B8
+:103F50000020236D9A4203D0BB5D43F01003BB5594
+:103F60002B7800226FF347132B70AA70C8F800500B
+:103F700003B0BDE8F083FFF76FFEC8F8000003B0A0
+:103F8000BDE8F0832046FFF767FE0546E8E700BF7F
+:103F90002DE9F04F83B0044600F040FF10F0FF0F12
+:103FA0000AD1FEF7A9FDBD48214600F0F5FD00F05D
+:103FB00007FF03B0BDE8F08F00F050FFC5B200F07E
+:103FC0009FFF5FFA80F8FEF797FDB54A138801203E
+:103FD00001331380F8F756FB0646002800F0D7801F
+:103FE000EDB9B04A1778002F6BD094F86230013FDA
+:103FF000FFB201A920461770C3F38009FFF774FFD1
+:10400000002F40F03781A548214600F0C5FD94F906
+:104010002130002B80F2AD8000F04CFF66E094F878
+:104020006230327F03F00101C2F38000884200F069
+:10403000BE8094F9212081F0010161F30003002A80
+:1040400084F8623005DA94F8243043F0010384F8F0
+:10405000243094F8623013F0040A40F0E980D4E987
+:10406000130101AAF3F7E0FC8346002800F0F78073
+:10407000019F94F86190043707EB09035A7852B115
+:1040800094F86230D80606D5D4E92531013341F1E0
+:104090000001C4E9253194F860304A44D2B29A4212
+:1040A000C0F0E48000F02B81002594F92130002B32
+:1040B000C0F21881327FD10640F1188194F8623045
+:1040C00078E0012301A920461370FFF70DFF962029
+:1040D00000F06EFF94F8490000F0070000F0D0FEF9
+:1040E0007148214600F058FD01F068F894F862200C
+:1040F0000199C2F340030878C2F300029B0043EA2F
+:10410000C20320F00C0213430B702046FFF7C0FEE1
+:1041100000F07AFE00286ED101F044F8B0B1DDB1B4
+:10412000208A4FF6FF73984273D02946FCF72CF98A
+:10413000A7B9F8F7EDFAB8F1000F3FF43AAF00F085
+:10414000D1FE84F8A50003B0BDE8F08F01F01EF8A1
+:1041500001F022F8002DE3D1002FECD0F8F7B0FAEF
+:1041600002233371238A3068F3803146F8F7C0FAAE
+:10417000DFE700F025FE00F047FE002840F0A280B7
+:1041800094F8623069F3820384F86230C4E7474AE6
+:1041900047494848AA2304F076FB404080F3118841
+:1041A0004FF0030002DF002D3FF41BAF37E74FF065
+:1041B000000A5546C2F3C002C3F340018A425BD0F5
+:1041C000002738493C4A00200870C3F3800901A940
+:1041D000012320461370FFF787FEBAF1000F7FF42A
+:1041E00012AF337FDB063FF572AF019B5B78002B8C
+:1041F0003FF409AF6BE72D4A30492E4840F21513C2
+:1042000004F041FB404080F311884FF0030002DFCF
+:1042100082E7264A2A4927484FF4917304F033FB7A
+:10422000404080F311884FF0030002DF208A7CE7D2
+:104230006FF3820384F8623000F01AFE94F92130A3
+:10424000002B0CDB327F12F0100509D190F800A092
+:1042500094F862308AF0100ACAF3001AAAE7327F93
+:1042600094F862304FF0000A5546A3E784F86120C5
+:1042700000251AE72F462AE70320F8F703FA70B360
+:1042800094F8623083F0020384F86230737F33B3B2
+:1042900094F862301A0741D4012792E7A93B010044
+:1042A000663B0020A23B0020C13D010038B3010065
+:1042B00030B301008CA70100A33B0020B4B2010081
+:1042C0008CB301003C4A3D493D48DB2304F0DBFA56
+:1042D000404080F311884FF0030002DF50E794F86C
+:1042E00062306DE794F86230327F63E717F809A017
+:1042F00094F862308AF0100ACAF3001A5AE70022D2
+:10430000206DA4F8602004F14C01F3F795FB019DAA
+:104310002B68CBF80030C5F800B0C6E600F0E4FF2B
+:1043200000283BD001F002F830BBD4F87320D4F859
+:104330007730134304D1337F03F00303032B04D0FE
+:10434000204B02221A700027E6E600F095FD427825
+:104350001B2A0146F4D8033206F11C0004F0F2FFD8
+:10436000D4F87330D4F8772013F1FF3342F1FF32E1
+:10437000C4F87330C4F87720D4F87330D4F87720B9
+:104380001049013304F1730042F10002C4F87330A4
+:104390000127426094F862300F7012E7064A0A491A
+:1043A000074840F2D12304F06EFA404080F31188B0
+:1043B0004FF0030002DFB5E738B30100B4B20100EB
+:1043C0008CA70100A43B002084B30100704700BF0C
+:1043D0002DE9F041C46882B00546FFF76BFCE18A25
+:1043E000668B94F82130481E3144002280B26183EC
+:1043F0005906E282208304F11C0240F18B80304494
+:10440000618C80B203F03F03FCF7C0FE0746D4E99D
+:104410000C61E26AD4E90E0331448A4228BF0A469D
+:10442000034400266263E3632663A66300F0D4FBC3
+:10443000304600F023FC2046FFF77CFC04F1080026
+:1044400000F03AFC637BA27B217B1B0243EA024320
+:10445000194340F25B6000F0F5FC3846FEF7FEFAC7
+:104460002146414800F098FB962000F0A1FD94F809
+:10447000482094F84900C2F3C003314602F0070215
+:1044800000F0070000F00AFDD4F800802F684046D5
+:10449000FEF7C4FA07446A6807F10901304600F0E4
+:1044A00093FD054600F05EFE304600F075FE626B3F
+:1044B000E36B94F84900303203EB420300F007004D
+:1044C00001211D4400F060FC94F8492002F007022D
+:1044D000022A054435D0042A0CBF4FF4BC732823AC
+:1044E000104601211D4400F051FC284400F02CFE30
+:1044F00000F0EEFC217C05313A464046C9B2FEF799
+:104500009BFAA0B92046FEF727FAE0B9002002B0D6
+:10451000BDE8F08103F03F0694F8221000961346A0
+:10452000024604F12300FCF7F5FD07466FE70F484C
+:10453000214600F031FB00F043FC002002B0BDE852
+:10454000F0811823CCE70A4A0A490B48FE2304F0FD
+:104550009AF9404080F311884FF0030002DF0020F9
+:1045600002B0BDE8F08100BF913F0100952B010032
+:10457000B4B3010000AA01008CA7010030B583B0DC
+:10458000C4680546FEF76AFB002828DB2B89A16A70
+:10459000D4E90B2001339BB201FB0301E08A8A427C
+:1045A00028BF0A4603442263E382134A134914488E
+:1045B00000950023FEF744F908B1443001D103B05F
+:1045C00030BD104A104911485B2304F05CF94040AB
+:1045D00080F311884FF0030002DF03B030BD094AB9
+:1045E0000B490A48482304F04EF9404080F31188F3
+:1045F0004FF0030002DFC9E7D1430100DD3C0100B9
+:10460000152A0100B4B30100D0B201008CA701004B
+:104610005CB20100F0B5C46885B00546FFF74AFBFF
+:10462000E18A668B94F82130481E3144002280B222
+:1046300061835906E282208304F11C0261D5304473
+:10464000618C80B203F03F03FCF7A0FD064603A98E
+:104650002046FFF749FC94F862200398C2F3400318
+:104660000178C2F300029B0043EAC20321F00C026E
+:104670001343037000F0B0FA002000F0FFFA04F1D9
+:10468000080000F019FB637BA27B217B1B0243EA3D
+:104690000243194340F25B6000F0D4FB3046FEF762
+:1046A000DDF903992046FFF7F3FB2146254800F08A
+:1046B00073FA962000F07CFC94F8490000F00700A3
+:1046C00000F0DEFB27682E683846FEF7A7F906449F
+:1046D0006A6806F10901012000F076FC00F06EFD29
+:1046E000217C053132463846C9B2FEF7A5F9A8B19A
+:1046F0001548214600F050FA00F062FB002005B09A
+:10470000F0BD03F03F0694F82210009613460246CF
+:1047100004F12300FCF7FEFC064698E72046FEF76E
+:104720001BF90028EAD0094A09490A48D32304F0B2
+:10473000AAF8404080F311884FF0030002DF002008
+:1047400005B0F0BDC13D0100952B010000B4010092
+:1047500000AA01008CA7010030B583B0C5680446EB
+:10476000FEF77CFA00281EDB2389E88A144A1549E3
+:1047700001330344EB82144800940023FEF760F8F1
+:1047800008B1443001D103B030BD104A104911487E
+:10479000522304F078F8404080F311884FF0030072
+:1047A00002DF03B030BD094A0B490A48482304F030
+:1047B0006AF8404080F311884FF0030002DFD3E72E
+:1047C00015460100DD3C0100152A010000B401007E
+:1047D000D0B201008CA701005CB20100054B4FF480
+:1047E00080320021C3F80815C3F84423C3F804231A
+:1047F000704700BF00B00040054B1878421C1A708B
+:1048000018B9044B01221A6070470120704700BF9D
+:10481000A53B002000B0004010B50D4C207848B1F9
+:104820000138C0B2207018B90A4B01221A6010BDBD
+:10483000012010BD084A094909482E2304F023F835
+:10484000404080F311884FF0030002DF2078E7E753
+:10485000A53B002004B0004050B401009CB401000E
+:104860008CA70100014BD3F80405704700B000404D
+:10487000024B00F5A87043F82010704700B00040CC
+:10488000F0B4124B124D0126344600212C60C3F8BF
+:104890000405C3F80011C3F804111C6005E0D3F847
+:1048A000042132B9D3F804251AB1D3F80021002A23
+:1048B000F5D02E60D3F80421002AE7D1D3F804758F
+:1048C000002FE3D0F0BCC3F80425704700E000409F
+:1048D00004E0004070B58CB00E461546014610222B
+:1048E00068461C46F3F770F810220DEB02003146C3
+:1048F000F3F76AF86846FFF7C3FF25B12846102290
+:1049000008A9F3F761F824B12046102208A904F0A1
+:1049100019FD0CB070BD00BF2DE9F04FDFF84C82DF
+:10492000DFF83CA298F90070884B98F80060CAF84C
+:10493000603507F10B03DBB2DB00854CDFF830E2BA
+:104940004FEAC60903F1804303F5F83309F1804CBF
+:104950000CF5F83C04EB860B07F1080507F1100491
+:10496000CAF864C5CE44C3F810B5E4B2EDB20FFA8C
+:1049700086FCE8B1022A4FEA860A4DD04AF23C5939
+:1049800049F6C470042A18BF8146022900F0B1809C
+:10499000042940F0A4806F4809F5EB4909F1140996
+:1049A000A0FB09094FEA99196B48C3F8140540E0C8
+:1049B000E400ED0004F1804405F1804504F5F8348D
+:1049C00005F5F835654AC3F814254FF02809C4F8F1
+:1049D0001005C4F81405C5F810B5C5F814E54FEA7C
+:1049E0008C0C0CF1804C0CF5104C0136DCF8403589
+:1049F0004B458ABFDCF840350123A3EB0903CCF813
+:104A00004035574B06F001064FF49062C3F8042579
+:104A100088F80060BDE8F08F022900F0908004293A
+:104A200000F08A804FF031094B48C3F814054B075A
+:104A30006BD5022A7DD04AF2B8104AF23073042AAC
+:104A400014BF02461A460237FFB2B800DFF824B19D
+:104A500000F1804006F5A87300F510405BF82330A4
+:104A6000C0F8403546F2180B42F2B843042914BF8F
+:104A7000194659460A443749D0F84035A1FB02127D
+:104A8000B3EB921F88BFD0F840354FEA92118CBF2C
+:104A90005B1A0123E400C0F84035ED002C4B31498E
+:104AA0002F4A314804F1804404F5F83405F180457B
+:104AB00003EB870705F5F835274BC4F8107551440B
+:104AC000C4F814354FF48023C5F81075C5F814E503
+:104AD000C2F8A005C2F8A415C2F804357FE71D4846
+:104AE00009F51A5909F12C09A0FB09094FEA99198E
+:104AF0009AE7184A1849C3F8141509F5AB5909F192
+:104B00001C09A2FB09394FEA9919E400ED0004F1F0
+:104B1000804405F1804504F5F83405F5F8350023A7
+:104B2000C4F81035C4F81435C5F810B5C5F814E547
+:104B300055E749F6346286E74FF0460934E7064AFE
+:104B4000C3F814254FF02D09DFE700BF0C1100401A
+:104B500040910040D34D621000100040041000400E
+:104B600000F001404090004050110040A63B002062
+:104B700004F0014000900040044BD3F8103123B101
+:104B8000034A044B10681B68184770470010004028
+:104B900000380020FC37002038B5044601200D46BF
+:104BA000F2F726FA084A0948094B0A491560102508
+:104BB00002220460C1F804530120C3F88021BDE83B
+:104BC0003840F2F705BA00BF00380020FC3700205B
+:104BD00000E100E00010004038B50120F2F708FACB
+:104BE0000B4B0C490C4A0D4C0D480025C3F8FC5FDB
+:104BF0000125C3F8FC5F0B6823F0807323F00103E9
+:104C000043F080730B60C2F80048C2F8040838BD56
+:104C1000001000407417004000F00140000901003E
+:104C200000120200134A022813680FD0042812D081
+:104C300023F00043136003210F4BC3F81015D3F882
+:104C4000502642F00102C3F85026704723F000437B
+:104C500013600421F0E743F000431360136823F06E
+:104C6000FF0301F0010143F05C03C1F10601136091
+:104C7000E2E700BF3C17004000100040014BC3F8C2
+:104C80000C05704700100040014BC3F80805704741
+:104C900000100040074BC3F85405D3F8182522F044
+:104CA0000072C3F81825D3F8182542F00072C3F833
+:104CB00018257047001000400B4A0021012310B452
+:104CC000C2F82C15C2F83035C378C2F824354378C1
+:104CD000847801781B0443EA046343EA012310BC8F
+:104CE000C2F81C35704700BF00100040C2F34203F9
+:104CF000022B10B402F0010224D0042B14BF0024B4
+:104D00004FF0C7440AB144F48014C0F108031B04F7
+:104D100000F00F00204303F470230D4A10BC03433E
+:104D200043F48073C2F81435D2F818350948184096
+:104D3000C2F81805D2F81835194341F44031C2F8C9
+:104D4000181570474FF08074002ADED0DBE700BFF3
+:104D5000001000400000F8FE014BC3F80405704746
+:104D600000100040014BC3F80405704700100040DC
+:104D7000022804D0042814BF29202A2070472820A4
+:104D8000704700BF0120704729207047022809D0D2
+:104D9000042805D111F0010F14BF1E2019207047FF
+:104DA0000A20704705207047014B01221A607047A6
+:104DB00004100040014B01221A60704700100040AF
+:104DC00030B4084A0848094901234FF4906500248B
+:104DD000C2F808555360D360C0F8004230BC0B6085
+:104DE000704700BF00F0014000100040101000406C
+:104DF000044B0022C3F80021C3F80C21C3F8102192
+:104E0000704700BF00100040034BD3F8000100388A
+:104E100018BF0120704700BF00100040034BD3F8BB
+:104E20000C01003818BF0120704700BF001000407F
+:104E3000034BD3F85005B0FA80F04009704700BF2B
+:104E400000100040044B40F20312C3F83425C3F8AD
+:104E50003805C3F83C15704700100040034BD3F8E9
+:104E60000004003818BF0120704700BF0010004048
+:104E700000487047F436002000487047F83600209C
+:104E8000054B10B4002103240246C3F80042084633
+:104E900010BCFFF741BD00BF00100040044B10B430
+:104EA00003240146C3F80042012010BCFFF734BDC3
+:104EB000001000400449054B03204FF49062C1F8F4
+:104EC0000002C3F8082570470010004000F00140C0
+:104ED000034AD2F8003243F48873C2F800327047B4
+:104EE00000100040014BD3F8480570470010004007
+:104EF000024B0022C3F81C21704700BF0010004085
+:104F0000034BD3F81C01003818BF0120704700BFC5
+:104F10000010004030B40024A30003F1804303F5E7
+:104F200080531568C3F8005601349588C3F820569D
+:104F3000082C02F10602EFD1034B40EA012030BCFD
+:104F4000C3F84006704700BF00100040034AD2F883
+:104F5000403623F0FF03C2F840367047001000408F
+:104F6000024B0022C3F81421704700BF001000401C
+:104F7000034BD3F81401003818BF0120704700BF5D
+:104F800000100040014BD3F810047047001000409F
+:104F90000449054B054A4FF48020C1F84803C3F883
+:104FA0000825704700B0004000F001406020740EFA
+:104FB000034B044A1B7803F5A87342F8230070479B
+:104FC000A63B002000900040F0B4A2F574232A4DC7
+:104FD000A3F51073AB42044606D902F1E87202F55C
+:104FE000D43202F5A5720139244D254B25480126FE
+:104FF0002E600026C3F80465234DA0FB02020426A0
+:10500000C3F81065900C0226C3F808651F4AC3F860
+:105010004005C5F848154FF48021C5F844131C49D4
+:10502000C2F838152021C2F83C35C2F80415E4B1A5
+:105030004FF40013C2F808354FF48014134A154B8F
+:105040001549C2F8044500250124144E0C600427BC
+:10505000C3F80455C3F81075C3F808551C60C2F8AE
+:105060004865F0BCC2F84C1570474FF48013C2F885
+:1050700008354FF40014E1E7BFBDF07F0C8000401D
+:105080000080004083DE1B4300B0004000F0014080
+:1050900048B10040009000400C9000400C110040CE
+:1050A000F0B4164C164F174E174D184B01223A60AC
+:1050B0003260C4F840254FF48022C5F84815C5F881
+:1050C00044231349C3F838152022C3F83C45C3F8DC
+:1050D000042558B14FF40012C3F808254FF480138B
+:1050E0000A4A0120F0BCC2F8043570474FF4801220
+:1050F000C3F808254FF40013F2E700BF008000401A
+:10510000048000400C80004000B0004000F00140EE
+:1051100048B10040014BD3F84805704700B000404B
+:1051200010B40548054C0649064A01232360036074
+:1051300010BC0B601360704710800040048000407A
+:1051400004900040109000400449054BC1F844050C
+:105150004FF08862C3F80425704700BF008000400C
+:1051600000F00140054B06480649074AC3F84005D0
+:10517000C3F84415C3F80425704700BF00F0014090
+:10518000001100404080004040000004014BD3F873
+:105190004405704700800040014B1860704700BF15
+:1051A00004380020014B1868704700BF0438002005
+:1051B000014BD3F84005704700800040024B4FF090
+:1051C0000062C3F80425704700F00140014BD3F89A
+:1051D0004805704700800040014BD3F848057047F0
+:1051E00000800040F0B4214B02240025A142C3F806
+:1051F00000550646C3F8004535D0042931D11C4975
+:105200001C4C1D480325C3F81C55C1F878454FF4C4
+:1052100000531A4CC1F87C05C1F804351849134BEA
+:10522000D1F818151748124D174FC9B2C3F8181501
+:10523000C3F804450021C3F808654FF00074C3F8B3
+:105240000C05C3F810250122C3F81475C3F8001229
+:10525000C3F80411C3F80811C5F80445F0BC1A607E
+:1052600070470A4CDAE70A4CD8E700BF00F000406C
+:1052700000F00140501100400CF00040010002011C
+:1052800000100040F8360020E83500200100000141
+:105290000100010170B4104B104D114E0446002264
+:1052A0000220C3F80025C3F80005C3F80465C3F85D
+:1052B00008450C4EC3F80C150124C3F810552846B8
+:1052C000C3F81465C3F80042C3F80421C3F80821E9
+:1052D0001C6070BC704700BF00F00040F836002032
+:1052E00000000101E83500200E4A0223C2F8043311
+:1052F000D2F8043133B920BF40BF20BFD2F8043107
+:10530000002BF8D0074B084A02204FF40041C3F8A5
+:105310000803C2F88011D3F80801B0FA80F0400900
+:10532000704700BF00F0004000E100E0034BD3F8FD
+:105330000004003818BF0120704700BF00F0004093
+:10534000154B164A30B40324C3F80045C3F80405CE
+:10535000C3F80815D2F80405114D124C0138C3F8F2
+:10536000100500214020C3F81455C3F80011C3F8FC
+:105370000411C3F80811C2F86005D2F800324FF4E6
+:10538000000043F04003C2F80032C2F82811C4F80C
+:10539000040530BC704700BF00F000400010004022
+:1053A000E435002000F00140014BD3F800047047C1
+:1053B00000F000400349044A0023C1F82831C2F834
+:1053C000003570470010004000F00040084BD3F853
+:1053D000280160B103F56043D3F8000138B1D3F878
+:1053E000040120B1D3F80801B0FA80F040097047F9
+:1053F00000100040022910B514460BD00A4A0B4990
+:105400000B481F2303F03FFA404080F311884FF010
+:10541000030002DF0B201CB1BDE81040F1F7D8BD3E
+:10542000BDE81040F1F7E4BDA8B40100F8B40100F4
+:105430008CA7010029B10139012905D80B20F1F70A
+:10544000EBBD1820F1F7E8BD08B5074A0749084841
+:10545000372303F018FA404080F311884FF003001F
+:1054600002DF002008BD00BFA8B401000CA80100A5
+:105470008CA70100884213D028B9481E01288CBF90
+:10548000002001207047012806D159B1A1F1020086
+:10549000B0FA80F040097047022804D0002070471D
+:1054A00001207047704701298CBF00200120704700
+:1054B000012908B50FD002290DD091B10C4A0D4930
+:1054C0000D48682303F0DFF9404080F311884FF066
+:1054D000030002DF08BD094B4FF40062C3F800214E
+:1054E00008BD064B4FF08072C3F8002108BD00BF15
+:1054F000A8B401000CA801008CA7010000E100E0A5
+:10550000032810B5044604D8114B1C5D8CB120460D
+:1055100010BD104A104911482B2303F0B4F9404044
+:1055200080F311884FF0030002DF094B1C5D002C53
+:10553000EDD1084A0A4909482E2303F0A4F9404056
+:1055400080F311884FF0030002DF204610BD00BF3A
+:1055500088B5010008B5010058B501008CA701000D
+:1055600078B50100013810B51C46042855D8DFE88D
+:1055700000F0121A161E030004291ED0BA23284A6E
+:105580002849294803F07FF9404080F311884FF003
+:10559000030002DF10BD04291FD04E23EFE70429CA
+:1055A00013D07C23EBE703291FD06523E7E703290A
+:1055B0002BD0042921D0A223E1E71C4B02219C60BF
+:1055C0000320BDE81040F2F79BBA194B02219C6002
+:1055D0000120BDE81040F2F793BA164B02219C60FF
+:1055E0000020BDE81040F2F78BBA134B01219C60FC
+:1055F0000846BDE81040F2F783BA104B02219C60C8
+:105600000846BDE81040F2F77BBA0D4B01219C60C3
+:105610000220BDE81040F2F773BAC023AFE700BF25
+:1056200008B501000CA801008CA70100200400208F
+:10563000F0030020D0030020E0030020100400202D
+:105640000004002001460020FFF712B94FF08053FC
+:10565000D3F8A420013208D04FF08052D2F8A03005
+:1056600013F001030FD100207047D3F8A8304FF694
+:10567000FF729BB29342F6D04FF08052D2F8A03026
+:1056800013F00103EFD0D2F8A430190C10B5037059
+:105690000C0AC3F307238170C4704370D2F8A8309A
+:1056A0000371C3F3072363F03F034371D2F89030D3
+:1056B000013335D0D2F89430013331D0D2F898305C
+:1056C00001332DD0D2F89C30013329D0D2F890305C
+:1056D0008371190C0C0AC3F3072301724472C3715E
+:1056E000D2F894308372190C0C0AC3F307230173A8
+:1056F0004473C372D2F898308373190C0C0AC3F345
+:10570000072301744474C373D2F89C3083741A0C59
+:10571000110AC3F3072302754175C374012010BD3C
+:1057200010220021063003F038FE012010BD00BF1A
+:1057300010B510220C46002103F02FFE4FF08053CD
+:10574000D3F88020013234D0D3F88420013230D015
+:10575000D3F8882001322CD0D3F88C20013228D005
+:10576000D3F880202270110C080AC2F30722A1701E
+:10577000E0706270D3F884202271110C080AC2F321
+:105780000722A171E0716271D3F888202272110C96
+:10579000080AC2F30722A1726272E072D3F88C3059
+:1057A00023731A0C110AC3F30723A273E173637303
+:1057B00010BD20461022BDE81040002103F0EDBDD1
+:1057C0008379054A282101FB03235B6AC01A034B36
+:1057D000C0105843704700BF80050020ABAAAAAA9A
+:1057E00010B50A4A8379282404FB03230A681B6A3C
+:1057F0005C6823689A4294BF0A600B60FFF7E0FF81
+:10580000D4E9002302FB003010BD00BF800500205A
+:105810002DE9F347054601911046194616461F46E5
+:1058200004F0EBFC804689464FF02003EFF3118A29
+:1058300083F31188BFF36F8F6B8B002B54D02A8BAF
+:105840009A423DD900220023284602F0D9F80446A6
+:10585000002835D08AF31188BFF36F8F019B002B8E
+:1058600052D056EA070310D07B1C08BFB6F1FF3FA9
+:105870000BD002F025FFB8EB000669EB0107002E04
+:1058800077F10003BCBF00260027A379DFF89080E2
+:10589000282202FB038301A91B6A1B6832461D688C
+:1058A00020463B46A8470546206170BBA07900EB27
+:1058B0008000214608EBC00004F09FFA2C461FE050
+:1058C000688B431E6B838AF31188BFF36F8F2C8B19
+:1058D000241A686A182303FB04041148114B2D1A7B
+:1058E000ED105D43A571B9E78AF31188BFF36F8F9F
+:1058F00032463B46284602F083F804460028ADD1E4
+:10590000204602B0BDE8F087236100230122236016
+:10591000A280A381019A2369E281A360F0E700BF1E
+:1059200080050020CDCCCCCC2DE9F041174D0446AC
+:10593000002628270CB9BDE8F0812379D4F800802F
+:10594000013BDBB22371002BF5D1216959B1637999
+:105950009B0707D4A37907FB035320461B6A1B68E8
+:105960009B6898472661A079A66007FB00532660D4
+:10597000DB691BB1204698474446DBE700EB80001B
+:10598000214605EBC00004F038FAF5E78005002059
+:1059900008B5094B1A786AB901211970062005214A
+:1059A000F1F748FB0620F1F713FB044B4FF00042E0
+:1059B000C3F80423002008BDA73B0020006000407E
+:1059C0002B4BF0B544682B481340834241D00DD88F
+:1059D000062B15D005D89BB1022B3CD06FF01500DB
+:1059E00036E0B3F5801FF9D1012309E02248834254
+:1059F00033D0B3F5A00F32D0B3F5800FEED1022330
+:105A0000D00654BFC2F34016032682F48075970572
+:105A1000C2F34020C5F3002507D512F4006F676874
+:105A20001FD001228A40C7F80825227A134C012A88
+:105A300001F01F0140EA450218BF4FF0A04442EABE
+:105A4000032301F5E07143EA860344F82130002086
+:105A5000F0BD0723D4E70423D2E70523D0E70323CF
+:105A6000CEE7520542BF01228A40C7F80C25DCE789
+:105A70000600F00006001000020040000003005085
+:105A800000F01F024009084B012818BF4FF0A04347
+:105A900003EB8203D3F8002722F4403242EA0142AA
+:105AA000C3F80027704700BF00030050F8B50D464B
+:105AB0004168C768087A05F01F06B2F5A03F46EABC
+:105AC000401610D17009012806F01F016B4801F53E
+:105AD000E07118BF4FF0A04050F82110CC0707D557
+:105AE0006FF02200BDE0B2F5005FF96800F0AA8017
+:105AF000F8680121A94001437869F9600121A940B2
+:105B0000B2F5A03FBA690CBF08438843B3F5C02F74
+:105B10000CBF0A438A43BA613A697861B3F5802FB2
+:105B20000CBF114322EA0101554A3961D2F804132E
+:105B30000023C9B203F5A27052F82000C0F305207B
+:105B4000864240F0848021FA03F0C0077FD501210E
+:105B500099404C48BFF35B8FCC4350E800CF0CEA30
+:105B6000040C40E800CEBEF1000FF6D1BFF35B8F0E
+:105B70009B0003F1804303F5C043D3F8100520F0E8
+:105B80000100C3F81005C2F8081300213046FFF7E2
+:105B900077FFFB68EB4013F0010351D07B69EB40CA
+:105BA00013F001045ED0BB69EB40DB075FBF3969CE
+:105BB00021FA05F505F00105C5F10205314954BF8B
+:105BC000EDB203250022012707FA02F4BFF35B8F31
+:105BD00051E8000F40EA040341E8003CBCF1000F2B
+:105BE000F6D1BFF35B8FD04010F0010334D19100A8
+:105BF00001F1804101F5C0414032D1F8100520F497
+:105C00004F3020F440709200C1F81005360292B275
+:105C1000D1F8100506F47C5602F1804202F5C0422C
+:105C200046EA05460643C1F8106513601268D1F8CC
+:105C3000102542F00102C1F81025114AC2F80443B0
+:105C400018460EE00120A84021EA000154E7013384
+:105C5000082B7FF46FAF98E70132082AB4D16FF0B8
+:105C60001200F8BD3969E94001F00101C1F10301F9
+:105C70003046C9B2FFF704FF2046F2E700030050A8
+:105C80000060004070380020F7B50026CDE90066BE
+:105C9000264D2C684CB1264803F0F7FC00902548AF
+:105CA00003F0F3FC01902E602B68234D00220126A7
+:105CB0009446D5F8043306FA02F119421BD091003C
+:105CC00001F1804101F5C2410B68A3B102F5A27355
+:105CD00002AF55F82330C1F800C0C3F3403007EBE2
+:105CE0008000C3F3042350F8087C06FA03F33B4317
+:105CF00040F8083C0B680132082ADAD1009A1AB140
+:105D00000B490E4803F057FC019A1AB109490C4897
+:105D100003F051FC44B1064803F0E0FC054803B031
+:105D2000BDE8F04003F0DABC03B0F0BD7C61004098
+:105D3000A8040020B8040020006000403C38002087
+:105D400058380020F0B54B79012B29D0032B24D1F2
+:105D500010268B79032B20D1CC7924B1012C1CD1B6
+:105D600043681B79CBB10A7912B1022A15D10E22F0
+:105D70000B684568B3F5164F2D6865D02DD8B3F57F
+:105D8000165F64D016D8B3F5966F62D00AD8B3F513
+:105D9000967F61D0B3F5167F61D06FF0220052E09C
+:105DA0000026D6E7B3F5166F5CD0B3F5965FF4D155
+:105DB000374B3CE0B3F5E14F57D007D8B3F5615FFF
+:105DC00055D0B3F5964FE8D1324B30E047F6122765
+:105DD000BB42E2D14FF4000329E0B3F5613F48D064
+:105DE00013D8B3F5963F47D009D84DF6C027BB422C
+:105DF00044D0B3F5614FD0D14FF46B0317E0B3F546
+:105E0000E13FCAD14FF0EB7311E0B3F5612F38D009
+:105E100008D8214FBB4237D0B3F5E12FBDD14FF0A9
+:105E2000E86304E01D4FBB42B7D14FF08053C5F883
+:105E30002435C36803C9344322430433C5F86C25B1
+:105E400083E803000020F0BD4FF41D03EFE7144B7F
+:105E5000EDE74FF49E23EAE74FF4A033E7E74FF472
+:105E60001C33E4E74FF41D23E1E70E4BDFE70E4B55
+:105E7000DDE74FF06C73DAE70C4BD8E74FF46503BE
+:105E8000D5E74FF07063D2E74FF08063CFE700BFF4
+:105E900000B0130000A04E0090D0030040420F005D
+:105EA0000050270000C0750000F03A0000903A0151
+:105EB00000F01F0240090128044B02F5E07218BFF0
+:105EC0004FF0A043032143F8221070470003005015
+:105ED00000F01F0140090128044B4FF0010218BFD8
+:105EE0004FF0A0438A40C3F80825704700030050D4
+:105EF0004FF02003EFF3118283F31188BFF36F8F0C
+:105F0000084B196859B10849D1F8080500211960F2
+:105F10001B68C0B282F31188BFF36F8F70476FF0B8
+:105F20000A00F7E700D1004000D000402DE9F04121
+:105F3000044690F802C0C6784FF02003EFF31185B5
+:105F400083F31188BFF36F8F90F800E090F8018021
+:105F5000ACEB0E0C0CEA060C62458CBF1FFA8CF001
+:105F600010460EEB000232407346227085F3118812
+:105F7000BFF36F8F421E92B268B101328F18E518DD
+:105F800001336D7901F8015BB94203EA0603F6D1EA
+:105F900092B2ACEB020CC6450DD14FF02002EFF3EC
+:105FA000118382F31188BFF36F8F2278627083F3BD
+:105FB0001188BFF36F8F2379634522BF024B012203
+:105FC0001A60BDE8F08100BF00D00040DB432DE93E
+:105FD000F04713F001050E46144604D02148FFF7A0
+:105FE000A5FFBDE8F087002A33D04FF02003EFF380
+:105FF000118883F31188BFF36F8F0D20F1F70CF830
+:1060000007460D20F0F7F4FF88F31188BFF36F8F78
+:10601000154A15601368154B0121196014494FF496
+:106020000053C1F88031254691468A469846D9F8F2
+:10603000003083B1FFF75CFF031ECAF88081F6DBF6
+:10604000013DADB27355002DF1D117B10D20F0F720
+:10605000BFFF2046C5E7BFF34F8F20BF40BF20BF23
+:10606000E5E700BFA438002000D1004000D0004088
+:1060700000E100E02DE9F843134F0D46144607F107
+:10608000450807F1180914B92046BDE8F8834FF018
+:10609000FF334FF0FF32384602F06EF822462946B1
+:1060A0004046FFF743FF0646384602F03FF83EB948
+:1060B0004FF0FF324FF0FF33484602F05DF8E2E761
+:1060C000A41BA4B23544DEE77438002038B5194C5F
+:1060D00001221146204603F0ACFF0122002104F109
+:1060E000180003F0A6FF40F20743A4F848304FF031
+:1060F000706323630C2384F8343000250E4B84F83E
+:106100004550A4F84650D3F8042542F00102C3F8E4
+:1061100004250A4A012115601268C3F804132A46AF
+:1061200019600D20F0F786FF0D20F0F751FF28468B
+:1061300038BD00BF7438002000D0004000D10040BE
+:1061400010B5FFF7D5FE002820DB174B93F832205F
+:1061500093F8311093F83340511A34EA0101C0B278
+:106160000DD193F8472093F8461093F84840511A00
+:1061700034EA01010BD10D4B01221A600EE099188F
+:106180000132224081F8350083F8322010BD991881
+:106190000132224081F84A0083F847200448BDE8D4
+:1061A000104001F0C3BF00BF7438002004D000408D
+:1061B0008C380020BFF34F8F0549064BCA6802F4A4
+:1061C000E0621343CB60BFF34F8F00BFFDE700BF1A
+:1061D00000ED00E00400FA05034B1868A0F1080385
+:1061E00058425841704700BF30010010064B1B68F1
+:1061F000082B06D1054B1B68032B02D8044AD05C40
+:1062000070470020704700BF3001001034010010BB
+:1062100072B7010008B5FFF7DFFF40B14FF08043D0
+:106220000022C3F80C21C3F81021C3F83825FFF76A
+:10623000D3FF002846D04FF08052644BD2F80414AC
+:10624000C3F82015D2F80814C3F82415D2F80C149A
+:10625000C3F82815D2F81014C3F82C15D2F814146A
+:10626000C3F83015D2F81814C3F83415D2F81C143A
+:10627000C3F84015D2F82014C3F84415D2F82414FA
+:10628000C3F84815D2F82814C3F84C15D2F82C14CA
+:10629000C3F85015D2F83014C3F85415D2F834149A
+:1062A000C3F86015D2F83814C3F86415D2F83C145A
+:1062B000C3F86815D2F84014C3F86C15D2F844241A
+:1062C000C3F87025FFF792FF10B1414B414A1A60A5
+:1062D000FFF78CFF18B1404BFB22C3F81825FFF7DE
+:1062E00085FF48B13D493E4B0A681B6822F00F020A
+:1062F00003F00F0313430B60FFF778FF18B1394B1E
+:106300004FF400721A60FFF767FF48B14FF0804307
+:10631000D3F80024D10744BF6FF00102C3F8002472
+:106320004FF01023D3F80C22D2071ED52E4B01229A
+:10633000C3F80425D3F80024002AFBD04FF0102224
+:10634000D2F80C3223F00103C2F80C32264B1A4665
+:10635000D3F800140029FBD00021C3F80415D2F8AB
+:106360000034002BFBD0FFF725FFD3F80022002AD2
+:1063700003DBD3F80432002B23DA1B4B0122C3F8D2
+:106380000425D3F80024002AFBD04FF0102212215C
+:10639000C2F80012D3F80024002AFBD04FF01023DB
+:1063A0001222C3F80422104B1A46D3F80014002915
+:1063B000FBD00021C3F80415D2F80034002BFBD029
+:1063C000D1E70A4B0A4A1A6008BD00BF00C000406E
+:1063D0008C5600404881030000F00040E40E00406D
+:1063E000580200104096024000E00140580400208E
+:1063F0000090D003044B1A7922B9012218609A80C8
+:106400000248704702487047C83800200000AD0BB2
+:106410000C00AD0B08B50020F0F7FEFD08B9F0F751
+:10642000D7FD024B01221A7008BD00BFC83B0020F7
+:1064300010B1012820D070474FF08043D3F81824C2
+:10644000D3F8181411F4803F194611D002F003025A
+:10645000012A0DD1C3F818250C4B00221A601B68C5
+:106460004FF080430222C3F8042301229A60704750
+:106470000023C1F81835EFE7054B00221A601B68AE
+:106480004FF08043C3F804031860704704010040D4
+:106490000001004038B510B1012818D038BD4FF0C8
+:1064A00080430222C3F80823184A10601268184A71
+:1064B0000121116042F210751C46D4F81834DB0338
+:1064C000ECD5012003F09AFA013DF6D1E6E7114B35
+:1064D0004FF080440022C4F808031A601B680E4B7A
+:1064E00042F210751860D4F80C34D4F80C24D2039E
+:1064F00003F0010305D523B1012003F07FFA013D2C
+:10650000F1D1064B00225A71C8E700BF04010040D8
+:106510000C0000400001004004000040C83800208A
+:10652000164B1A6810B56AB100221A601B684FF04A
+:1065300080430122C3F80823114B587910B95A71CE
+:106540001B6898470F4B1A6872B100221A601B68CB
+:106550004FF08043D3F81824D3F81814920704D1CD
+:106560000122C3F818259A6010BD0222C3F808233F
+:10657000034BBDE810401B68012018470001004094
+:10658000C83800200401004010B5144C227812BB1A
+:10659000134A03781268082AC3F3400109D1114A4B
+:1065A0001268032A05D81048825C12B10F4A0120F4
+:1065B00010604FF0804203F00103C2F88015002004
+:1065C000C2F87835F0F728FD08B9F0F701FD01238E
+:1065D0000748237010BD0748FCE700BFC93B0020F7
+:1065E000300100103401001076B701003806004079
+:1065F0000000AD0B0C00AD0B4FF080434FF4607208
+:10660000C3F80823014B00221A607047D8380020D5
+:1066100008B5FFF7F1FF03680BB1014A136008BD2D
+:10662000D83800204FF0804310B5D3F804436207F8
+:1066300007D54FF4847003F0E3F910B11E4B1B68CB
+:106640009847A30608D54FF48A7003F0D9F918B11A
+:106650001A4B00201B689847600608D54FF48C70D1
+:1066600003F0CEF918B1154B01201B68984721069D
+:1066700008D54FF48E7003F0C3F918B1104B002009
+:106680001B689847E20508D54FF4907003F0B8F9FD
+:1066900018B10B4B01201B689847A3050AD54FF48E
+:1066A000927003F0ADF928B1054BBDE810401B68AE
+:1066B0000220184710BD00BFD0380020D438002079
+:1066C000D8380020034B1868A0F1080358425841FD
+:1066D000704700BF30010010074B1B68082B06D124
+:1066E000064B1B68032B04D8054AD05C704700207A
+:1066F00070470120704700BF3001001034010010C6
+:106700007AB70100054B10F0800FA3F1900208BF8B
+:10671000134600F00F0003EB001070474C3A0020C6
+:1067200008B5FFF7CFFF10B1034B00221A60034BEF
+:1067300000221A7008BD00BF1C7C0240CB3B002029
+:1067400007B5094A00231370084AADF805301370E5
+:106750008DF8073001238DF80430054B01A81B6824
+:10676000984703B05DF804FBCA3B0020CD3B0020F6
+:10677000DC3A002010B54FF02003EFF3118483F3CF
+:106780001188BFF36F8F084B084A1868032148B976
+:1067900049F2753018601160186084F31188BFF3F6
+:1067A0006F8F10BD1160F8E700EC064014ED064055
+:1067B00010B54FF02003EFF3118483F31188BFF37A
+:1067C0006F8F084B084A186848B949F2753119604B
+:1067D0001060196084F31188BFF36F8F10BD002320
+:1067E0001360F7E700EC064014ED0640F8B54D687D
+:1067F0000B4F954228BF15460C4606462A460968A7
+:10680000384602F09FFD60682268401BC6E90075AB
+:106810002A4460600038226018BF0120F8BD00BF24
+:10682000E03A0020F8B54C68944228BF144606466A
+:106830000D468CB1094F09682246384602F082FDA8
+:1068400037606B6874601B1B6B602B68201E2344D1
+:106850002B6018BF0120F8BD0460F2E7E03A002089
+:10686000214B13B5D3F80044C3F80044E105D3F835
+:1068700000340ED51D4B01221A700023ADF80530EF
+:106880008DF8073002238DF80430194B01A81B68DE
+:106890009847A2050DD5154A00231370ADF80530B1
+:1068A0008DF8073003238DF80430114B01A81B68C5
+:1068B0009847630516D50D4A13789BB100231370D2
+:1068C000094A0121C2F808159165583201A81268D9
+:1068D000ADF805308DF8073004238DF80430044BF3
+:1068E0001B68984702B010BD00700240CA3B0020F0
+:1068F000DC3A002007B500238DF804300B4BD3F8A9
+:106900002025ADF80620D3F8C034094A002B1368BF
+:106910000CBF4FF480714FF001210B431360054B06
+:1069200001A81B68984703B05DF804FB00700240A3
+:10693000B8390020DC3A0020074BBFF35B8F0246DA
+:1069400053E8000F00EA020143E8001CBCF1000F0D
+:10695000F6D1BFF35B8F70474839002008B5FFF7C9
+:10696000DFFE084B93F89E20032A05D1BDE80840BE
+:106970006FF00100FFF7E0BFD3F89030002BF5D0A7
+:1069800008BD00BFBC39002073B50D461F49012268
+:106990000E6802FA05F3334310F0800F1C4E0B60B3
+:1069A000044626D000F00F021A4B33F8123003F1E0
+:1069B000804303F51C331A6832B100221A60802824
+:1069C0001B6813D003F086F83168E94011F001012B
+:1069D0000AD106238DF804308DF806408DF8071093
+:1069E0000D4B01A81B68984702B070BDFFF7B6FFBA
+:1069F000EAE73168E940CB07F6D406238DF8043086
+:106A00008DF806008DF80720EAE700BFB8390020AE
+:106A100048390020ACB60100DC3A002008B5054B2F
+:106A20001A78104603F04AF8BDE8084001461046BF
+:106A3000FFF7AABFCD3B002007B5FFF771FE0F4B54
+:106A400093F81E21032A06D16FF48070FFF774FFBC
+:106A500003B05DF804FBD3F81031002BF8D16FF4CC
+:106A60008070FFF769FF06238DF804308823ADF8A6
+:106A70000630034B01A81B689847E9E7BC390020A2
+:106A8000DC3A002007B5FFF74BFE0C4B93F88E2045
+:106A9000032A10D0D3F880306BB96FF08070FFF705
+:106AA0004BFF06238DF804300823ADF80630044B65
+:106AB00001A81B68984703B05DF804FBBC390020AF
+:106AC000DC3A0020024A00231360024A1370704728
+:106AD000DC3A0020CC3B0020434B4FF4006210B561
+:106AE000C3F80024D3F80034FFF7F6FD08B1FFF730
+:106AF00041FEFFF7E7FDB0B14FF02003EFF3118443
+:106B000083F31188BFF36F8F384B394A1868C0215F
+:106B1000002863D149F2753018601160186084F361
+:106B20001188BFF36F8F304B0122C3F80025D3F8D3
+:106B30000025D3F800241205FBD54FF40062C3F8FA
+:106B40000024D3F80034FFF7BDFDA8B14FF02003B7
+:106B5000EFF3118483F31188BFF36F8F234B244A23
+:106B6000186800283CD149F275311960106019602D
+:106B700084F31188BFF36F8FFFF7AEFD30B1FFF7DD
+:106B800017FEFFF7A9FD08B1FFF7F4FDFFF79AFD27
+:106B900048B1184B40F2E3721A6040225A60BFF3CA
+:106BA0006F8FBFF34F8F104B00218022C3F81C253D
+:106BB000C3F83015104B40F2FF121A600F4B1960EA
+:106BC000FFF7AEFD0E4B19700E4B02221A70FFF745
+:106BD00083FD40B1BDE81040FFF7EABD11609EE7BC
+:106BE00000231360C4E710BD0070024000EC0640B3
+:106BF00014EC064000780240B839002048390020E3
+:106C0000CD3B0020CC3B00200A4B002210B51A706F
+:106C1000094A0A4B0A4C002818BF1346C4F804332B
+:106C20002720F0F7D5F90123C4F80435D4F804354A
+:106C300010BD00BFCA3B00200714E0010714C001CB
+:106C400000700240034B1878012894BF00200120F7
+:106C5000704700BFCC3B0020F8B51C4B1C7894BBA0
+:106C60001B4A106001221A702546274665F07F06F0
+:106C700015F0080FF6B20CBF40214FF400713046FA
+:106C800002F056FF3046FFF73DFD0135092D8773B1
+:106C900007608760EAD140210025204602F048FFC6
+:106CA0002046FFF72FFD0134E4B2092C85730560FF
+:106CB000856001D10748F8BD14F0080F14BF4FF4E8
+:106CC00000714021E9E70448F5E700BFCC3B002014
+:106CD000DC3A00200000AD0B0500AD0B2DE9F843B8
+:106CE00005464FF02003EFF3118783F31188BFF3BC
+:106CF0006F8F10F00F0403D1284B1B78834249D1CA
+:106D0000274BDFF8CC901A68D9F80060D24392B2D2
+:106D10002846324302F0D2FE4FF0010808FA00F88C
+:106D200012EA080F38D12846FFF7ECFC0C22544336
+:106D30002A0603462AD51B4A0868144400F060401E
+:106D40008A68B0F1005F02F001021AD1BAB9164A9E
+:106D50001A6007C984E8070000229A609A735C6091
+:106D6000124B134846EA08068022C9F80060C3F8AF
+:106D7000042187F31188BFF36F8FBDE8F8830D4AB4
+:106D8000E6E70AB90C4AE3E70C4AE1E70C4A144487
+:106D90000C4ADDE70C48ECE70C48EAE7CD3B002065
+:106DA000B83900204C390020719A010000E100E060
+:106DB0000000AD0B939A0100ED670100256801000A
+:106DC000DC380020439A01000A00AD0B0B00AD0B2C
+:106DD0004839002010F0080F074B06D0D3F8C00444
+:106DE00010F4803F18BF0020704700F00F0000F53E
+:106DF000947053F820007047007002402DE9F04F66
+:106E0000594B87B01A780193002A6AD1DFF8749140
+:106E1000DFF874B1CA46DBF80010D9F800603140E1
+:106E20005FD011F001265FD096FAA6F100295ED05E
+:106E3000B1FA81F10F295CD9A1F11004E4B2204626
+:106E4000FFF760FC01264FFA84F88E40F343B8F157
+:106E5000000F054600934FDA03688289416804A851
+:106E6000984700B92860FFF72DFC10B13F4B8222F4
+:106E70001A60019A009E049801231370DAF800301A
+:106E8000059A1E40AB68CAF800601344B8F1000FC1
+:106E9000AB6004F00801364B04F00F0455DA00290A
+:106EA0004BD0C3F8A006C3F8A426042303EB840345
+:106EB00003F1804303F51C3301221A601B682D4A3D
+:106EC0002D4B2E4913EA280838BF904638F8143065
+:106ED00003F1804303F51C331A6812B90A68002ACB
+:106EE000FAD007B0BDE8F08F91FAA1F19EE720211A
+:106EF000A2E741F08004A2E72046FFF76BFFAA89D2
+:106F000069682E680346074604A8B047049A002A19
+:106F1000A7D0059A9742A4D902270098AF73FFF72C
+:106F20000BFD06238DF80C30154B8DF80E401B68B9
+:106F30008DF80F7003A898476DE7142101FB043307
+:106F4000C3F80006C3F80426AFE729B1C3F8A007C9
+:106F5000C3F8A4272823A9E7142101FB0433C3F8AD
+:106F60000007C3F80427F5E7CB3B00201C7C024058
+:106F700000700240BEB60100ACB6010000710240D4
+:106F8000DC3A0020B83900204839002038B5114BD0
+:106F9000D3F86C44C3F86C4401251CB9BDE83840F3
+:106FA000FFF72CBF94FAA4F171B1B1FA81F30F2B62
+:106FB00019460BDDA1F11000C0B205FA01F324EA75
+:106FC0000304FFF7E1FCE8E72021F3E743F080004A
+:106FD000F3E700BF0070024037B50446FFF7A0FB9F
+:106FE0002046FFF78FFB837B032B0CD1204602F05A
+:106FF00065FD012303FA00F0C043FFF79DFCFFF796
+:10700000FDFE03B030BD0568002DF8D1204602F02A
+:1070100055FD012303FA00F0C043FFF78DFC062362
+:107020008DF80430044B8DF806401B688DF807502E
+:1070300001A89847E3E700BFDC3A0020024B40F488
+:107040008070C3F81805704700700240020713D41F
+:1070500000F00F0310F0800F084A0BBF03F5887390
+:1070600003F5847302EB830352F8230008BF5868CA
+:10707000431E58425841704700207047007002403C
+:10708000044BC3F80C0540F48070C3F80C05D3F82A
+:107090000C3570470070024010B5082200210446EC
+:1070A00002F07BF90E4BD3F880242270D3F88424AD
+:1070B0006270D3F88824D3F88C1442EA01226280EB
+:1070C000D3F89024D3F8941442EA0122A280D3F892
+:1070D0009824D3F89C3442EA0323E38010BD00BF18
+:1070E00000700240024B01221A601B68704700BF0B
+:1070F0004C70024013B5FFF713FB0E4B9A7B032A2B
+:1071000005D16FF48030FFF717FC02B010BD1C688A
+:107110006CB96FF48030FFF70FFC06238DF8043054
+:10712000054BADF806401B6801A89847EDE7FFF74F
+:10713000D9FFEAE7BC390020DC3A0020024B0122EB
+:107140001A601B68704700BF50700240024B01225A
+:107150001A601B68704700BF54700240014B1878DA
+:10716000704700BFCD3B002010B502464FF0200312
+:10717000EFF3118483F31188BFF36F8F02F09EFC4D
+:107180000D49012303FA00F00B6823EA00030B60AA
+:1071900012F008010AD102F00F039B0003F18043B3
+:1071A00003F51C33C3F8A014D3F8A03484F311887A
+:1071B000BFF36F8F10BD00BFB8390020F7B501468F
+:1071C0004FF02003EFF3118483F31188BFF36F8F27
+:1071D000FFF798FA0546084602F070FC11F0800FA0
+:1071E0002F4E1DD13268D343C34013F001030AD0A0
+:1071F0000846FFF7B9FF0323AB7384F31188BFF38D
+:107200006F8F03B0F0BD2B60012303FA00F022EA78
+:1072100000023260234A136823EA00001060EAE7A4
+:107220000B0711D48029204F204B2FD001F00F02E3
+:1072300002F2DA3252003A601A681F68D2B242F0A3
+:1072400002023A431A601B68DFF858C03768DCF85E
+:107250000020012303FA00F067EA02030342CCD0C6
+:1072600027EA0007002337602B600323AB738DF8F8
+:1072700007300F4B8DF8061010430622CCF80000A3
+:107280001B688DF8042001A89847B6E740F2B47255
+:107290003A601A681F68D2B242F00402D1E700BF18
+:1072A00048390020B83900200078024004780240B4
+:1072B000DC3A0020F7B5174B174CD3F880642368ED
+:1072C000164DDA43164B2F781B6892B238461A4394
+:1072D00002F0F4FB01238340134202D03846FFF74B
+:1072E0006DFF06F080066FF001102E70FFF724FB93
+:1072F000236843F0010323600023ADF805308DF8C7
+:10730000073005238DF80430064B01A81B68984709
+:1073100003B0F0BD00700240B8390020CD3B002022
+:1073200048390020DC3A00201B4BD3F8040300232B
+:107330002DE9F04101241D4670B9184F03F40006F1
+:1073400023F400044FF00108BCB9FFF757FD06B362
+:10735000BDE8F041FFF7AEBF114990FAA0F2B2FAD2
+:1073600082F29600314404FA02F20E6816B10D6002
+:107370000968134320EA0200DEE794FAA4F5B5FA9F
+:1073800085F557F8253008FA05F5984724EA0504ED
+:10739000DAE7BDE8F08100BF0070024030B60100BE
+:1073A00000710240F8B5134E134A34681268240C79
+:1073B0002404144301271CB940F2FF133360F8BDC5
+:1073C00094FAA4F585B1B5FA85F30F2B1D460DDDB2
+:1073D000A5F11000C0B2030701D4FFF7EFFE07FAD2
+:1073E00005F524EA0504E6E72025F1E743F08000EF
+:1073F000F1E700BFB8390020483900200C4B80224B
+:1074000010B52720C3F88421EFF706FE70B1094CB0
+:10741000FFF7C8FF0023C4F804352720D4F804354B
+:10742000EFF7E6FD4FF0FF33C4F8083310BD00BF9F
+:1074300000E100E00070024008B5FFF7DFFF084BF5
+:10744000D3F80423C3F808230022C3F80025D3F897
+:107450000035FFF765F9034B01221A7008BD00BF24
+:1074600000700240CC3B002038B54FF02003EFF312
+:10747000118583F31188BFF36F8F114B1B7803F0D5
+:10748000FF0433B9002485F31188BFF36F8F2046C2
+:1074900038BDFFF787FF0B4BD3F8002412F40072BE
+:1074A000F0D10121C3F82C15D3F82C15D3F8001412
+:1074B000890542BFC3F82C25D3F82C351446E2E7E2
+:1074C000CA3B00200070024010B50446FFF776FE6C
+:1074D000104A14F0800F04F00F004FF0010314BFA6
+:1074E000D2F81015D2F8141503FA00F36FEA03036B
+:1074F00015BF0B400B40C2F81035C2F8143514BF4D
+:10750000054B064B1A5C01239340024AC2F808332C
+:1075100010BD00BF007002407EB7010087B70100B8
+:1075200070B543B2002B234B234AA8BF1A4600F084
+:107530000F034FF00104D15C204A04FA01F1054623
+:10754000C2F804130CDAD2F81015D940C80706D4D3
+:10755000D2F8100504FA03F30343C2F8103570BDE6
+:10756000D2F81415D940C907F9D4D2F8146504FA31
+:1075700003F13143C2F81415002BF0D00307EED409
+:107580004FF02003EFF3118683F31188BFF36F8F61
+:10759000FFF7EAFD284602F091FA094A136804FA57
+:1075A00000F023EA0000106086F31188BFF36F8FAC
+:1075B000D5E700BF87B701007EB701000070024029
+:1075C00048390020030610B5044605D4FFF73EFDF8
+:1075D00010B12046FFF7C8FD014BC3F8184510BD98
+:1075E00000700240F8B5104B104F53F82050013096
+:1075F00053F82060AE4200D8F8BDD5E900342046EB
+:10760000984770B16CB1E41B24116109084A04F079
+:107610001F0452F82100012303FA04F4044342F842
+:1076200021400835E6E700BF94B601006804002059
+:10763000C8040020084BC01A0011084B420900F092
+:107640001F0053F82220012303FA00F010420CBF60
+:1076500018460020704700BF68040020C8040020BE
+:10766000114970B5114C05460E468C4204D10F4CA1
+:10767000B4420AD1002414E02046FFF7DBFF10B12A
+:107680002368AB420DD01034EFE72046FFF7D2FF5E
+:1076900008B91034ECE72168284601F037FE0028CD
+:1076A000F7D1204670BD00BFC80400206804002048
+:1076B00008B50B4D4FF02002EFF3118382F31188D0
+:1076C000BFF36F8F02F069FD012102280446D8BF85
+:1076D000084602F072FD2C62EFF728FDEAE700BFD2
+:1076E000203B00200248034A0021121A01F055BE37
+:1076F000A0060020D03B002008B50648064A0749EE
+:10770000121A01F01FFEBDE80840054A0549064867
+:1077100001F018BE000000209C060020A8B7010060
+:1077200000000000A8B701000000002008B5094BC8
+:10773000012202201A70FFF755FF0320FFF752FFC6
+:1077400000F0BAFDEDF7C2F9034A137B23F0010301
+:10775000137308BDCE3B0020F80900202DE98048B6
+:10776000DFF8F490A7B089F30888334D334E6B6986
+:10777000DFF8E8A0324F43F4007300246B61E0238C
+:1077800085F82230EC772C766C76AC766B6A43F415
+:10779000E0236B62EFF722FEEFF7C2FC4FF0FF33FE
+:1077A000AB62EB62274D40F20113ADF8243006AB1B
+:1077B000AB602046CDE92044FFF714FF0120FFF71E
+:1077C00011FF4FF0010B00F031FC1F4B6E621F499F
+:1077D00005934FF480625346CDE9034BCDE9014454
+:1077E0000094304600F00AFD737B804623F00403CA
+:1077F0003046737302F08DFB0F23CDE90243144929
+:10780000144B4FF4A072CDE904B4CDE900443846DE
+:1078100000F0F4FC7B7BEF6023F004037B7305F145
+:107820001803C5E906332C75C5F804905246414645
+:107830003046EFF75BFC00BF00ED00E0F8090020E8
+:1078400078090020203B002090B70100404A00202A
+:10785000604E0020B1760100E05700202D77010036
+:1078600038B5064C064DAC4201D3002038BDD4E9F2
+:107870000112204602F0B8F91434F4E7CC040020D9
+:10788000F40400202DE9F341044616461F464FF04C
+:107890002003EFF3118883F31188BFF36F8FC36860
+:1078A000324A6BB180689168884219D056EA070362
+:1078B00018D188F31188BFF36F8F6FF00F000CE0C1
+:1078C000916891F90E1021610133E3609368A36020
+:1078D00088F31188BFF36F8F002002B0BDE8F081FC
+:1078E0002169F0E790F90E3091F90E109942A8BF86
+:1078F000194621EAE17199422CDA00F053FB054662
+:10790000CDE900671A482246414600F009FB0028ED
+:10791000E3D04FF02003EFF3118683F31188BFF318
+:107920006F8F23682169A34207D033B193F90E30DA
+:107930009942A8BF194621EAE171A06890F90E307A
+:10794000994209D16DB10A48314600F0CFF86FF085
+:107950000A00C2E70025D3E700F024FB0028F2D19B
+:10796000F0E786F31188BFF36F8FF0E7203B00202C
+:10797000CF3B002038B583680446002B36D01E4A22
+:107980009268934235D1DA7B013ADA73C368012BEE
+:1079900005D0013BC36000F009F9002038BD4FF06D
+:1079A0002003EFF3118583F31188BFF36F8F016913
+:1079B000806890F90E30994201D000F0F3FA204629
+:1079C00002F002FBA06058B190F90E202261002263
+:1079D000C26702F09EFA0948294600F087F8DAE704
+:1079E000E06085F31188BFF36F8FD4E76FF0150067
+:1079F000D4E74FF0FF30D1E7203B0020CF3B002001
+:107A0000F7B516461F464FF02003EFF3118583F3B9
+:107A10001188BFF36F8F04689CB12368426823F01C
+:107A200003039442036008BF43600121204602F033
+:107A3000C7F9044685F31188BFF36F8F204603B062
+:107A4000F0BD56EA0703F5D000F10802CDE9006762
+:107A50002946104600F064FA0028EFD1014B9B68DC
+:107A60005C69EBE7203B002010B5084C23685BB154
+:107A7000EFF740FA03462068054A0344BDE810408A
+:107A80001361002102F099BB10BD00BF583B0020DC
+:107A9000203B0020F8B505460C464FF02003EFF3DD
+:107AA000118683F31188BFF36F8F0D4B00224FF4C3
+:107AB000004740F2E73000211A61E7FB05014FF46F
+:107AC0007A720023E9F71CFB064B1860064B1C601A
+:107AD000FFF7CAFF86F31188BFF36F8FF8BD00BFB1
+:107AE000203B0020583B0020543B002049B9EFF3D5
+:107AF000058030B9054B5A6A9B689A4201D0EFF76E
+:107B000013BA81F31188BFF36F8F7047203B0020B9
+:107B10004FF02003EFF3118183F31188BFF36F8FD0
+:107B2000044B9A68D37B013BD37381F31188BFF375
+:107B30006F8F7047203B0020094B03F128028242DF
+:107B400005D19B688B4202D14B7BDB0606D1D1E984
+:107B5000003213605A600023C1E90033704700BF50
+:107B6000203B002070B5104C064604F1280002F0BE
+:107B7000C6F9A368597B0546880644BF41F0080151
+:107B8000597305B9E5684EB95A7BD20606D1AA6980
+:107B900022B9DA897F2A01D9636270BDAB4201D074
+:107BA000FFF762FF6562F8E7203B002010B54FF059
+:107BB0002003EFF3118483F31188BFF36F8F084B19
+:107BC0009A68D37B0133D3730020FFF7CBFF84F394
+:107BD0001188BFF36F8FBDE8104002F064B900BF99
+:107BE000203B002070B4437BDB062AD1836943BB72
+:107BF000154A114651F8284F8C4218BF2346002BD6
+:107C0000D46A38BF0023B3B190F90E6093F90E50D7
+:107C1000AE4203DBA3420ED01B68F4E75A68C0E90A
+:107C2000003210605860437B63F07F03437370BC85
+:107C30000020FFF797BFC0E90014D36A1860D06234
+:107C4000F1E770BC704700BF203B002010B54FF03B
+:107C50002002EFF3118482F31188BFF36F8F427B10
+:107C6000510704D484F31188BFF36F8F10BD22F045
+:107C700004024273FFF7B6FF21460248BDE81040F8
+:107C8000FFF734BFCF3B002070B590F90D30002BCB
+:107C9000014602DA1748FFF74FFF174A1046D46A29
+:107CA00050F8283F834208BF0023002B38BF002331
+:107CB000D3B191F90E6093F90E50AE4203DBA342AB
+:107CC00012D01B68F4E75868C1E9003001605960C0
+:107CD0004B7B906863F07F034B73431A5842BDE8B7
+:107CE00070405841FFF73EBFC1E90004D36A1960F4
+:107CF000D162EDE7483B0020203B002070B50146F3
+:107D00004FF02003EFF3118483F31188BFF36F8FDB
+:107D1000164B174A98681568A8421D4606D1FFF70A
+:107D2000A3FE84F31188BFF36F8F70BD0026166029
+:107D3000104A1268BAB1C2897F2A14D8427BD2068F
+:107D400011D10D4A90F90E60126896420BDB0B4A76
+:107D5000904208D01A698A4202DCFFF795FFDEE7FD
+:107D6000521A1A61DDE700232B61DAE7203B00207D
+:107D7000503B0020583B0020543B00207809002055
+:107D800070B50446183002F0F2F94FF02003EFF31B
+:107D9000118683F31188BFF36F8F94F90D30002B98
+:107DA00007DA0F482146FFF7C7FE637B03F07F0326
+:107DB00063730C4D637BA86843F010036373031B6C
+:107DC00058425841FFF7CEFE86F31188BFF36F8FFC
+:107DD000AB68A34203D1BDE8704002F064B870BD47
+:107DE000483B0020203B0020036E2DE9F041044673
+:107DF00003B1984704F1180002F0B9F94FF02003DD
+:107E0000EFF3118683F31188BFF36F8F637BD8067E
+:107E100023D1A2690ABB190607D51F482146FFF7DF
+:107E20008BFE637B03F07F0363731C4B9868021B1C
+:107E300050425041FFF796FE637B43F008036373A3
+:107E400004F130080027256B454500D095B986F32D
+:107E50001188BFF36F8FBDE8F0819B07ECD5A06858
+:107E60002146FFF769FE637B23F00203637300235F
+:107E7000A360E1E705F1180002F079F9A868294646
+:107E8000FFF75AFE6B7BAF6023F002036B73EF6763
+:107E90002846FFF7A7FED6E7483B0020203B0020FE
+:107EA00008B590F90D30002B014606DA0748FFF7B8
+:107EB00043FE4B7B03F07F034B73054B9868431ADB
+:107EC00058425841BDE80840FFF74CBE483B0020EF
+:107ED000203B00202DE9F041064614461D464FF098
+:107EE0002003EFF3118783F31188BFF36F8F02F044
+:107EF00040F887F31188BFF36F8F6B1C08BFB4F194
+:107F0000FF3F08D022462B4606F118000349BDE882
+:107F1000F04100F0E1BABDE8F08100BF339F0100FD
+:107F200010B5074B9868074B0C4618601146DDE901
+:107F30000223FFF7CFFF2046BDE81040EEF7F4BF65
+:107F4000203B0020503B0020F8B5054602F04FF9D9
+:107F50002C184FF02003EFF3118783F31188BFF340
+:107F60006F8F0D4E0D4BB0681860FFF799FFB0682A
+:107F70000B492A46EB17183000F0AEFAB268537B73
+:107F800043F0100353733846EEF7CEFF02F02FF99B
+:107F9000201A20EAE070F8BD203B0020503B002072
+:107FA000339F01002DE9F04104464FF02003EFF329
+:107FB000118883F31188BFF36F8F437BDB064EB2CA
+:107FC0002ED1856965BB184F214607F12800FFF7C0
+:107FD000B3FDBB6AFA6AA673834218BF1D46002D23
+:107FE00038BF0025B5B195F90E10B14203DCAA42A5
+:107FF00010D02D68F6E76A68C4E9005214606C601E
+:108000000120FFF7AFFD012088F31188BFF36F8FC8
+:10801000BDE8F081C4E90002FB6A1C60FC62EFE786
+:10802000A6730020F0E700BF203B0020044B002196
+:1080300003F12802C3E90A220846FFF72BBD00BF5F
+:10804000203B0020F8B5244C244BA2689A4230D043
+:108050004FF02003EFF3118583F31188BFF36F8F87
+:10806000A16804F12800FFF767FDA36AA268E16A2E
+:10807000834208BF0023002B38BF00232BB392F9A3
+:108080000E7093F90E60B74203DB8B421DD01B6864
+:10809000F4E75968C2E900310A605A60537B63F023
+:1080A0007F0353730120FFF75DFD85F31188BFF354
+:1080B0006F8F4FF02003EFF3118083F31188BFF32C
+:1080C0006F8FBDE8F840EEF72FBFC2E90001E36A09
+:1080D0001A60E262E2E700BF203B0020780900203E
+:1080E0000B46013308BFB0F1FF3F10B506D10B4B73
+:1080F0009868FFF745FE4FF0FF3010BD044648B9C1
+:10810000FFF7A0FF4FF47A7084FB0034D80B40EAED
+:108110004440F2E7FFF718FF0446F3E7203B002056
+:10812000014B9868704700BF203B002038B50446DB
+:108130004FF02003EFF3118583F31188BFF36F8FA6
+:1081400001F042FF48B10022C26701F0E2FE294679
+:108150000848BDE83840FFF7C9BCD4E902329A426A
+:1081600018BF0133A360022104F1100002F06FF97F
+:10817000EDE700BFCF3B002037B514461D464FF05A
+:108180002003EFF3118183F31188BFF36F8F8368AE
+:1081900043B1013B836081F31188BFF36F8F0020EF
+:1081A00003B030BD54EA050306D181F31188BFF353
+:1081B0006F8F6FF00F00F3E70246CDE900450248EC
+:1081C000FFF7AEFEECE700BFCF3B002010B5084C38
+:1081D00008494FF0FF334FF48062204600F0CAF8A0
+:1081E000054904F1180001F03CFF002010BD00BF5C
+:1081F000780A0020E057002095B701002DE9FF41E3
+:1082000000F13005C0E90C550E9D0573042545733A
+:108210000F460D9D8573D61D00250C9AC57326F05B
+:1082200007062037C0E90655C0E91A76056706F14A
+:10823000200802920B9A019288440A9A00924246C0
+:108240000446EEF71DFF054B9B68C4E9175503B1C3
+:108250005B6F6367404604B0BDE8F081203B0020BF
+:10826000F0B587B000250595109D04950F9D0395E9
+:108270000E9D0295DDE912670D9D01950C9D0095FF
+:108280000446FFF7BBFF7B1C08BFB6F1FF3F05D0DC
+:1082900056EA070305D12046FFF7D8FC204607B071
+:1082A000F0BD044932463B4604F1180000F014F9D1
+:1082B000F4E700BF339F01002DE9F0472A4E2B4D14
+:1082C00086B0B046B54205F1300410D3FFF720FC6C
+:1082D000264CDFF89CA04FF4004940F2E736002717
+:1082E000444521D306B0BDE8F047FFF75FBC54F822
+:1082F000043C059354F8103C049354F8143C039345
+:1083000054F8183C029354F81C3C019354F8203C58
+:10831000009354E90A2354E90C01FFF76FFF54F866
+:10832000303CDD652546CDE7636A5A1C0DD023EA53
+:10833000E37330463946C9FB0301B94208BFB04276
+:10834000256804D12846FFF781FC3034C8E74FF494
+:108350007A720023E8F7D4FE02460B4605F11800B6
+:10836000514600F0B9F8F0E7CC040020CC0400201E
+:10837000339F01002DE9F041044688B00D461646B2
+:108380001F4601F029FD04F1180800220023CDE961
+:108390000623CDE90372CDE90122074B0094324652
+:1083A00029464046FFF75CFF0449404608B0BDE857
+:1083B000F04101F056BE00BFB58A01009EB7010032
+:1083C0002DE9F84306460D46904699464FF02003A6
+:1083D000EFF3118783F31188BFF36F8F8B6A7BB143
+:1083E000834228D1284601F05CFE10F1450F044677
+:1083F00008D0002807DA87F31188BFF36F8F0FE0EA
+:108400000028EFD0002458EA0903AE620BD187F3AD
+:108410001188BFF36F8F2946304601F025FE0024F6
+:108420002046BDE8F883054942464B4605F1100059
+:1084300000F052F8DFE76FF02F04DCE799A00100AD
+:10844000034B1B680BB9EEF755BD0020704700BF0A
+:108450005C3B002030B5036868B10A4A526890421C
+:1084600009D043B1D3E90421D0E90445121945EB01
+:108470000101C3E90421426813605A600023C0E986
+:10848000003330BD5C04002038B5114B1C689C42A1
+:1084900008BF0024FFF7D4FF0546ACB1D4E90401BE
+:1084A000401B61EBE571B0F1004F71F100030BDA95
+:1084B000002871F1000300DA0020064B1B6913B19C
+:1084C0009842A8BF184638BD6FF00040F5E700BFDE
+:1084D0005C040020203B00202DE9F74F0191194654
+:1084E0004B1C08BFB2F1FF3F82466CD0541C6FF0AA
+:1084F000010341F100054FF0FF3BB3EB04086BEBC8
+:108500000509B8F1000F79F100030FDBFFF798FFC1
+:10851000334AD2E9001C6FF001035B1A6BEB0C02CB
+:108520001E1B62EB0507341A67EBE075019BCAF866
+:1085300008304FF02003EFF3118683F31188BFF367
+:108540006F8FFFF77DFF012C75F10003254BB8BF3E
+:1085500001241A68B8BF0025241845EBE0759A423B
+:10856000CAE9044501D05F6852B95A68CAF80420C4
+:108570005A68CAF80030C2F800A0C3F804A014E09A
+:10858000D2E90489DAE90445444575EB09011DDAAD
+:10859000B8EB040069EB0501C2E904015168CAE9BE
+:1085A0000021C1F800A0C2F804A01A689A4206D0BF
+:1085B000924504D1FFF768FF0021EEF739FC86F3FE
+:1085C0001188BFF36F8F03B0BDE8F08FB4EB0800E4
+:1085D00065EB0901BA42CAE90401C6D01268C3E7D3
+:1085E000100B00205C0400202DE9F74F0646FFF732
+:1085F00085FB4FF02003EFF3118483F31188BFF361
+:108600006F8F2C4DDFF8B0A0DFF8B0B02E60514670
+:10861000D5F800C0DBF800006246D3175845DAE908
+:108620000089CDE900230DD060B1D0E90467B445DD
+:10863000BB411EDA009BB6EB030C019B67EB030604
+:10864000C0E904C6009B13EB0802019B4FF0000633
+:1086500043EB0903C1E900232E60FFF715FF314604
+:10866000EEF7E6FB84F31188BFF36F8F03B0BDE82C
+:10867000F08F18EB06084FF000024FF0000349EBB3
+:10868000E679C0E90423ACEB0606CAE900892E604E
+:10869000FFF7E0FE84F31188BFF36F8F836898477C
+:1086A0004FF02003EFF3118483F31188BFF36F8F32
+:1086B0000149ADE75C3B0020100B00205C0400206A
+:1086C00010B54FF02003EFF3118483F31188BFF34B
+:1086D0006F8FEEF70FFC064BD3E90023121843F11E
+:1086E000000384F31188BFF36F8F1046194610BD45
+:1086F000100B00202DE9F04389B01F4601238DF8AF
+:108700001430294B9B680693284B079352EA0703C2
+:1087100016460CBF0123002305AA054601F036FECC
+:1087200080464FF02003EFF3118983F31188BFF3E4
+:108730006F8F9DF8143003F0FF0463B901464A4679
+:10874000284601F083FD89F31188BFF36F8F20461F
+:1087500009B0BDE8F08300238DF8143056EA070312
+:1087600006D189F31188BFF36F8F6FF00A04EEE72B
+:1087700003AACDE9006749460D48CDE90322FFF77A
+:10878000CFFB04464FF02003EFF3118683F31188EB
+:10879000BFF36F8F32464146284601F057FD86F3FE
+:1087A0001188BFF36F8FD2E7203B0020D9A20100D0
+:1087B000CF3B002038B503464FF02002EFF3118580
+:1087C00082F31188BFF36F8FC1600121816000685F
+:1087D000834206D185F31188BFF36F8F00242046B2
+:1087E00038BDD0E9003213605A600023C0E900337D
+:1087F00001F057FD294604460148FFF777F9EEE7F7
+:10880000CF3B002010B5044601F023FC40B9054BD6
+:108810009B68586F20B12146BDE8104001F027BE8B
+:10882000002010BD203B0020034640B1426802F00A
+:108830000302022A06D0032A04D0012A05D06FF0D1
+:10884000150070471A68002AF9D000209860704718
+:10885000426802F00302022A10B5034681600AD082
+:10886000032A0BD10468002000225A6008B1FFF7E8
+:10887000A1FF204610BD00680024F5E70024204633
+:10888000F2E7002070470FB407B504A951F8040BB4
+:108890000191ECF7ADFA03B05DF804EB04B070475A
+:1088A000038B13F0070305D10368002B0CBF0020D6
+:1088B00003207047022B05D1438B002B14BF0020EF
+:1088C00004207047012B05D10368002B0CBF00204A
+:1088D00005207047002070472DE9F0410D460746FE
+:1088E0001946281D90461E46FFF7B2FF044638B1D0
+:1088F0003346424629463846A446BDE8F041604723
+:10890000BDE8F08110B44FF02004EFF3118284F33E
+:108910001188BFF36F8F416110BC0121ECF776BA6B
+:1089200010B50C4640B139B1081DFFF77DFF28B9DD
+:10893000A36833F0030301D06FF0150010BD38B504
+:108940000C46054658B151B10B6843B14B6833B181
+:108950001C22002100F021FD2C61002038BD6FF0A9
+:108960001500FBE770B504460E46FFF7D9FF051E5C
+:1089700031DB4FF02003EFF3118183F31188BFF354
+:108980006F8F638B208B4FF6FF75AB4200F00702B1
+:108990002ED0022A0ED1013363831546012381F3C1
+:1089A0001188BFF36F8FB3B1002331462046FFF724
+:1089B00093FF10E0830701D0062A0ED10023336015
+:1089C000636893B9C4E90066154662B90A46204651
+:1089D0000221ECF71BFA284670BD052A0CBF6FF088
+:1089E00022056FF004050023D9E71E606660EBE7FF
+:1089F0006FF00A05F7E710B54FF02003EFF311828F
+:108A000083F31188BFF36F8F048B04F00704022CEB
+:108A10000AD0012C0CBF6FF004006FF0220082F32B
+:108A20001188BFF36F8F08E0438B013B9BB24383F8
+:108A300023B92146ECF7EAF9204610BD2046EEE7BF
+:108A400030B550B349B34FF02003EFF3118583F3F2
+:108A50001188BFF36F8F0368002213B96FF04400D1
+:108A60000DE0994216D1038B0C686AB94268046024
+:108A7000914200D1446000220A6003F0070085F3B0
+:108A80001188BFF36F8F30BD14604468A14208BFE6
+:108A90004260F0E71A461B68DFE76FF01500F2E767
+:108AA000044608B5084611461A46A047FFF738FBAA
+:108AB000EEF7B6FC10B504464FF0FF334FF0FF322F
+:108AC0002046FEF79DFF03460028F5D00833426894
+:108AD000BFF35B8F53E8001F21F0010C43E800CE89
+:108AE000BEF1000FF6D1BFF35B8FCB0700D59047E7
+:108AF000FFF7A8FAE0E7836800EBC101B3F5004F88
+:108B00002CBF51F8220031F81200704700EBC10170
+:108B10008068B0F5004F2CBF41F8223021F81230A8
+:108B2000704708B50122FFF7E6FF400808BD8368DB
+:108B3000B3F5004F00EBC10108D34B681AB143F005
+:108B400001034B60704723F00103FAE74B881AB129
+:108B500043F001034B80704723F00103FAE7530011
+:108B60000122FFF7D3BF80680131B0F5004F2CBF61
+:108B700002200120081AB0FA80F0C0F11F007047EF
+:108B80002DE9F041164604460F46FFF7CAFF31466D
+:108B900005462046FFF7C5FF05442A4639462046CC
+:108BA000FFF7DDFF31462046FFF7BBFF2B463118AC
+:108BB00000222046BDE8F041FFF7A8BF2DE9F041B3
+:108BC000144605460E46FFF7ACFFA4EB0608371B1C
+:108BD0000744424631462846FFF7C1FF3A46214640
+:108BE0002846FFF7BCFF4346002221462846FFF7F0
+:108BF0008DFF21462846FFF794FF3B4621180022AF
+:108C00002846BDE8F041FFF781BF2DE9F041174646
+:108C100003220E460446FFF76EFF8642054607F123
+:108C200004080BD1012303FA07F7E36823EA0703DB
+:108C3000E360002344F82830BDE8F0813146022289
+:108C40002046FFF758FF2B460646014644F82850B9
+:108C500020460322FFF75AFF3346294620460222C8
+:108C6000BDE8F041FFF752BF38B504460D46FFF7A7
+:108C700058FFA368B3F5004F014601D3012809D07E
+:108C80002046FFF770FF294602462046BDE83840DF
+:108C9000FFF7BBBF38BD2DE9F04704468846FFF714
+:108CA00062FFA16805462046FFF75DFFA84203DA90
+:108CB00000263046BDE8F08704EB850ADAF810900C
+:108CC000B9F1000F19D00327DAF8106020463146B9
+:108CD000FFF727FF404505D32A4631462046FFF7D8
+:108CE00094FFE6E7032231462046FFF704FF013FE9
+:108CF000CAF8100001D08145E6D1E36801354FF094
+:108D0000FF32AA401A40D3D092FAA2F2B2FA82F20B
+:108D1000131D54F82360E0E72DE9F04104460D46A9
+:108D2000FFF7FFFEA368B3F5004F014601D301280A
+:108D300035D02046FFF717FF04EB800216699EB975
+:108D4000012303FA00F0E3680343E3602946156159
+:108D50002B4602222046FFF7D9FE03222946204651
+:108D6000BDE8F041FFF7D2BE022231462046FFF7B0
+:108D7000C2FE02220346074629462046FFF7C6FEEA
+:108D80003346032229462046FFF7C0FE0322394618
+:108D90002B462046FFF7BAFE02223146DFE7BDE848
+:108DA000F081F8B5002950D00568AB68B3F5004FE5
+:108DB0002CBF082404240C1B641B48BF0734E41098
+:108DC000002221462846FFF7B2FE2146FFF7A9FE02
+:108DD0002618012231462846FFF78DFEC3070CD422
+:108DE00031462846FFF740FF21462846FFF799FE07
+:108DF000214622182846FFF7C3FE002221462846B6
+:108E0000FFF779FE271A012239462846FFF773FE3D
+:108E100010F0010613D139462846FFF725FF2146F9
+:108E200032462846FFF767FE2246211A2846FFF7FA
+:108E3000A7FE214632462846FFF75DFE241A21464A
+:108E40002846BDE8F840FFF767BFF8BD70B509B91F
+:108E5000002070BD0568AB68B3F5004F2CBF082239
+:108E60000422CC1D1444E40821462846FFF713FFD2
+:108E700006460028ECD001462846FFF752FEA042E5
+:108E800009D93444314628462246FFF797FE214649
+:108E90002846FFF741FF284601223146FFF747FEEB
+:108EA000AB68B3F5004F2CBF0820042000EBC600D0
+:108EB0002844CEE7B2F5802FF8B52CBF082504254D
+:108EC000551BCC1D0D4424F0070425F00705002296
+:108ED00000232D1B0460ED08C4E90023002329466C
+:108EE000A560E3602046FFF73EFE86001B36411C6E
+:108EF000F60804F1100218468B4229DB3246204660
+:108F00000021FFF72CFEAF1B204601220021FFF7B6
+:108F10000EFE3A463146FFF722FE334631462046E2
+:108F20000022FFF7F3FD294620460022FFF717FE37
+:108F30003B46294620460022FFF7E8FD2946204609
+:108F40000122FFF7F4FD3146BDE8F840FFF7E4BE2B
+:108F500042F8040B0133CFE770472DE9F84306468A
+:108F60000F469046994604254B46424639463046C0
+:108F7000EDF7E8FD10F10B0F044603D1FFF762F89F
+:108F8000013DF1D12046BDE8F883104640F8041BAE
+:108F9000FFF7CCB82DE9F34150F8303C10F8345CC1
+:108FA0001033044610D1C36850F8282C99073BD5DC
+:108FB000FAB913F0040304D11A4619462846FFF7FC
+:108FC000CCFF002344F8303C54F8303C10330DD033
+:108FD00054F8206C56B154F8247C54F81C8C01F0E1
+:108FE00038F800284BD02046ECF7DEFC02B0BDE894
+:108FF000F08150F82C1C01AB2846FFF7AEFF10B1F2
+:109000006FF01503DEE7019A54F82C3C134444F842
+:109010002C3C54F8283C9B1A44F8283C54F8243C37
+:10902000134444F8243CCFE750F82C1C01AB2846ED
+:10903000EDF7F8FD0028E3D1019E54F82C3C3344B1
+:1090400044F82C3C54F8283C9B1B44F8283C54F82A
+:10905000243C334444F8243C002EB2D02846EDF79B
+:1090600081FEB6FBF0F303FB10600028A9D154F891
+:10907000283C002BA5D02846EDF71AFEA4E744F8BB
+:10908000200CA4F11800FFF751F854F8303C483395
+:10909000ACD0424639462846B047A7E708B501217B
+:1090A000083000F07CFA007808B1012803D1EEF70F
+:1090B000F9FB002008BD1220FCE7C268CBB20C21EE
+:1090C00003FB0121086C00F0070070474FF02003FC
+:1090D000EFF3118283F31188BFF36F8F036813F0EE
+:1090E000C00301D08B4207D101230360002082F32B
+:1090F0001188BFF36F8F70474FF0FF30F7E710B55F
+:109100004FF02003EFF3118283F31188BFF36F8FC9
+:10911000036803F00704012C06D10160002082F3EC
+:109120001188BFF36F8F10BD03F0C0038B4214BFD3
+:109130004FF0FF306FF00F00F1E74FF02003EFF337
+:10914000118283F31188BFF36F8F036803F0C003AC
+:1091500043F00203036082F31188BFF36F8F7047FF
+:10916000C06810B4CBB21C2403FB0400002110BC67
+:1091700010471046FEF7DABF0020FDF78BB900203C
+:10918000FDF756B938B5CCB20C2305466343C06829
+:10919000403380211844FFF799FF002805DB6968F8
+:1091A00001EBC40463689847002038BD2DE9F04105
+:1091B000CDB24FF00C08C46808FB05F8064608F16C
+:1091C0004000802120441746FFF799FF002809DB63
+:1091D00044447B68A363BB68E363736853F835302A
+:1091E00098470020BDE8F081FEF7C4BB036910B5C5
+:1091F000C0E906330023C36090F82230044613B15F
+:10920000407A00F0C6FC012384F82030002384F863
+:10921000213084F8223010BDFEF734BB0378017989
+:1092200003F00F0221B9101E18BF01204042704701
+:10923000082A06D8012907D183F0080040F3C000AE
+:1092400070474FF0FF3070470020704770B50446FC
+:109250000E461546EDF7E6FC30B906B925B12046B5
+:10926000BDE87040EDF724BD70BD73B54FF080547C
+:109270000829666E656E626E636E4FEA15254FEAC9
+:10928000036343EA166305F47F454FEA022243EA8B
+:10929000050302F47F0243EA02030093266E256E63
+:1092A000226E236E4FEA15244FEA036343EA1663E6
+:1092B00004F47F4443EA04034FEA022428BF082150
+:1092C00004F47F0423430A460C466946019300F0E8
+:1092D00039F8204602B070BD704770470021012068
+:1092E00000F000B800F063BC0146006800F05FBC0D
+:1092F00008B5EDF733FFBDE80840EEF777B8034651
+:1093000000201A5C02B970470130FAE7431E0139A8
+:1093100013F8012F11F8010F824201D1002AF7D171
+:10932000101A704710B55AB10139841810F8012B82
+:1093300011F8013FA04201D09A42F7D0D01A10BDD7
+:109340001046FCE7F0B581EA0004A50703460BD000
+:10935000013B0A4491421BD1F0BD002AFCD011F818
+:10936000014B03F8014B013A9C07F6D122F00304AC
+:109370001D1F96080F19B94205D16FF0030505FBB3
+:1093800006222344E4E751F804CB45F804CFF2E782
+:1093900011F8014B03F8014FDCE770B5C9B2034681
+:1093A0009C0711D141EA012422F0030644EA044556
+:1093B0001E449408B3420DD16FF0030505FB04224F
+:1093C0001A44934209D170BD002AFCD003F8011B56
+:1093D000013AE5E743F8045BECE703F8011BF0E72B
+:1093E000FCF718BF30B585B0044615466846032221
+:1093F000FFF7A8FF0D2200210DF10300FFF7CDFFBD
+:1094000020466A466946F1F733FF044620B9032235
+:1094100069462846FFF796FF204605B030BD13B5D4
+:109420000C4601AA0331FFF7DDFF48B9032201A969
+:109430002046FFF777FFB0FA80F0400902B010BD78
+:109440000020FBE770B5CE1C05460C4630460321D4
+:10945000F1F70CFF60B9637903F03F0343F0400379
+:109460006371224631462846BDE87040FFF7BABF17
+:1094700070BD0120EEF748B9037D012B03D183684D
+:109480001B78052B01D0EEF791B90020704770B51D
+:109490004FF0FF320D464FF0FF3300210646FFF735
+:1094A000E8FF02210446083000F059F806704570C4
+:1094B000204670BD033138B5C9B205460E20FFF70E
+:1094C000E6FF03210446083000F049F80123037049
+:1094D000A0F80150204638BD70B505460E460F2055
+:1094E0000421FFF7D4FF04210446083000F037F8C8
+:1094F0000122067042704580204670BD7047016AA7
+:1095000049680968FCF784B970B50646FEF778FA31
+:10951000054628B10446637913F0010302D12360A4
+:10952000284670BD002300223046FEF769FA6379B1
+:10953000206023F0010363710446ECE783680B4469
+:109540000360704710B40A46146814B910BC00F0E8
+:1095500059BC537943F0010353712246F4E78388E1
+:10956000026819448180D018704730B48488056837
+:10957000A3188380281930BCFFF7E4BE83880268F3
+:1095800010B55C1C8480D154D01810BD0268531EE5
+:10959000036083880133838002F8011C704703460F
+:1095A00000689A88521A01449A80196070470268CC
+:1095B0008068101A704770B50E460168154689B16B
+:1095C0000C68002C38BF00248A682A4002D04B68FF
+:1095D0003046984734B12368002B38BF002321461A
+:1095E0001C46F1E770BD43685B68D3F810350B602B
+:1095F0000020704743685B68D3F8040542400A4086
+:109600004240C3F804250020704743685B6800208F
+:10961000C3F80815704743685B680020C3F80C1551
+:10962000704743685A68D2F804354B40C2F8043595
+:1096300000207047C368586830B558B10024814293
+:1096400013D108685CB99C685860A14200D1986049
+:109650000020086072B9002030BD2846EFE7206086
+:109660009868814208BF9C60F2E705680446002DB7
+:10967000F3D13AB15A680A60986859600028EAD173
+:109680009960E9E76FF01500E6E7C368D3E90521C3
+:109690002DE9F041DC68D0F804801B690A4324EA14
+:1096A0000204D8F80420D2F810555D4024EA0505DC
+:1096B0000126002714B92846BDE8F08134420AD0BB
+:1096C00098F8083007F01F00002140EA4310FCF72B
+:1096D000D7F924EA060401377600EBE72DE9F041DB
+:1096E000C768D0F80480FC68D7E90532134324EA40
+:1096F0000304012600250CB9BDE8F081264210D0F4
+:10970000396998F80830E94001F00101C1F103011D
+:1097100005F01F00C9B240EA4310FCF7B1F924EA92
+:10972000060401357600E6E7C2684368D2681B6824
+:10973000917B59B1D3F8201141B14FF48071C3F836
+:1097400008130121D960002393737047D3F82411C3
+:1097500021B10021C3F82411D3F8243113680BB1CF
+:10976000516818477047C2680B46D2E9010183E887
+:1097700003000020704743681B68D3F88004C3F8D7
+:10978000800470474368C2681B68D3F8100148B171
+:10979000127D0A700020C3F81001D3F810210122B5
+:1097A0001A6070474FF0FF3070470346406870B54D
+:1097B0000468D4F82001A0B1DD68EB689889002323
+:1097C0009042C4F82031A8BF1046D4F82021EA689E
+:1097D0008342926806DB0123C4F84425C4F8480597
+:1097E000A36070BDCE5CD6540133F0E743681B68BC
+:1097F0000246D3F8100148B1D2680020C3F8100126
+:10980000D3F81001127D0A70012018607047C268F9
+:109810004368D2681B68002191734FF48072C3F8CB
+:1098200004237047C368DB6801229A737047C368DA
+:10983000DB689B7B4BB943681B68D3F8200128B1D8
+:10984000D3F80403C0F3002070470020704743683A
+:109850001B68D3F81001003818BF01207047436817
+:109860001B681022C3F80423704743681B6810224A
+:10987000C3F80823704743681B684FF40072C3F8AD
+:109880000423704743681B684FF40072C3F8082331
+:10989000704701207047C368DB68C3E90012704756
+:1098A00008B543681968D1F80433DB05024605D4CE
+:1098B000D1F8040310F0100006D108BDFFF7B7FF80
+:1098C0000028F5D00120F8E71046FFF7C0FF003868
+:1098D00018BF0120F1E72DE9F34143688DF8071027
+:1098E0001C68C66800F0B5FBB8BB642506F110071C
+:1098F0004FF00108BFF35B8F57E8003F002B03D107
+:1099000047E80082002AF7D1BFF35B8F07D0212000
+:109910000021013DFEF7E4FB15F0FF05EAD100232D
+:10992000C4F82031D4F820310DF10703C4F84435D0
+:109930000123C4F848354FF47A75A360D4F8203178
+:1099400023B9012000F05AF8013DF7D10123E3606B
+:109950000023336102B0BDE8F08101233361DEE70B
+:10996000F8B50121054600220220EDF763FB022035
+:10997000EDF72EFB6B68EE681C680027C4F80075D5
+:1099800014203560FCF7A4FA1420FCF791FA4FF08C
+:10999000A0431422C3F86077C4F80C251822C4F839
+:1099A00014251120C3F85877FCF792FA1120FCF720
+:1099B0007FFA1123E968C4F808351623C4F8103576
+:1099C00004312846FCF7BEF9B0B90823C4F80035C5
+:1099D000F268C4F81001D4F81031926806F114034B
+:1099E000C4F834350123C4F838352360C4F844255D
+:1099F000C4F84805A360E360F8BD004700F02FBB42
+:109A000000F180431A68002A1FBF00221A601B68F9
+:109A1000012008BF002070474FF080434FF4607270
+:109A2000C3F8042370474FF080434FF46072C3F8CB
+:109A30000823704708B5FCF7F5FDBDE80840FCF7C2
+:109A40006FBD30B54C680D689C4229BFC0E900531A
+:109A50000021E41AED1832BFC0E900514C600D60DE
+:109A6000934203D1201E18BF012030BD0020FCE727
+:109A70004B6810B59A420C6828BF1A46C0E90042EC
+:109A8000981A0B6848601A4400380A6018BF012011
+:109A900010BD30B54C680B68A24228BF2246002A90
+:109AA00014BF1D460025C0E90052A4EB02041A446D
+:109AB0004C600A6014BF0120002030BD43B2002B6F
+:109AC000B4BF0020102003F00F0318447047704704
+:109AD000FCF744BF08B50146FCF722FE0846FCF738
+:109AE00011FE837B032B0AD10846FFF7E7FF012312
+:109AF00003FA00F0C043BDE80840FCF71DBF03684F
+:109B0000002BF1D008BD8720FFF7E4BF8620FFF7C8
+:109B1000E1BF8520FFF7DEBF8420FFF7DBBF832096
+:109B2000FFF7D8BF8220FFF7D5BF8120FFF7D2BF54
+:109B300008B5FCF7E7FD818108BD08B5FCF7E2FD3B
+:109B40004FF02002EFF3118382F31188BFF36F8F80
+:109B500082680A6002682AB9807B83F31188BFF3A8
+:109B60006F8F08BD0420F8E70720FDF735BA0620FF
+:109B7000FDF732BA0520FDF72FBA0420FDF72CBA05
+:109B80000320FDF729BA0220FDF726BA0120FDF7D0
+:109B900023BAFDF713BB4FF02002EFF3118382F3DA
+:109BA0001188BFF36F8FFEE708B5FFF7F4FFF8B534
+:109BB00005460E464FF02003EFF3118783F311881B
+:109BC000BFF36F8FFEF7ACFA314604462846FFF725
+:109BD000EBFF87F31188BFF36F8F2046BDE8F84095
+:109BE000EDF71EBCFFF779BB10B400F10C04C0E91F
+:109BF000034410BCFFF75EB92DE9F04F044685B071
+:109C00000E461046194600F0F8FA04F1140A05460B
+:109C10000F464FF02002EFF3118382F31188BFF358
+:109C20006F8F04F10C0B314620460393FFF70EF9BA
+:109C30000290FEF745FDDDE902233AB183F3118876
+:109C4000BFF36F8F104605B0BDE8F08FB5EB00088D
+:109C500067EB0109B8F1010F79F10001EEDBCDE905
+:109C600000895A4619465046FEF75AF94FF020022D
+:109C7000EFF3118382F31188BFF36F8FD3E738B509
+:109C800004464FF02003EFF3118583F31188BFF3EF
+:109C90006F8FFFF786F804F10C0000F0BAF930B1CD
+:109CA000294604F11400BDE83840FDF71FBF85F3D5
+:109CB0001188BFF36F8F38BDF8B5DDE9066700681E
+:109CC000486014460D4632463B462146FFF794FF56
+:109CD000286044B138B956EA07030CBF6FF00B0097
+:109CE0006FF00A00F8BD0020FCE7D0E90010FFF794
+:109CF000C6BF03460020C3E90200C3E90033704732
+:109D00002DE9F84304460D469046994600F10806B1
+:109D10004FF02003EFF3118783F31188BFF36F8FA8
+:109D2000304600F051F958B10024C467C0F81480DF
+:109D300000F0EFF830463946FDF7D8FE00200CE081
+:109D4000B9F1000F1BD00820FEF75CFD38B987F38E
+:109D50001188BFF36F8F6FF00B00BDE8F88301230C
+:109D6000C0F804800360036803F003025DB9236850
+:109D7000134303606368206073B960600CE0C8F847
+:109D800000904046EFE72B6833F0030310D10260E8
+:109D900062683AB9C4E90000042104F1100000F03F
+:109DA00056FBC7E7136803F0030303431360E4E7BC
+:109DB000134303602B6803F0030303432B60EBE7BB
+:109DC00010B5044630B10268930703D0446809B166
+:109DD00000F065FB204610BD0023C0E9003300F110
+:109DE0000803C0E9023300F11003C0E904337047EF
+:109DF0000A4600234168FFF783BF00230A4619463D
+:109E0000FFF77EBF2DE9F843054616460C4691B391
+:109E10008AB300F108074FF02003EFF3118883F3B2
+:109E20001188BFF36F8F384600F0CEF84FF000096D
+:109E300020B96B68CBB92C606E600AE04461C0F851
+:109E40007C9000F066F82468384600F0BDF8002CDD
+:109E5000EED1042105F1100000F0F9FA3846414630
+:109E6000FDF744FE0020BDE8F883196801F0030106
+:109E70000C431C60E0E76FF01500F4E790F90E006A
+:109E800091F90E309842ACBF002001207047034684
+:109E900020B9EFF305820AB9EDF746B883F31188CC
+:109EA000BFF36F8F70474FF02003EFF3118083F300
+:109EB0001188BFF36F8FFFF7EABF014608B58068CE
+:109EC000FDF73AFE4B7B23F002034B7300238B60BC
+:109ED00008BD38B504464FF02003EFF3118583F336
+:109EE0001188BFF36F8FFFF7E8FF85F31188BFF389
+:109EF0006F8F04F11800BDE8384000F038B9034610
+:109F00000068834203D0002838BF0020704700203B
+:109F1000704710B54FF02003EFF3118483F31188DD
+:109F2000BFF36F8FFDF75EFE84F31188BFF36F8F71
+:109F300010BD70B504464FF02003EFF3118683F394
+:109F40001188BFF36F8F50F8103CA0F1180513B1C2
+:109F50002846FFF7B2FF14F80B3C23F0140304F873
+:109F60000B3C2846FDF73EFE86F31188BFF36F8F4A
+:109F700070BD38B504460D46FDF792FF637B43F094
+:109F800002036373C5B12B68A5609D4208BF00231F
+:109F9000002B38BF002383B194F90E1093F90E20E3
+:109FA000914204DB6A689A4207D01B68F3E75A685B
+:109FB000C4E9003214605C6038BD6B6863606B6834
+:109FC00025601C606C60F7E738B54FF02003EFF3B5
+:109FD000118283F31188BFF36F8FFFF790FF044660
+:109FE00082F31188BFF36F8F88B14FF02003EFF336
+:109FF000118583F31188BFF36F8FFFF75EFF85F341
+:10A000001188BFF36F8F04F1180000F0B0F82046FC
+:10A0100038BD38B5054600202C68A54200D004B9EB
+:10A0200038BD2046FFF755FF2046FFF772FF01209D
+:10A03000F2E75AB18A4209D300F11003C0E90212D3
+:10A04000C0E90000C0E90433002070476FF015003C
+:10A050007047EFF30580003818BF01207047EDF717
+:10A06000F9BA6FF04600704700B501F10803BFF37D
+:10A070005B8F53E8002F42F0010C43E800CEBEF1A5
+:10A08000000FF6D1BFF35B8FD30703D45DF804EB69
+:10A09000FFF7AEBE5DF804FBA0F110018069FFF789
+:10A0A000E3BF836A70B5044613B96FF0440070BD16
+:10A0B000BFF35B8F8368BFF35B8FDB0700F108059D
+:10A0C00032D5826A1368002113B96FF01500EEE7EC
+:10A0D0009C4224D12368566823F00300B1B9B442EE
+:10A0E000106000D15060236803F003032360002058
+:10A0F000A062BFF35B8F55E8003F23F0010345E802
+:10A100000032002AF7D1BFF35B8FD0E70B6803F072
+:10A1100003030343B4420B6008BF5160E3E71868D0
+:10A12000194620F00303CFE7103000F020F8002894
+:10A13000DDD0BAE70023C0E90031C0E90433836011
+:10A1400083627047836A10B573B14FF02003EFF359
+:10A15000118483F31188BFF36F8FFFF7A2FF84F39D
+:10A160001188BFF36F8F10BD6FF01500FBE710B5BE
+:10A170004FF02002EFF3118482F31188BFF36F8F49
+:10A1800003683BB1FEF766F9002084F31188BFF342
+:10A190006F8F10BD6FF01500F7E710B54FF020037B
+:10A1A000EFF3118483F31188BFF36F8FFEF76CF91F
+:10A1B00084F31188BFF36F8F10BD70B504460D4650
+:10A1C0004FF02003EFF3118683F31188BFF36F8FF5
+:10A1D000FEF75AF9012805DDA04203DD2946204695
+:10A1E000ECF726FE86F31188BFF36F8F70BD08B5BC
+:10A1F000FEF766FA08BDFEF763BA38B54B1C08BF18
+:10A20000B0F1FF3F04460D4613D054EA050103D1D7
+:10A21000BDE83840FEF754BA6FF001010A1A4FF05A
+:10A22000FF3161EB0503002A73F1000102DB1046E8
+:10A23000194638BDFEF744FA012C75F10003BCBF86
+:10A2400001240025201845EB0101F2E7142330B565
+:10A2500003FB01010024814200D130BD11F8073C0D
+:10A2600041F80C4C03F00F03022B0AD85BB151F8F4
+:10A27000143C43B151F8105C2B605D6041E905442A
+:10A2800001E0042BF3D082F31188BFF36F8F4FF0FE
+:10A290002003EFF3118283F31188BFF36F8F14391A
+:10A2A000D9E770B5846805460E469CB1A3685BB9D2
+:10A2B000237018460023AB60EB68C3F304310E43F0
+:10A2C00066F31033EB6004E0984700230028237006
+:10A2D000F0DA70BD2046EDE738B583685C68637BD3
+:10A2E0009A070D4615D5D4E90A234FF0FF316FF0D8
+:10A2F00001008B4208BF824214D02046FFF7E9FDDF
+:10A30000082D0CBF6FF003030023E367637BDB06BC
+:10A3100001D0002038BDA569002DFAD12046FFF7F5
+:10A32000F8FDF6E76FF00A00F4E7F8B51746D0E954
+:10A330000023904204460D4606D163686B60636853
+:10A340002C601D606560F8BD002BF6D09B687968B5
+:10A350005868FFF793FD0028EFD12668B442ECD08F
+:10A36000002E38BF0026002EE7D0B3687868596801
+:10A37000FFF784FD28B17368C5E900631D6075604F
+:10A38000E1E76368B342D8D03668ECE72DE9F84FCF
+:10A390004FF0000A0E4614461F4683465546D046E7
+:10A3A000B24502DB2846BDE8F88F4FF02003EFF3FB
+:10A3B000118983F31188BFF36F8F9BF80D2002F092
+:10A3C0000F02022A06D0042A08D0012A20D1DBF885
+:10A3D000103001E0DBF810309B6802E0DBF8103051
+:10A3E0001B68ABB1DBF80C30CBF80880C3F3043149
+:10A3F0000A4362F31033CBF80C3084F8008089F301
+:10A400001188BFF36F8F0AF1010A0BF1140BC7E734
+:10A41000002FF4D12378002BF1D09BF80D3003F0FE
+:10A420000F03022B08D0042B06D0012B0BD1DBF835
+:10A4300010002246594604E0DBF810002246594637
+:10A440001030FFF772FFCBF808400135D7E703461D
+:10A450000068834208D0D0E9003213605A600023BC
+:10A46000C0E90033FFF71DBF7047FFF73EBCDFB503
+:10A4700008240A1908D200260027CDE900670DEB51
+:10A480000401FFF719FC10B1002004B0D0BD029800
+:10A49000224602A9FEF756FF02980830F5E710B1F0
+:0AA4A0000838FFF722BC7047704730
+:02A4AA00FFFFB2
+:08A4AC00846CFE7F010000003A
+:10A4B4002576000000000000617801000000000023
+:10A4C40089750000000000006976000000000000AB
+:10A4D400D55E00006804002029620000000000002E
+:10A4E4006199010078040020CD60010088040020F7
+:10A4F400DD6D00009804002091590100B80400208B
+:10A5040091590100A8040020CD8101000000000041
+:10A5140025560000000000003995000000000000EE
+:08A52400A15D00000000000031
+:10A52C00359A0100FB99010000000000DD9201004A
+:10A53C00780400202997010000000000DD92010042
+:10A54C0000000000DD92010000000000DD9201001F
+:10A55C0000000000895C010000000000DD92010099
+:10A56C0000000000DD92010000000000DD920100FF
+:10A57C0000000000DD92010000000000F523010046
+:10A58C0000000000DD9201007438002041610100E0
+:10A59C0000000000DD92010000000000DD920100CF
+:10A5AC0000000000DD92010000000000B16D000011
+:10A5BC0000000000DD92010000000000DD920100AF
+:10A5CC0000000000DD92010000000000DD9201009F
+:10A5DC0000000000DD92010000000000DD9201008F
+:10A5EC00000000002124010000000000DD920100A9
+:10A5FC0000000000DD92010000000000DD9201006F
+:10A60C0000000000DD92010000000000DD9201005E
+:10A61C0000000000DD92010000000000DD9201004E
+:10A62C0000000000DD92010000000000DD9201003E
+:10A63C0000000000DD92010000000000DD9201002E
+:10A64C0000000000DD92010000000000DD9201001E
+:10A65C0000000000DD92010029730100FB9901004C
+:10A66C0000000000DD92010000000000DD920100FE
+:10A67C0000000000DD92010000000000DD920100EE
+:10A68C0000000000DD92010000000000DD920100DE
+:10A69C0000000000DD92010000000000DD920100CE
+:04A6AC00FFFFFFFFAE
+:10A6B000000103FF04FF0200000106020100000088
+:10A6C0000338FDD870470000156000008591010037
+:10A6D000AD91010000000000BB900100855F00000B
+:10A6E000E95F00007F910100799101007D5E00002B
+:10A6F000355E000000000000096500000200000057
+:10A7000004A70100000000004AB70100260002076C
+:10A710000000002052B7010022000B118CB501008F
+:10A7200034A701008CB501003CA701008CB50100E5
+:10A7300044A7010020000000A15E00204D000000A1
+:10A74000075E00204D000000205D00205745535457
+:10A750005F544F504449522F7A65706879722F7355
+:10A7600075627379732F626C7565746F6F74682F7F
+:10A77000636F6E74726F6C6C65722F7469636B6556
+:10A78000722F7469636B65722E63000041535345E9
+:10A790005254494F4E204641494C205B25735D2061
+:10A7A000402025733A25640A0000000042542052DC
+:10A7B0005820707269000000425420525800000076
+:10A7C000574553545F544F504449522F7A6570682F
+:10A7D00079722F7375627379732F626C7565746FFC
+:10A7E0006F74682F636F6E74726F6C6C65722F6814
+:10A7F00063692F6863695F6472697665722E6300AE
+:10A80000657272203D3D20300000000030000000E5
+:10A81000436F6E74726F6C6C6572000010A801005B
+:10A82000000000000200000075960000499500003D
+:10A830005A6570687972204F532076322E342E304C
+:10A8400000000000574553545F544F504449522F65
+:10A850007A65706879722F7375627379732F626C81
+:10A860007565746F6F74682F636F6E74726F6C6C44
+:10A8700065722F6863692F6863692E6300000000AA
+:10A8800068616E646C65203C2028286C6F6E6729B7
+:10A8900020282828696E74292073697A656F6628D4
+:10A8A000636861725B31202D2032202A202128210B
+:10A8B0005F5F6275696C74696E5F74797065735FF0
+:10A8C000636F6D70617469626C655F70285F5F743F
+:10A8D0007970656F665F5F286863695F6862756637
+:10A8E0005F70656E64292C205F5F747970656F6698
+:10A8F0005F5F2826286863695F686275665F7065B8
+:10A900006E64295B305D2929295D29202D2031299C
+:10A91000202B202873697A656F66286863695F68F1
+:10A920006275665F70656E6429202F2073697A6591
+:10A930006F6628286863695F686275665F70656E18
+:10A9400064295B305D292929290000002868636992
+:10A950005F686275665F73656E74202D2068636939
+:10A960005F686275665F61636B656429203C20687F
+:10A9700063695F686275665F746F74616C00000084
+:10A980006164762D3E74797065203D3D20504455BC
+:10A990005F4144565F545950455F444952454354C2
+:10A9A0005F494E4400000000020000000000010367
+:10A9B0000303030303000000574553545F544F50F3
+:10A9C0004449522F7A65706879722F737562737972
+:10A9D000732F626C7565746F6F74682F636F6E741C
+:10A9E000726F6C6C65722F6C6C5F73772F756C6C0B
+:10A9F0002E63000021657272000000007278000072
+:10AA00002172657400000000756C6C5F6864722DC3
+:10AA10003E7265660000000072656C6561736520BA
+:10AA20003D3D20646F6E65002172657476616C0037
+:10AA300064656C7461203C3D2030207C7C206D6519
+:10AA40006D5F6C696E6B5F72782E71756F74615F8C
+:10AA5000706475203C20282836202B203329202B99
+:10AA600020332900636F6E6E5F6C6C6C0000000019
+:10AA700021636F6E6E5F6C6C6C2D3E6C696E6B5FEC
+:10AA800074785F667265650072782D3E74797065C2
+:10AA900020213D204E4F44455F52585F5459504548
+:10AAA0005F4E4F4E450000002163632D3E7374617D
+:10AAB0007475730072785F667265652D3E74797087
+:10AAC0006520213D204E4F44455F52585F545950F8
+:10AAD000455F4E4F4E45000021636F6E6E2D3E6CFC
+:10AAE0006C6C2E6C696E6B5F74785F667265650066
+:10AAF000574553545F544F504449522F7A657068FC
+:10AB000079722F7375627379732F626C7565746FC8
+:10AB10006F74682F636F6E74726F6C6C65722F6CDC
+:10AB20006C5F73772F756C6C5F6164762E630000C9
+:10AB30006164762D3E6C696E6B5F63635F66726500
+:10AB4000650000006164762D3E6E6F64655F72780B
+:10AB50005F63635F66726565000000007265660092
+:10AB600028726574203D3D203029207C7C2028728D
+:10AB70006574203D3D203229000000002168647288
+:10AB80002D3E64697361626C65645F6362000000FE
+:10AB9000737461747573203D3D2030207C7C20707F
+:10ABA0006172616D203D3D20756C6C5F64697361FD
+:10ABB000626C655F6D61726B5F6765742829000068
+:10ABC00068616E646C65203C20310000216C6C6C07
+:10ABD0002D3E6C696E6B5F74785F66726565000010
+:10ABE0006D61726B203D3D20616476005745535482
+:10ABF0005F544F504449522F7A65706879722F73B1
+:10AC000075627379732F626C7565746F6F74682FDA
+:10AC1000636F6E74726F6C6C65722F6C6C5F7377A0
+:10AC20002F756C6C5F7363616E2E63006D61726B68
+:10AC3000203D3D207363616E000000005745535472
+:10AC40005F544F504449522F7A65706879722F7360
+:10AC500075627379732F626C7565746F6F74682F8A
+:10AC6000636F6E74726F6C6C65722F6C6C5F737750
+:10AC70002F756C6C5F636F6E6E2E63007469636B0F
+:10AC800065725F737461747573203D3D2030000000
+:10AC900021706175736500006C6C6C5F74780000E6
+:10ACA00072782D3E6864722E6C696E6B0000000035
+:10ACB000737461747573203D3D20300070203D3DFC
+:10ACC00020706172616D0000737461747573203D52
+:10ACD0003D2030207C7C20706172616D203D3D20E4
+:10ACE000756C6C5F7570646174655F6D61726B5FCC
+:10ACF0006765742829207C7C20706172616D203D1D
+:10AD00003D20756C6C5F64697361626C655F6D6139
+:10AD1000726B5F67657428290000000028746963FE
+:10AD20006B65725F737461747573203D3D203029CB
+:10AD3000207C7C20287469636B65725F7374617416
+:10AD40007573203D3D203229000000006D61726B5B
+:10AD5000203D3D20636F6E6E00000000636F6E6EDD
+:10AD60002D3E6C6C63705F63752E726571203D3D86
+:10AD700020636F6E6E2D3E6C6C63705F63752E6129
+:10AD8000636B0000636F6E6E5F7570645F637572F6
+:10AD900072203D3D20636F6E6E00000072785F642C
+:10ADA0006C650000636F6E6E2D3E6C6C6C2E68617E
+:10ADB0006E646C6520213D20307846464646000092
+:10ADC00072782026262072782D3E6864722E6C6977
+:10ADD0006E6B0000287469636B65725F73746174D5
+:10ADE0007573203D3D203029207C7C2028746963C8
+:10ADF0006B65725F737461747573203D3D203229F9
+:10AE0000207C7C202828766F6964202A29636F6E55
+:10AE10006E203D3D20756C6C5F64697361626C658A
+:10AE20005F6D61726B5F67657428292900000000FF
+:10AE30007064755F74782D3E6C656E00216C696E70
+:10AE40006B2D3E6E657874006C696E6B2D3E6E6581
+:10AE500078740000010102010404040400000000F1
+:10AE6000574553545F544F504449522F7A65706888
+:10AE700079722F7375627379732F626C7565746F55
+:10AE80006F74682F636F6E74726F6C6C65722F6C69
+:10AE90006C5F73772F756C6C5F736C6176652E6376
+:10AEA0000000000073746174757320213D2031200F
+:10AEB0007C7C20706172616D203D3D20756C6C5F03
+:10AEC00064697361626C655F6D61726B5F67657405
+:10AED00028290000574553545F544F504449522F7E
+:10AEE0007A65706879722F7375627379732F626CEB
+:10AEF0007565746F6F74682F636F6E74726F6C6CAE
+:10AF000065722F6C6C5F73772F756C6C5F6D6173FE
+:10AF10007465722E63000000574553545F544F50C0
+:10AF20004449522F7A65706879722F73756273790C
+:10AF3000732F626C7565746F6F74682F636F6E74B6
+:10AF4000726F6C6C65722F6C6C5F73772F756C6CA5
+:10AF50005F73636865642E63000000007265745F50
+:10AF60006362203D3D203000574553545F544F509D
+:10AF70004449522F7A65706879722F7375627379BC
+:10AF8000732F626C7565746F6F74682F636F6E7466
+:10AF9000726F6C6C65722F6C6C5F73772F756C6C55
+:10AFA0005F66696C7465722E63000000726C5F6985
+:10AFB0006478203C20380000726C5B726C5F6964BE
+:10AFC000785D2E74616B656E00000000726C5B69C9
+:10AFD00064785D2E727061735F72656164790000E0
+:10AFE0006465766D617463685F6964203C2028281D
+:10AFF0006C6F6E672920282828696E742920736970
+:10B000007A656F6628636861725B31202D2032207B
+:10B010002A202128215F5F6275696C74696E5F74F4
+:10B02000797065735F636F6D70617469626C655F81
+:10B0300070285F5F747970656F665F5F28776C2931
+:10B040002C205F5F747970656F665F5F28262877B4
+:10B050006C295B305D2929295D29202D203129208B
+:10B060002B202873697A656F6628776C29202F203A
+:10B0700073697A656F662828776C295B305D2929AA
+:10B0800029290000776C5B6465766D617463685F85
+:10B0900069645D2E74616B656E0000006465766D99
+:10B0A000617463685F6964203C2028286C6F6E6758
+:10B0B0002920282828696E74292073697A656F66AB
+:10B0C00028636861725B31202D2032202A202128DC
+:10B0D000215F5F6275696C74696E5F747970657306
+:10B0E0005F636F6D70617469626C655F70285F5F2C
+:10B0F000747970656F665F5F28726C292C205F5FC2
+:10B10000747970656F665F5F282628726C295B30E2
+:10B110005D2929295D29202D203129202B20287304
+:10B12000697A656F6628726C29202F2073697A65A9
+:10B130006F662828726C295B305D29292929000057
+:10B14000726C5B695D2E74616B656E0069726B6D0C
+:10B15000617463685F6964203C20706565725F6933
+:10B16000726B5F636F756E740000000069203C2095
+:10B1700038000000574553545F544F504449522FF4
+:10B180007A65706879722F7375627379732F626C48
+:10B190007565746F6F74682F636F6E74726F6C6C0B
+:10B1A00065722F6C6C5F73772F6E6F726469632F9B
+:10B1B0006C6C6C2F6C6C6C2E6300000028737461D7
+:10B1C000747573203D3D203029207C7C20287374C9
+:10B1D00061747573203D3D2031290000287265742B
+:10B1E000203D3D203029207C7C2028726574203D44
+:10B1F0003D203129207C7C2028726574203D3D2033
+:10B2000032290000726574203D3D202D3732000048
+:10B21000524E470021726574207C7C207265742038
+:10B220003D3D202D3638000021706172616D0000B7
+:10B2300021706172616D207C7C206E6578740000E5
+:10B240006576656E742E637572722E61626F7274AC
+:10B250005F6362006576646F6E65000065727220E0
+:10B260003E3D203000000000574553545F544F507E
+:10B270004449522F7A65706879722F7375627379B9
+:10B28000732F626C7565746F6F74682F636F6E7463
+:10B29000726F6C6C65722F6C6C5F73772F6E6F7250
+:10B2A0006469632F6C6C6C2F6C6C6C5F6164762EC0
+:10B2B0006300000021726164696F5F69735F72658A
+:10B2C00061647928290000006368616E0000000055
+:10B2D00021657272207C7C20657272203D3D202D9C
+:10B2E00036380000574553545F544F504449522F4D
+:10B2F0007A65706879722F7375627379732F626CD7
+:10B300007565746F6F74682F636F6E74726F6C6C99
+:10B3100065722F6C6C5F73772F6E6F726469632F29
+:10B320006C6C6C2F6C6C6C5F7363616E2E630000D1
+:10B330006E6F64655F727800574553545F544F5089
+:10B340004449522F7A65706879722F7375627379E8
+:10B35000732F626C7565746F6F74682F636F6E7492
+:10B36000726F6C6C65722F6C6C5F73772F6E6F727F
+:10B370006469632F6C6C6C2F6C6C6C5F636F6E6EAA
+:10B380002E630000646F6E65000000006C6C6C2D15
+:10B390003E68616E646C6520213D203078464646EB
+:10B3A00046000000F401FA00960064004B003200F1
+:10B3B0001E001400574553545F544F504449522FB8
+:10B3C0007A65706879722F7375627379732F626C06
+:10B3D0007565746F6F74682F636F6E74726F6C6CC9
+:10B3E00065722F6C6C5F73772F6E6F726469632F59
+:10B3F0006C6C6C2F6C6C6C5F736C6176652E63008B
+:10B40000574553545F544F504449522F7A657068E2
+:10B4100079722F7375627379732F626C7565746FAF
+:10B420006F74682F636F6E74726F6C6C65722F6CC3
+:10B430006C5F73772F6E6F726469632F6C6C6C2F07
+:10B440006C6C6C5F6D61737465722E63000000003C
+:10B45000574553545F544F504449522F7A65706892
+:10B4600079722F7375627379732F626C7565746F5F
+:10B470006F74682F636F6E74726F6C6C65722F6C73
+:10B480006C5F73772F6E6F726469632F68616C2FC6
+:10B490006E7266352F636E74722E63005F7265661E
+:10B4A000636F756E74000000574553545F544F50DE
+:10B4B0004449522F7A65706879722F737562737977
+:10B4C000732F626C7565746F6F74682F636F6E7421
+:10B4D000726F6C6C65722F6C6C5F73772F6E6F720E
+:10B4E0006469632F68616C2F6E7266352F6D6179A8
+:10B4F000666C792E6300000063616C6C65655F6942
+:10B5000064203D3D20320000574553545F544F5056
+:10B510004449522F7A65706879722F737562737916
+:10B52000732F626C7565746F6F74682F636F6E74C0
+:10B53000726F6C6C65722F6C6C5F73772F6E6F72AD
+:10B540006469632F68616C2F6E7266352F7469634E
+:10B550006B65722E63000000757365725F6964200D
+:10B560003C2073697A656F662863616C6C65725FF5
+:10B5700069645F6C7574290063616C6C65725F69E6
+:10B580006420213D2030000001030405E157010043
+:10B5900000000000FD940100C1590100E795010081
+:10B5A000F59501000B960100179601002396010006
+:10B5B000AD5A01003596010000000000FFFFFFFFBB
+:10B5C0000000005000000000FFFF000000030050DA
+:10B5D0000100000085970100D798010077970100CE
+:10B5E000455D010067970100AB970100ED970100F1
+:10B5F0000F980100259801002F9801005F98010025
+:10B600006B9801002F9801004F9801007798010076
+:10B6100085980100A1980100939801009798010076
+:10B62000002000400600000075600100CD5F0100B1
+:10B6300041670100CF9A0100D19A01002B9B0100C4
+:10B64000259B01001F9B0100199B0100139B01001A
+:10B650000D9B0100079B01001D6A0100396A010072
+:10B66000F57001008D9B0100879B0100819B01000B
+:10B670007B9B0100759B01006F9B0100699B010092
+:10B68000856A0100F568010061680100B57201007A
+:10B690008D6F0100B4A40100F4A40100FCA401001A
+:10B6A00024A501002CA50100F5FFFFFF08010C01F6
+:10B6B0001001140118011C01200124012C0130018A
+:10B6C000340138013C014001440148014C01500162
+:10B6D0004661696C656420746F20656E61626C659B
+:10B6E0002055534200426C7565746F6F7468206F0B
+:10B6F000766572205553422073616D706C650A0047
+:10B7000030313233343536373839616263646566D7
+:10B7100000303132333435363738394142434445CD
+:10B7200046007573625F62745F7278007573625F62
+:10B7300062745F747800434C4F434B000100020079
+:10B740007379735F636C6F636B00464C4153485F62
+:10B7500030005352414D5F30004750494F5F310038
+:10B760004750494F5F3000554152545F3000524EB0
+:10B770004700010000000000010000010101020378
+:10B780000405060708090B0C0D0E0F1011121314F7
+:10B790006D61696E00737973776F726B7100776F8B
+:08B7A000726B7175657565009F
+:10B7A800FFFFFFFFFF1F00001F0000000000000058
+:10B7B80083880100D959000081000000D959000090
+:10B7C80002000000D95900008200000010000000AB
+:10B7D80000000000295D00001100000001000000C9
+:10B7E8009D900100CC040020E0040020000000002F
+:10B7F80000000000000000000001000074000020AC
+:10B80800000000000000000000000000000400002C
+:10B8180020050020740000207400002000000000B3
+:10B828000000000004040000000000000000000008
+:10B8380000000000000000000404000000000000F8
+:10B84800000000000000000000000000040A0000E2
+:10B8580000000000000000000000000000000000E0
+:10B8680000000000000000000000000000000000D0
+:10B878000000000000000000240800000000000094
+:10B8880000000000000000000000000000000000B0
+:10B8980000000000000000000000000000000000A0
+:10B8A8000000000000000000000000000000000090
+:10B8B8000000000000000000000000000000000080
+:10B8C8000000000000000000000000000000000070
+:10B8D8000000000000000000000000000000000060
+:10B8E8000000000000000000000000000000000050
+:10B8F8000000000000000000000000000000000040
+:10B90800000000000000000000000000000000002F
+:10B91800000000000000000000000000000000001F
+:10B92800000000000000000000000000000000000F
+:10B9380000000000000000000000000000000000FF
+:10B9480000000000000000000000000000000000EF
+:10B9580000000000000000000000000000000000DF
+:10B9680000000000000000000000000000000000CF
+:10B9780000000000000000000000000000000000BF
+:10B9880000000000000000000000000000000000AF
+:10B99800000000000000000000000000080800008F
+:10B9A800000000000000000000000000000000008F
+:10B9B800000000000000000000000000000000007F
+:10B9C800000000000000000000000000000000006F
+:10B9D800000000000000000000000000000000005F
+:10B9E8000000000054240020000000007DB2000088
+:10B9F800000000005C24002000000000A5280100D1
+:10BA08000000000064240020000000000DB40000C5
+:10BA1800000000006C2400200000000055280100F0
+:10BA280000000000A42D00200000000031310100BA
+:10BA380000000000AC2D0020000000000000000005
+:10BA480000000000B02E002000000000313B010083
+:10BA5800080C0000000000000000000000000000CA
+:10BA680000000000000000000000000000000000CE
+:10BA780000000000000000000000000000000000BE
+:10BA880000000000000000000000000000000000AE
+:10BA9800000000000000000000000000000000009E
+:10BAA800000000000000000000000000000000008E
+:10BAB800000000000808000000000000000000006E
+:10BAC800000000000000000000000000000000006E
+:10BAD800000000000000000000000000000000005E
+:10BAE800000000000000000000000000000000004E
+:10BAF800000000000000000000000000E43000200A
+:10BB0800000000000DD6000000000000CC3200202C
+:10BB1800000000000000000000000000D4320020F7
+:10BB2800000000009110010000000000DC3200203D
+:10BB3800000000007D45010000000000F4320020F4
+:10BB48000000000059470100FFFFFFFF1F00000031
+:10BB580000000000C0350020000000000D26010094
+:10BB680000000000DC350020000000004510010046
+:10BB7800000000000838002000000000B18200002A
+:10BB8800000000001038002000000000DD7F0000E9
+:10BB9800000000001838002000000000B1820000FA
+:10BBA800000000002038002000000000DD7F0000B9
+:10BBB800000000002838002000000000B1820000CA
+:10BBC800000000003038002000000000B1820000B2
+:10BBD8000000000000000000A83B0020200000003A
+:10BBE8000000000000C20100000103003004002032
+:10BBF80000000000000000000090D0035C0400205A
+:05BC08005C0400202592
+:03BC0D00FFFFFF37
+:10BC100036B70100DCA60100C8A60100F40C002024
+:10BC200067B7010020B60100D4B501004004002030
+:10BC30006EB701000000000028B601007438002033
+:10BC400040B70100000000000000000000000000FC
+:10BC500060B70100BCB5010098B50100383800207C
+:10BC600059B70100C8B5010098B50100543800204B
+:04BC700000000000D0
+:10BC7400000000004C0D0020BC0D0000000000007E
+:10BC84000000000000000000081B00203C0400002D
+:08BC94000000000000000000A8
+:10BC9C00F4040020F4040020000000000000000068
+:04BCAC000F00000085
+:10BCB000080500200805002000000000FFFFFFFF2E
+:08BCC000180500201805002002
+:10BCC80000000000000000002805002028050020D2
+:10BCD80030050020300500200000000000000000B2
+:10BCE80040050020400500204805002048050020A8
+:10BCF8000000000000000000580500205805002042
+:10BD08006005002060050020000000000000000021
+:10BD180070050020700500207805002078050020B7
+:10BD280000000000000000008805002088050020B1
+:10BD38009005002090050020070007000000000083
+:10BD48001CA70100785C0020000000000000000033
+:10BD5800B0050020B0050020B8050020B805002077
+:10BD6800020002000000000024A70100485C002037
+:10BD78000000000000000000D8050020D8050020C1
+:10BD8800E0050020E005002003000300000000009B
+:08BD98002CA70100005C002053
+:10BDA0001201000200000040E32F0B000402010218
+:10BDB000030109020000000100C032090400000371
+:10BDC000E001010007058103400001070502022090
+:10BDD000000107058202200001040309040E035A32
+:10BDE00045504859520000000000001003555342CE
+:10BDF0002D4445560000000000000022033031327F
+:10BE00003334353637383941424344454600000023
+:0FBE100000000000000000000000000000000023
+:01BE1F00FF23
+:10BE20000000000013060020195C0000695D00009E
+:10BE3000255C00000000000000000000030000007E
+:04BE400014000020CA
+:04000003000071E99F
+:00000001FF

BIN
docs/firmwares/images/JLINK_U.png


BIN
docs/firmwares/images/nrf52840dk.png


BIN
docs/firmwares/images/nrf52840dongle.png


+ 70 - 0
docs/同步上游代码说明.md

@@ -0,0 +1,70 @@
+# 同步上游代码说明
+
+这里简要说明一下,同步上游代码时主要修改了哪些地方。[上游官方仓库](https://github.com/apache/mynewt-nimble)
+
+## NimBLE 目录结构
+
+```
+NimBLE
+   ├───apps                   /* Bluetooth 示例应用程序 */
+   ├───docs                   /* 文档及 API 说明 */
+   ├───ext
+   │   └───tinycrypt          /* Tinycrypt 加密库 */
+   ├───nimble
+   │   ├───controller         /* Controller 实现 */
+   │   ├───doc                /* 当前包含 transport 层说明文档 */   
+   │   ├───drivers            /* Nordic 系列 Phy 驱动 */
+   │   ├───host               /* Host Stack(主机控制器)实现 */
+   │   ├───include
+   │   └───transport          /* HCI 传输抽象层 */
+   └───porting                /* OS 抽象层及系统配置 */
+```
+
+## apps 
+
+此目录下都为 Bluetooth 示例应用程序,大部分程序做了 RT-Thread 的适配,已有的例程建议不要直接覆盖;官方对此部分改动应该不会很大,要对照实际内容修改,也可在 debug 过程中修改代码。
+
+官方写的新例程可以尝试添加一下,并按照其他例程形式修改一下在 RT-Thread 上跑起来。
+
+## docs
+
+此目录下都为文档资料,包含官方文档,也有后续 rt-thread 社区小伙伴 PR 的文档。官方文档可以更新一下,基本内容都比较少。
+
+## ext
+
+目录下包含扩展库,目前包含了一个 Tinycrypt 加密库,提供了一个最小的标准密码原语集,可以跟着官方更新一下。
+
+## nimble
+
+nimble 目录下的文件基本上都是协议栈的主干部分,包括 controller 、host 和 transport HCI 传输抽象层的东西。 此部分代码与 RT-Thread 基本没有耦合,属于协议栈本身代码;如果要同步到上游,这一部分文件基本都要同步。
+
+不过要注意 transport 下 RT-Thread UART 对接 HCI 的代码,如果 HCI 层框架改变了,则需要进行相应调整。
+
+## porting
+
+porting 目录如下
+
+```
+porting                /* OS 抽象层及系统配置 */
+    ├───nimble
+    │   ├───include
+    │   └───src
+    └───npl
+        └───rtthread       /* RT-Thread OS 接口实现 */
+            ├───include
+            │   ├───config /* NimBLE 协议栈配置选项 */
+            │   ├───console
+            │   └───nimble
+            └───src
+```
+
+基本是 OS 抽象层与 rtthread 的对接代码,包括系统配置等等。
+
+-   porting/nimble 目录下代码主要是定义 OS 抽象层框架 和 系统配置,可以同步到上游。
+-   npl/rtthread 则是 OS 抽象层对接 RT-Thread 的移植代码,一般保留不动,如遇到 bug 可能需要适当调整。
+
+## SConscript 文件
+
+SConscript 文件在 NimBLE 软件包根目录下,是 Scons 构建工具的构建描述文件。
+
+在同步上游代码后,需要针对实际编译情况对此文件进行相应修改,如移除某些文件,添加某些头文件路径,添加某些源文件加入编译等。

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません