From 421db65331663304466577b7187780d9eba18077 Mon Sep 17 00:00:00 2001 From: Amlal Date: Sat, 28 Sep 2024 19:13:46 +0200 Subject: feat: Add common XPCOM controls directory, restructure project, and introduce API breaking changes - Added a new directory for common XPCOM controls to organize reusable components. - Restructured project layout for better modularity and maintainability. - Introduced API breaking changes in the process, requiring adjustments for backward compatibility. Signed-off-by: Amlal --- dev/comm/xpcom_sms.idl | 31 ++++ dev/crt/ReadMe.md | 2 +- dev/crt/__ndk_alloca.hxx | 18 -- dev/crt/__ndk_defines.hxx | 121 -------------- dev/crt/__ndk_exception.hxx | 35 ---- dev/crt/__ndk_new_delete.hxx | 28 ---- dev/crt/alloca.hxx | 18 ++ dev/crt/base_alloc.hxx | 49 ++++++ dev/crt/base_exception.hxx | 35 ++++ dev/crt/crt.json | 4 +- dev/crt/defines.hxx | 124 ++++++++++++++ dev/crt/math.hxx | 34 ++-- dev/crt/src/__ndk_runtime.cxx | 12 -- dev/crt/src/crt_lib.cxx | 13 ++ dev/ddk/KernelDev.h | 32 ---- dev/ddk/KernelPrint.h | 18 -- dev/ddk/KernelStd.h | 105 ------------ dev/ddk/KernelString.h | 17 -- dev/ddk/ddk.h | 105 ++++++++++++ dev/ddk/dev.h | 32 ++++ dev/ddk/io.h | 18 ++ dev/ddk/src/KernelAlloc.c | 36 ---- dev/ddk/src/KernelCall.c | 60 ------- dev/ddk/src/KernelCallDispatch.S | 36 ---- dev/ddk/src/KernelCxxRt.cxx | 29 ---- dev/ddk/src/KernelDev.c | 29 ---- dev/ddk/src/KernelPrint.c | 37 ----- dev/ddk/src/KernelString.c | 39 ----- dev/ddk/src/KernelVersion.c | 25 --- dev/ddk/src/ddk_alloc.c | 36 ++++ dev/ddk/src/ddk_dev.c | 29 ++++ dev/ddk/src/ddk_io.c | 37 +++++ dev/ddk/src/ddk_kernel_call.c | 60 +++++++ dev/ddk/src/ddk_kernel_call_dispatch.S | 36 ++++ dev/ddk/src/ddk_rt_cxx.cxx | 29 ++++ dev/ddk/src/ddk_str.c | 39 +++++ dev/ddk/src/ddk_ver.c | 25 +++ dev/ddk/str.h | 17 ++ dev/sci/makefile | 2 +- dev/sci/sci.json | 2 +- dev/sci/source_deploy.xml | 3 - dev/sci/xpcom_sms.idl | 34 ---- dev/zba/amd64-efi.make | 4 +- meta/LICENSE.rtf | 289 --------------------------------- meta/sdk_install.iss | 13 +- meta/zka_licensing.rtf | 289 +++++++++++++++++++++++++++++++++ 46 files changed, 1052 insertions(+), 1034 deletions(-) create mode 100644 dev/comm/xpcom_sms.idl delete mode 100644 dev/crt/__ndk_alloca.hxx delete mode 100644 dev/crt/__ndk_defines.hxx delete mode 100644 dev/crt/__ndk_exception.hxx delete mode 100644 dev/crt/__ndk_new_delete.hxx create mode 100644 dev/crt/alloca.hxx create mode 100644 dev/crt/base_alloc.hxx create mode 100644 dev/crt/base_exception.hxx create mode 100644 dev/crt/defines.hxx delete mode 100644 dev/crt/src/__ndk_runtime.cxx create mode 100644 dev/crt/src/crt_lib.cxx delete mode 100644 dev/ddk/KernelDev.h delete mode 100644 dev/ddk/KernelPrint.h delete mode 100644 dev/ddk/KernelStd.h delete mode 100644 dev/ddk/KernelString.h create mode 100644 dev/ddk/ddk.h create mode 100644 dev/ddk/dev.h create mode 100644 dev/ddk/io.h delete mode 100644 dev/ddk/src/KernelAlloc.c delete mode 100644 dev/ddk/src/KernelCall.c delete mode 100644 dev/ddk/src/KernelCallDispatch.S delete mode 100644 dev/ddk/src/KernelCxxRt.cxx delete mode 100644 dev/ddk/src/KernelDev.c delete mode 100644 dev/ddk/src/KernelPrint.c delete mode 100644 dev/ddk/src/KernelString.c delete mode 100644 dev/ddk/src/KernelVersion.c create mode 100644 dev/ddk/src/ddk_alloc.c create mode 100644 dev/ddk/src/ddk_dev.c create mode 100644 dev/ddk/src/ddk_io.c create mode 100644 dev/ddk/src/ddk_kernel_call.c create mode 100644 dev/ddk/src/ddk_kernel_call_dispatch.S create mode 100644 dev/ddk/src/ddk_rt_cxx.cxx create mode 100644 dev/ddk/src/ddk_str.c create mode 100644 dev/ddk/src/ddk_ver.c create mode 100644 dev/ddk/str.h delete mode 100644 dev/sci/xpcom_sms.idl delete mode 100644 meta/LICENSE.rtf create mode 100644 meta/zka_licensing.rtf diff --git a/dev/comm/xpcom_sms.idl b/dev/comm/xpcom_sms.idl new file mode 100644 index 00000000..27736153 --- /dev/null +++ b/dev/comm/xpcom_sms.idl @@ -0,0 +1,31 @@ +/* ------------------------------------------- + +Copyright ZKA Technologies. + +Purpose: SMS XPCOM interface + +------------------------------------------- */ + +#ifndef __NDK__ +#define object class +#define protocol class +#define interface private +#define interface_method +#define CONST const +#define CHAR char +#define INT32 __INT32_TYPE__ +#define SIZE_T __SIZE_TYPE__ +#define _Output +#define _Input +#define clsid(X) + +#warning ! You may be using the clang version of the ZKAKit, please be cautious that some features mayn't be present. ! +#endif // !__NDK__ + +clsid("0943A614-0201-4107-8F8D-E909DF7F53C9") +protocol ISMS +{ +interface: + interface_method INT32 SendMessage(_Input CONST CHAR* bytes, _Input SIZE_T bytes_size); + interface_method INT32 RecvMessage(_Output CONST CHAR** bytes_in, _Input SIZE_T bytes_size); +}; diff --git a/dev/crt/ReadMe.md b/dev/crt/ReadMe.md index c90f5b5f..4f8ad4f5 100644 --- a/dev/crt/ReadMe.md +++ b/dev/crt/ReadMe.md @@ -1,4 +1,4 @@ -# ZKA C++ RunTime. +# ZKA C++ RunTime Kit. This is the public interface of ZKA' C++ RunTime. diff --git a/dev/crt/__ndk_alloca.hxx b/dev/crt/__ndk_alloca.hxx deleted file mode 100644 index 3c796bf2..00000000 --- a/dev/crt/__ndk_alloca.hxx +++ /dev/null @@ -1,18 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - - File: __ndk_alloca.hxx - Purpose: Stack allocation functions. - -------------------------------------------- */ - -#pragma once - -typedef void* ptr_type; -typedef __SIZE_TYPE__ size_type; - -inline ptr_type __ndk_alloca(size_type sz) -{ - return __builtin_alloca(sz); -} diff --git a/dev/crt/__ndk_defines.hxx b/dev/crt/__ndk_defines.hxx deleted file mode 100644 index bea3f67c..00000000 --- a/dev/crt/__ndk_defines.hxx +++ /dev/null @@ -1,121 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - -------------------------------------------- */ - -#ifndef __NDK_DEFINES_HXX__ -#define __NDK_DEFINES_HXX__ - -#ifndef __GNUC__ - -typedef __SIZE_TYPE__ size_t; - -#ifdef __LP64__ -typedef long int ssize_t; -#else -typedef int ssize_t; -#endif // __LP64__ - -typedef size_t ptrdiff_t; -typedef size_t uintptr_t; -typedef void* voidptr_t; -typedef void* any_t; -typedef char* caddr_t; - -#ifndef NULL -#define NULL ((voidptr_t)0) -#endif // !null - -#ifdef __GNUC__ -#include -#define __ndk_alloca(sz) __ndk_alloca(sz) -#elif defined(__NDK__) - -#define __alloca(sz) __ndk_alloca(sz) -#endif - -#define __deref(ptr) (*(ptr)) - -#ifdef __cplusplus -#define __init_decl() \ - extern "C" \ - { -#define __fini_decl() \ - } \ - ; -#else -#define __init_decl() -#define __fini_decl() -#endif - -#if __has_builtin(__builtin_alloca) -#define alloca(sz) __builtin_alloca(sz) -#ifdef __alloca -#undef __alloca -#endif -#define __alloca alloca -#else -#warning alloca not detected -#endif - -typedef long long off_t; -typedef unsigned long long uoff_t; - -typedef union float_cast { - struct - { - unsigned int mantissa : 23; - unsigned int exponent : 8; - unsigned int sign : 1; - }; - - float f; -} __attribute__((packed)) float_cast_t; - -typedef union double_cast { - struct - { - unsigned long long int mantissa : 52; - unsigned int exponent : 11; - unsigned int sign : 1; - }; - - double f; -} __attribute__((packed)) double_cast_t; - -#endif // ifndef __GNUC__ - -/// Include these helpers as well. - -#ifdef __STD_CXX__ - -#include -#include - -#endif // ifdef __STD_CXX__ - -namespace std -{ - /// @brief Forward object. - /// @tparam Args the object type. - /// @param arg the object. - /// @return object's rvalue - template - inline Args&& forward(Args& arg) - { - return static_cast(arg); - } - - /// @brief Move object. - /// @tparam Args the object type. - /// @param arg the object. - /// @return object's rvalue - template - inline Args&& move(Args&& arg) - { - return static_cast(arg); - } -} // namespace std - -#endif /* __NDK_DEFINES_HXX__ */ diff --git a/dev/crt/__ndk_exception.hxx b/dev/crt/__ndk_exception.hxx deleted file mode 100644 index 67735a9d..00000000 --- a/dev/crt/__ndk_exception.hxx +++ /dev/null @@ -1,35 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - -------------------------------------------- */ - -#pragma once - -#include - -/// @brief CRT exit, with exit code (!!! exits all threads. !!!) -/// @param code -/// @return -extern "C" int __exit(int code); - -/// @brief Standard C++ namespace -namespace std -{ - inline void __throw_general(void) - { - __exit(33); - } - - inline void __throw_domain_error(const char* error) - { - __throw_general(); - __builtin_unreachable(); // prevent from continuing. - } - - inline void __throw_bad_array_new_length(void) - { - __throw_general(); - __builtin_unreachable(); // prevent from continuing. - } -} // namespace std diff --git a/dev/crt/__ndk_new_delete.hxx b/dev/crt/__ndk_new_delete.hxx deleted file mode 100644 index fad61aa9..00000000 --- a/dev/crt/__ndk_new_delete.hxx +++ /dev/null @@ -1,28 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - -------------------------------------------- */ - -#pragma once - -#include - -namespace stdx -{ - /// @brief allocate a new class. - /// @tparam KindClass the class type to allocate. - template - inline void* allocate(Args&&... args) - { - return new KindClass(forward(args)...); - } - - /// @brief free a class. - /// @tparam KindClass the class type to allocate. - template - inline void release(KindClass ptr) - { - delete ptr; - } -} // namespace stdx diff --git a/dev/crt/alloca.hxx b/dev/crt/alloca.hxx new file mode 100644 index 00000000..fedcb25d --- /dev/null +++ b/dev/crt/alloca.hxx @@ -0,0 +1,18 @@ +/* ------------------------------------------- + + Copyright ZKA Technologies. + + File: alloca.hxx + Purpose: Stack allocation functions. + +------------------------------------------- */ + +#pragma once + +typedef void* ptr_type; +typedef __SIZE_TYPE__ size_type; + +inline ptr_type __ndk_alloca(size_type sz) +{ + return __builtin_alloca(sz); +} diff --git a/dev/crt/base_alloc.hxx b/dev/crt/base_alloc.hxx new file mode 100644 index 00000000..de157866 --- /dev/null +++ b/dev/crt/base_alloc.hxx @@ -0,0 +1,49 @@ +/* ------------------------------------------- + + Copyright ZKA Technologies. + +------------------------------------------- */ + +#pragma once + +#include + +namespace std::base_alloc +{ + /// @brief allocate a new class. + /// @tparam KindClass the class type to allocate. + template + inline KindClass* allocate(Args&&... args) + { + return new KindClass(forward(args)...); + } + + /// @brief allocate a new class. + /// @note aborts on error. + /// @tparam KindClass the class type to allocate. + template + inline KindClass* allocate_nothrow(Args&&... args) noexcept + { + return allocate(forward(args)...); + } + + /// @brief free a class. + /// @tparam KindClass the class type to allocate. + template + inline void release(KindClass ptr) + { + if (!ptr) + return; + + delete ptr; + } + + /// @brief destroy and free a class. + /// @note aborts on error. + /// @tparam KindClass the class type to allocate. + template + inline void release_nothrow(KindClass ptr) noexcept + { + release(ptr); + } +} // namespace std::base_alloc diff --git a/dev/crt/base_exception.hxx b/dev/crt/base_exception.hxx new file mode 100644 index 00000000..9d3fd208 --- /dev/null +++ b/dev/crt/base_exception.hxx @@ -0,0 +1,35 @@ +/* ------------------------------------------- + + Copyright ZKA Technologies. + +------------------------------------------- */ + +#pragma once + +#include + +/// @brief CRT exit, with exit code (!!! exits all threads. !!!) +/// @param code +/// @return +extern "C" int __exit(int code); + +/// @brief Standard C++ namespace +namespace std +{ + inline void __throw_general(void) + { + __exit(33); + } + + inline void __throw_domain_error(const char* error) + { + __throw_general(); + __builtin_unreachable(); // prevent from continuing. + } + + inline void __throw_bad_array_new_length(void) + { + __throw_general(); + __builtin_unreachable(); // prevent from continuing. + } +} // namespace std diff --git a/dev/crt/crt.json b/dev/crt/crt.json index dbca05fa..07368550 100644 --- a/dev/crt/crt.json +++ b/dev/crt/crt.json @@ -3,13 +3,13 @@ "compiler_std": "c++20", "headers_path": ["../", "./"], "sources_path": ["src/*.cxx"], - "output_name": "ndkcrt.dll", + "output_name": "zka-crt-cxx.dll", "compiler_flags": [ "-ffreestanding", "-shared", "-fno-rtti", "-fno-exceptions", - " -Wl,--subsystem=17" + "-Wl,--subsystem=17" ], "cpp_macros": [ "__CRT_AMD64__", diff --git a/dev/crt/defines.hxx b/dev/crt/defines.hxx new file mode 100644 index 00000000..11a76ded --- /dev/null +++ b/dev/crt/defines.hxx @@ -0,0 +1,124 @@ +/* ------------------------------------------- + + Copyright ZKA Technologies. + +------------------------------------------- */ + +#ifndef __NDK_DEFINES_HXX__ +#define __NDK_DEFINES_HXX__ + +#include +#include + +#ifndef __GNUC__ + +typedef __SIZE_TYPE__ size_t; + +#ifdef __LP64__ +typedef long int ssize_t; +#else +typedef int ssize_t; +#endif // __LP64__ + +typedef size_t ptrdiff_t; +typedef size_t uintptr_t; +typedef void* voidptr_t; +typedef void* any_t; +typedef char* caddr_t; + +#ifndef NULL +#define NULL ((voidptr_t)0) +#endif // !null + +#ifdef __GNUC__ +#include +#define __ndk_alloca(sz) __ndk_alloca(sz) +#elif defined(__NDK__) + +#define __alloca(sz) __ndk_alloca(sz) +#endif + +#define __deref(ptr) (*(ptr)) + +#ifdef __cplusplus +#define __init_decl() \ + extern "C" \ + { +#define __fini_decl() \ + } \ + ; +#else +#define __init_decl() +#define __fini_decl() +#endif + +#if __has_builtin(__builtin_alloca) +#define alloca(sz) __builtin_alloca(sz) +#ifdef __alloca +#undef __alloca +#endif +#define __alloca alloca +#else +#warning alloca not detected +#endif + +typedef long long off_t; +typedef unsigned long long uoff_t; + +typedef union float_cast { + struct + { + unsigned int mantissa : 23; + unsigned int exponent : 8; + unsigned int sign : 1; + }; + + float f; +} __attribute__((packed)) float_cast_t; + +typedef union double_cast { + struct + { + unsigned long long int mantissa : 52; + unsigned int exponent : 11; + unsigned int sign : 1; + }; + + double f; +} __attribute__((packed)) double_cast_t; + +#endif // ifndef __GNUC__ + +/// Include these helpers as well. + +#ifdef __STD_CXX__ + +#include +#include + +#endif // ifdef __STD_CXX__ + +namespace std +{ + /// @brief Forward object. + /// @tparam Args the object type. + /// @param arg the object. + /// @return object's rvalue + template + inline Args&& forward(Args& arg) + { + return static_cast(arg); + } + + /// @brief Move object. + /// @tparam Args the object type. + /// @param arg the object. + /// @return object's rvalue + template + inline Args&& move(Args&& arg) + { + return static_cast(arg); + } +} // namespace std + +#endif /* __NDK_DEFINES_HXX__ */ diff --git a/dev/crt/math.hxx b/dev/crt/math.hxx index 5f55b430..56bb1236 100644 --- a/dev/crt/math.hxx +++ b/dev/crt/math.hxx @@ -6,24 +6,22 @@ #pragma once -#include +#include /// @file Math.hxx /// @brief Math functions. -namespace CRT -{ - using namespace Kernel; - #ifdef __ZKA_USE_DOUBLE__ - typedef double Real; +typedef double real_type; #else - typedef float Real; +typedef float real_type; #endif +namespace std::math +{ /// @brief Power function, with Repeat argument. - template - inline Real Pow(Real in) + template + inline real_type pow(real_type in) { if (Exponent == 0) return 1; // Any number to the power of 0 is 1. @@ -31,11 +29,11 @@ namespace CRT if (Exponent == 1) return in; // Any number to the power of 1 is itself. - UInt64 cnt = Exponent; + size_t cnt = Exponent; - Real result = 1; + real_type result = 1; - for (auto i = 0; i < (cnt); ++i) + for (auto i = 0; i < cnt; ++i) result *= in; return result; @@ -43,22 +41,22 @@ namespace CRT /// @brief Square of function, with Base template argument. /// @param of Base argument to find sqquare of - template - inline Real SqrOf(Real in) + template + inline real_type sqr(real_type in) { if (in == 0) return 0; - return Pow<1 / Base>(in); + return pow<1 / Base>(in); } /// @brief Linear interpolation equation solver. /// @param from where? /// @param to to? /// @param Updated diff value according to difference. - inline Real CGLerp(Real to, Real from, Real stat) + inline real_type lerp(real_type to, real_type from, real_type stat) { - Real diff = (to - from); + real_type diff = (to - from); return from + (diff * stat); } -} // namespace CRT +} // namespace std::math diff --git a/dev/crt/src/__ndk_runtime.cxx b/dev/crt/src/__ndk_runtime.cxx deleted file mode 100644 index b81963a8..00000000 --- a/dev/crt/src/__ndk_runtime.cxx +++ /dev/null @@ -1,12 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - -------------------------------------------- */ - -#include -#include -#include -#include - -/// @note No sources needed for now. diff --git a/dev/crt/src/crt_lib.cxx b/dev/crt/src/crt_lib.cxx new file mode 100644 index 00000000..530e40db --- /dev/null +++ b/dev/crt/src/crt_lib.cxx @@ -0,0 +1,13 @@ +/* ------------------------------------------- + + Copyright ZKA Technologies. + +------------------------------------------- */ + +#include +#include +#include +#include +#include + +/// @note Just here for building. diff --git a/dev/ddk/KernelDev.h b/dev/ddk/KernelDev.h deleted file mode 100644 index b7dce834..00000000 --- a/dev/ddk/KernelDev.h +++ /dev/null @@ -1,32 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - - Purpose: DDK Devices. - -------------------------------------------- */ - -#pragma once - -#include - -struct _KERNEL_DEVICE; - -/// @brief Kernel Device driver. -typedef struct _KERNEL_DEVICE DK_FINAL -{ - char d_name[255]; // the device name. Could be /./DEVICE_NAME/ - void* (*d_read)(void* arg, int len); // read from device. - void (*d_write)(void* arg, int len); - void (*d_wait)(void); // write to device. - struct _KERNEL_DEVICE* (*d_open)(const char* path); // open device. - void (*d_close)(struct _KERNEL_DEVICE* dev); // close device. -} KERNEL_DEVICE, *KERNEL_DEVICE_PTR; - -/// @brief Open a new device from path. -/// @param devicePath the device's path. -DK_EXTERN KERNEL_DEVICE_PTR KernelOpenDevice(const char* devicePath); - -/// @brief Close any device. -/// @param device valid device. -DK_EXTERN void KernelCloseDevice(KERNEL_DEVICE_PTR device); diff --git a/dev/ddk/KernelPrint.h b/dev/ddk/KernelPrint.h deleted file mode 100644 index 6ab6118e..00000000 --- a/dev/ddk/KernelPrint.h +++ /dev/null @@ -1,18 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - - Purpose: DDK Text I/O. - -------------------------------------------- */ - -#pragma once - -#include - -/// @brief print character into UART. -DK_EXTERN void KernelPrintChar(const char ch); - -/// @brief print string to UART. -/// @param message string to transmit to UART. -DK_EXTERN void KernelPrintStr(const char* message); diff --git a/dev/ddk/KernelStd.h b/dev/ddk/KernelStd.h deleted file mode 100644 index 89fe786d..00000000 --- a/dev/ddk/KernelStd.h +++ /dev/null @@ -1,105 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - - FILE: KernelStd.h - PURPOSE: DDK Driver model base header. - -------------------------------------------- */ - -#pragma once - -#include -#include - -#if defined(__cplusplus) -#define DK_EXTERN extern "C" __declspec(dllexport) -#define nil nullptr -#undef NULL -#define NULL 0 -#define DK_FINAL final -#else -#define DK_EXTERN extern __declspec(dllexport) -#define nil ((void*)0) -#undef NULL -#define NULL ((void*)0) -#define DK_FINAL -#endif // defined(__cplusplus) - -#ifndef __DDK__ -#undef DK_EXTERN -#if defined(__cplusplus) -#define DK_EXTERN extern "C" __declspec(dllimport) -#else -#define DK_EXTERN __declspec(dllimport) -#endif -#endif - -#define ATTRIBUTE(X) __attribute__((X)) - -#ifndef __NEWOSKRNL__ -#error !!! including header in low exception/ring-3 mode !!! -#endif // __NEWOSKRNL__ - -struct DDK_STATUS_STRUCT; -struct DDK_OBJECT_MANIFEST; - -struct DDK_OBJECT_MANIFEST DK_FINAL -{ - char* p_name; - int32_t p_kind; - void* p_object; -}; - -/// \brief DDK status structure (__at_enable, __at_disable...) -struct DDK_STATUS_STRUCT DK_FINAL -{ - int32_t s_action_id; - int32_t s_issuer_id; - int32_t s_group_id; - void* s_object; -}; - -/// @brief Call Kernel (interrupt 0x33) -/// @param KernelRpcName -/// @param cnt number of elements in **dat** -/// @param dat data ptr -/// @param sz sz of whole data ptr. -/// @return result of call -DK_EXTERN void* KernelCall(const char* name, int32_t cnt, void* dat, size_t sz); - -/// @brief add system call. -/// @param slot system call slot -/// @param slotFn, syscall slot. -DK_EXTERN void KernelAddSyscall(const int32_t slot, void (*slotFn)(void* a0)); - -/// @brief allocate heap ptr. -/// @param sz size of ptr. -/// @return the pointer allocated or **nil**. -DK_EXTERN void* KernelAlloc(size_t sz); - -/// @brief free heap ptr. -/// @param pointer to free -DK_EXTERN void KernelFree(void*); - -/// @brief Get a Kernel property. -/// @param slot property id (always 0) -/// @param name the property's name. -/// @return property's object. -DK_EXTERN struct DDK_OBJECT_MANIFEST* KernelGetObject(const int slot, const char* name); - -/// @brief Set a Kernel property. -/// @param slot property id (always 0) -/// @param name the property's name. -/// @param ddk_pr pointer to a property's DDK_OBJECT_MANIFEST. -/// @return property's object. -DK_EXTERN void* KernelSetObject(const int32_t slot, const struct DDK_OBJECT_MANIFEST* ddk_pr); - -/// @brief The highest API version of the DDK. -DK_EXTERN int32_t c_api_version_highest; - -/// @brief The lowest API version of the DDK. -DK_EXTERN int32_t c_api_version_least; - -/// @brief c_api_version_least+c_api_version_highest combined version. -DK_EXTERN int32_t c_api_version; diff --git a/dev/ddk/KernelString.h b/dev/ddk/KernelString.h deleted file mode 100644 index 01d7d919..00000000 --- a/dev/ddk/KernelString.h +++ /dev/null @@ -1,17 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - - Purpose: DDK Strings. - -------------------------------------------- */ - -#pragma once - -#include - -/// @brief DDK equivalent of POSIX's string.h -/// @file KernelString.h - -DK_EXTERN size_t KernelStringLength(const char* in); -DK_EXTERN int KernelStringCopy(char* dst, const char* src, size_t len); diff --git a/dev/ddk/ddk.h b/dev/ddk/ddk.h new file mode 100644 index 00000000..89fe786d --- /dev/null +++ b/dev/ddk/ddk.h @@ -0,0 +1,105 @@ +/* ------------------------------------------- + + Copyright ZKA Technologies. + + FILE: KernelStd.h + PURPOSE: DDK Driver model base header. + +------------------------------------------- */ + +#pragma once + +#include +#include + +#if defined(__cplusplus) +#define DK_EXTERN extern "C" __declspec(dllexport) +#define nil nullptr +#undef NULL +#define NULL 0 +#define DK_FINAL final +#else +#define DK_EXTERN extern __declspec(dllexport) +#define nil ((void*)0) +#undef NULL +#define NULL ((void*)0) +#define DK_FINAL +#endif // defined(__cplusplus) + +#ifndef __DDK__ +#undef DK_EXTERN +#if defined(__cplusplus) +#define DK_EXTERN extern "C" __declspec(dllimport) +#else +#define DK_EXTERN __declspec(dllimport) +#endif +#endif + +#define ATTRIBUTE(X) __attribute__((X)) + +#ifndef __NEWOSKRNL__ +#error !!! including header in low exception/ring-3 mode !!! +#endif // __NEWOSKRNL__ + +struct DDK_STATUS_STRUCT; +struct DDK_OBJECT_MANIFEST; + +struct DDK_OBJECT_MANIFEST DK_FINAL +{ + char* p_name; + int32_t p_kind; + void* p_object; +}; + +/// \brief DDK status structure (__at_enable, __at_disable...) +struct DDK_STATUS_STRUCT DK_FINAL +{ + int32_t s_action_id; + int32_t s_issuer_id; + int32_t s_group_id; + void* s_object; +}; + +/// @brief Call Kernel (interrupt 0x33) +/// @param KernelRpcName +/// @param cnt number of elements in **dat** +/// @param dat data ptr +/// @param sz sz of whole data ptr. +/// @return result of call +DK_EXTERN void* KernelCall(const char* name, int32_t cnt, void* dat, size_t sz); + +/// @brief add system call. +/// @param slot system call slot +/// @param slotFn, syscall slot. +DK_EXTERN void KernelAddSyscall(const int32_t slot, void (*slotFn)(void* a0)); + +/// @brief allocate heap ptr. +/// @param sz size of ptr. +/// @return the pointer allocated or **nil**. +DK_EXTERN void* KernelAlloc(size_t sz); + +/// @brief free heap ptr. +/// @param pointer to free +DK_EXTERN void KernelFree(void*); + +/// @brief Get a Kernel property. +/// @param slot property id (always 0) +/// @param name the property's name. +/// @return property's object. +DK_EXTERN struct DDK_OBJECT_MANIFEST* KernelGetObject(const int slot, const char* name); + +/// @brief Set a Kernel property. +/// @param slot property id (always 0) +/// @param name the property's name. +/// @param ddk_pr pointer to a property's DDK_OBJECT_MANIFEST. +/// @return property's object. +DK_EXTERN void* KernelSetObject(const int32_t slot, const struct DDK_OBJECT_MANIFEST* ddk_pr); + +/// @brief The highest API version of the DDK. +DK_EXTERN int32_t c_api_version_highest; + +/// @brief The lowest API version of the DDK. +DK_EXTERN int32_t c_api_version_least; + +/// @brief c_api_version_least+c_api_version_highest combined version. +DK_EXTERN int32_t c_api_version; diff --git a/dev/ddk/dev.h b/dev/ddk/dev.h new file mode 100644 index 00000000..2a3aeb18 --- /dev/null +++ b/dev/ddk/dev.h @@ -0,0 +1,32 @@ +/* ------------------------------------------- + + Copyright ZKA Technologies. + + Purpose: DDK Devices. + +------------------------------------------- */ + +#pragma once + +#include + +struct _KERNEL_DEVICE; + +/// @brief Kernel Device driver. +typedef struct _KERNEL_DEVICE DK_FINAL +{ + char d_name[255]; // the device name. Could be /./DEVICE_NAME/ + void* (*d_read)(void* arg, int len); // read from device. + void (*d_write)(void* arg, int len); + void (*d_wait)(void); // write to device. + struct _KERNEL_DEVICE* (*d_open)(const char* path); // open device. + void (*d_close)(struct _KERNEL_DEVICE* dev); // close device. +} KERNEL_DEVICE, *KERNEL_DEVICE_PTR; + +/// @brief Open a new device from path. +/// @param devicePath the device's path. +DK_EXTERN KERNEL_DEVICE_PTR KernelOpenDevice(const char* devicePath); + +/// @brief Close any device. +/// @param device valid device. +DK_EXTERN void KernelCloseDevice(KERNEL_DEVICE_PTR device); diff --git a/dev/ddk/io.h b/dev/ddk/io.h new file mode 100644 index 00000000..ece8d059 --- /dev/null +++ b/dev/ddk/io.h @@ -0,0 +1,18 @@ +/* ------------------------------------------- + + Copyright ZKA Technologies. + + Purpose: DDK Text I/O. + +------------------------------------------- */ + +#pragma once + +#include + +/// @brief print character into UART. +DK_EXTERN void KernelPrintChar(const char ch); + +/// @brief print string to UART. +/// @param message string to transmit to UART. +DK_EXTERN void KernelPrintStr(const char* message); diff --git a/dev/ddk/src/KernelAlloc.c b/dev/ddk/src/KernelAlloc.c deleted file mode 100644 index af99f23b..00000000 --- a/dev/ddk/src/KernelAlloc.c +++ /dev/null @@ -1,36 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - - Purpose: DDK allocator. - -------------------------------------------- */ - -#include - -/** - \brief Allocates a new heap on the Kernel's side. - \param sz the size of the heap block. - \return the newly allocated pointer. -*/ -DK_EXTERN void* KernelAlloc(size_t sz) -{ - if (!sz) - ++sz; - - void* ptr = KernelCall("MmNewKeHeap", 1, &sz, sizeof(size_t)); - - return ptr; -} - -/** - \brief Frees a pointer from the heap. - \param ptr the pointer to free. -*/ -DK_EXTERN void KernelFree(void* ptr) -{ - if (!ptr) - return; - - KernelCall("MmDeleteKeHeap", 1, ptr, 0); -} diff --git a/dev/ddk/src/KernelCall.c b/dev/ddk/src/KernelCall.c deleted file mode 100644 index ccb401af..00000000 --- a/dev/ddk/src/KernelCall.c +++ /dev/null @@ -1,60 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - - Purpose: DDK Kernel call. - -------------------------------------------- */ - -#include -#include - -/// @brief this is an internal call, do not use it. -DK_EXTERN ATTRIBUTE(naked) void* __KernelCallDispatch(const char* name, int32_t cnt, void* data, size_t sz); - -/// @brief Interupt Kernel -/// @param KernelRpcName RPC name -/// @param cnt number of elements in **data** pointer. -/// @param data data pointer. -/// @param sz The size of the whole data pointer. -/// @retval void* Kernel call was successful. -/// @retval nil Kernel call failed, call KernelLastError(void) -DK_EXTERN void* KernelCall(const char* name, int32_t cnt, void* data, size_t sz) -{ - if (!name || *name == 0 || cnt == 0) - return nil; - - return __KernelCallDispatch(name, cnt, data, sz); -} - -/// @brief Add system call. -/// @param slot system call slot -/// @param slotFn, syscall slot. -DK_EXTERN void KernelAddSyscall(const int slot, void (*slotFn)(void* a0)) -{ - KernelCall("IntAddSyscall", slot, slotFn, 1); -} - -/// @brief Get a Kernel property. -/// @param slot property id (always 0) -/// @param name the object's name. -/// @return Object manifest. -DK_EXTERN struct DDK_OBJECT_MANIFEST* KernelGetObject(const int slot, const char* name) -{ - struct DDK_OBJECT_MANIFEST* manifest = (struct DDK_OBJECT_MANIFEST*)KernelCall("RtlGetObject", slot, (void*)name, 1); - - if (!manifest) - return nil; - - return manifest; -} - -/// @brief Set a Kernel property. -/// @param slot property id (always 0) -/// @param name the object's name. -/// @param ddk_pr pointer to a object's DDK_OBJECT_MANIFEST. -/// @return property's object. -DK_EXTERN void* KernelSetObject(const int slot, const struct DDK_OBJECT_MANIFEST* ddk_pr) -{ - return KernelCall("RtlSetObject", slot, (void*)ddk_pr, 1); -} diff --git a/dev/ddk/src/KernelCallDispatch.S b/dev/ddk/src/KernelCallDispatch.S deleted file mode 100644 index 3a9a57b5..00000000 --- a/dev/ddk/src/KernelCallDispatch.S +++ /dev/null @@ -1,36 +0,0 @@ -/** - lang: asm - compiler: gnu - */ - -.globl __KernelCallDispatch - -.text - -/* Really simple function, takes our va-list, - and brings it to the trap handler in the Kernel. */ - -#ifdef __DDK_AMD64__ - -/* args rcx, rdx, r8, r9 */ -__KernelCallDispatch: - int $0x33 - ret - -#elif defined(__DDK_POWER64__) - -/* args r8, r9, r10, r11 */ -__KernelCallDispatch: - /* There is no specific interrupt request id for a system call in POWER. */ - sc - blr - -#elif defined(__DDK_ARM64__) - -/* args x0, x8, x9, x10, x11 is kept to tell that this is a Kernel call */ -__KernelCallDispatch: - /* There is no specific interrupt request id for a system call in ARM64 as well. */ - mov x9, #0x33 - svc #0 - -#endif diff --git a/dev/ddk/src/KernelCxxRt.cxx b/dev/ddk/src/KernelCxxRt.cxx deleted file mode 100644 index 947e2de7..00000000 --- a/dev/ddk/src/KernelCxxRt.cxx +++ /dev/null @@ -1,29 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - - Purpose: DDK C++ runtime. - -------------------------------------------- */ - -#include - -void* operator new(size_t sz) -{ - return KernelAlloc(sz); -} - -void operator delete(void* ptr) -{ - KernelFree(ptr); -} - -void* operator new[](size_t sz) -{ - return KernelAlloc(sz); -} - -void operator delete[](void* ptr) -{ - KernelFree(ptr); -} diff --git a/dev/ddk/src/KernelDev.c b/dev/ddk/src/KernelDev.c deleted file mode 100644 index 3cf7ed48..00000000 --- a/dev/ddk/src/KernelDev.c +++ /dev/null @@ -1,29 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - - Purpose: DDK Text I/O. - -------------------------------------------- */ - -#include -#include - -/// @brief Open a new binary device from path. -DK_EXTERN KERNEL_DEVICE_PTR KernelOpenDevice(const char* devicePath) -{ - if (!devicePath) - return nil; - - return KernelCall("ZkOpenDevice", 1, (void*)devicePath, KernelStringLength(devicePath)); -} - -/// @brief Close any device. -/// @param device valid device. -DK_EXTERN void KernelCloseDevice(KERNEL_DEVICE_PTR device) -{ - if (!device) - return; - - KernelCall("ZkCloseDevice", 1, device, sizeof(KERNEL_DEVICE)); -} diff --git a/dev/ddk/src/KernelPrint.c b/dev/ddk/src/KernelPrint.c deleted file mode 100644 index 7f8c8604..00000000 --- a/dev/ddk/src/KernelPrint.c +++ /dev/null @@ -1,37 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - - Purpose: DDK Text I/O. - -------------------------------------------- */ - -#include - -DK_EXTERN void KernelPrintChar(const char ch) -{ - char assembled[2] = {0}; - assembled[0] = ch; - assembled[1] = 0; - - KernelCall("SrWriteCharacter", 1, assembled, 1); -} - -/// @brief print string to UART. -/// @param message UART to transmit. -DK_EXTERN void KernelPrintStr(const char* message) -{ - if (!message) - return; - if (*message == 0) - return; - - size_t index = 0; - size_t len = KernelStringLength(message); - - while (index < len) - { - KernelPrintChar(message[index]); - ++index; - } -} diff --git a/dev/ddk/src/KernelString.c b/dev/ddk/src/KernelString.c deleted file mode 100644 index 0030aa02..00000000 --- a/dev/ddk/src/KernelString.c +++ /dev/null @@ -1,39 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - - Purpose: DDK Strings. - -------------------------------------------- */ - -#include - -DK_EXTERN size_t KernelStringLength(const char* in) -{ - if (in == nil) - return 0; - if (*in == 0) - return 0; - - size_t index = 0; - - while (in[index] != 0) - { - ++index; - } - - return index; -} - -DK_EXTERN int KernelStringCopy(char* dst, const char* src, size_t len) -{ - size_t index = 0; - - while (index != len) - { - dst[index] = src[index]; - ++index; - } - - return index; -} diff --git a/dev/ddk/src/KernelVersion.c b/dev/ddk/src/KernelVersion.c deleted file mode 100644 index c40e8ff9..00000000 --- a/dev/ddk/src/KernelVersion.c +++ /dev/null @@ -1,25 +0,0 @@ -/* ------------------------------------------- - - Copyright ZKA Technologies. - - Purpose: DDK versioning. - -------------------------------------------- */ - -#include - -#ifndef cDDKVersionHighest -#define cDDKVersionHighest 1 -#endif // !cDDKVersionHighest - -#ifndef cDDKVersionLowest -#define cDDKVersionLowest 1 -#endif // !cDDKVersionLowest - -#ifndef cDDKVersion -#define cDDKVersion 1 -#endif // !cDDKVersion - -int32_t c_api_version_highest = cDDKVersionHighest; -int32_t c_api_version_least = cDDKVersionLowest; -int32_t c_api_version = cDDKVersion; diff --git a/dev/ddk/src/ddk_alloc.c b/dev/ddk/src/ddk_alloc.c new file mode 100644 index 00000000..3c379bf7 --- /dev/null +++ b/dev/ddk/src/ddk_alloc.c @@ -0,0 +1,36 @@ +/* ------------------------------------------- + + Copyright ZKA Technologies. + + Purpose: DDK allocator. + +------------------------------------------- */ + +#include + +/** + \brief Allocates a new heap on the Kernel's side. + \param sz the size of the heap block. + \return the newly allocated pointer. +*/ +DK_EXTERN void* KernelAlloc(size_t sz) +{ + if (!sz) + ++sz; + + void* ptr = KernelCall("MmNewKeHeap", 1, &sz, sizeof(size_t)); + + return ptr; +} + +/** + \brief Frees a pointer from the heap. + \param ptr the pointer to free. +*/ +DK_EXTERN void KernelFree(void* ptr) +{ + if (!ptr) + return; + + KernelCall("MmDeleteKeHeap", 1, ptr, 0); +} diff --git a/dev/ddk/src/ddk_dev.c b/dev/ddk/src/ddk_dev.c new file mode 100644 index 00000000..19dd3f55 --- /dev/null +++ b/dev/ddk/src/ddk_dev.c @@ -0,0 +1,29 @@ +/* ------------------------------------------- + + Copyright ZKA Technologies. + + Purpose: DDK Text I/O. + +------------------------------------------- */ + +#include +#include + +/// @brief Open a new binary device from path. +DK_EXTERN KERNEL_DEVICE_PTR KernelOpenDevice(const char* devicePath) +{ + if (!devicePath) + return nil; + + return KernelCall("ZkOpenDevice", 1, (void*)devicePath, KernelStringLength(devicePath)); +} + +/// @brief Close any device. +/// @param device valid device. +DK_EXTERN void KernelCloseDevice(KERNEL_DEVICE_PTR device) +{ + if (!device) + return; + + KernelCall("ZkCloseDevice", 1, device, sizeof(KERNEL_DEVICE)); +} diff --git a/dev/ddk/src/ddk_io.c b/dev/ddk/src/ddk_io.c new file mode 100644 index 00000000..de39ea48 --- /dev/null +++ b/dev/ddk/src/ddk_io.c @@ -0,0 +1,37 @@ +/* ------------------------------------------- + + Copyright ZKA Technologies. + + Purpose: DDK Text I/O. + +------------------------------------------- */ + +#include + +DK_EXTERN void KernelPrintChar(const char ch) +{ + char assembled[2] = {0}; + assembled[0] = ch; + assembled[1] = 0; + + KernelCall("SrWriteCharacter", 1, assembled, 1); +} + +/// @brief print string to UART. +/// @param message UART to transmit. +DK_EXTERN void KernelPrintStr(const char* message) +{ + if (!message) + return; + if (*message == 0) + return; + + size_t index = 0; + size_t len = KernelStringLength(message); + + while (index < len) + { + KernelPrintChar(message[index]); + ++index; + } +} diff --git a/dev/ddk/src/ddk_kernel_call.c b/dev/ddk/src/ddk_kernel_call.c new file mode 100644 index 00000000..d768cb09 --- /dev/null +++ b/dev/ddk/src/ddk_kernel_call.c @@ -0,0 +1,60 @@ +/* ------------------------------------------- + + Copyright ZKA Technologies. + + Purpose: DDK Kernel call. + +------------------------------------------- */ + +#include +#include + +/// @brief this is an internal call, do not use it. +DK_EXTERN ATTRIBUTE(naked) void* __KernelCallDispatch(const char* name, int32_t cnt, void* data, size_t sz); + +/// @brief Interupt Kernel +/// @param KernelRpcName RPC name +/// @param cnt number of elements in **data** pointer. +/// @param data data pointer. +/// @param sz The size of the whole data pointer. +/// @retval void* Kernel call was successful. +/// @retval nil Kernel call failed, call KernelLastError(void) +DK_EXTERN void* KernelCall(const char* name, int32_t cnt, void* data, size_t sz) +{ + if (!name || *name == 0 || cnt == 0) + return nil; + + return __KernelCallDispatch(name, cnt, data, sz); +} + +/// @brief Add system call. +/// @param slot system call slot +/// @param slotFn, syscall slot. +DK_EXTERN void KernelAddSyscall(const int slot, void (*slotFn)(void* a0)) +{ + KernelCall("IntAddSyscall", slot, slotFn, 1); +} + +/// @brief Get a Kernel property. +/// @param slot property id (always 0) +/// @param name the object's name. +/// @return Object manifest. +DK_EXTERN struct DDK_OBJECT_MANIFEST* KernelGetObject(const int slot, const char* name) +{ + struct DDK_OBJECT_MANIFEST* manifest = (struct DDK_OBJECT_MANIFEST*)KernelCall("RtlGetObject", slot, (void*)name, 1); + + if (!manifest) + return nil; + + return manifest; +} + +/// @brief Set a Kernel property. +/// @param slot property id (always 0) +/// @param name the object's name. +/// @param ddk_pr pointer to a object's DDK_OBJECT_MANIFEST. +/// @return property's object. +DK_EXTERN void* KernelSetObject(const int slot, const struct DDK_OBJECT_MANIFEST* ddk_pr) +{ + return KernelCall("RtlSetObject", slot, (void*)ddk_pr, 1); +} diff --git a/dev/ddk/src/ddk_kernel_call_dispatch.S b/dev/ddk/src/ddk_kernel_call_dispatch.S new file mode 100644 index 00000000..3a9a57b5 --- /dev/null +++ b/dev/ddk/src/ddk_kernel_call_dispatch.S @@ -0,0 +1,36 @@ +/** + lang: asm + compiler: gnu + */ + +.globl __KernelCallDispatch + +.text + +/* Really simple function, takes our va-list, + and brings it to the trap handler in the Kernel. */ + +#ifdef __DDK_AMD64__ + +/* args rcx, rdx, r8, r9 */ +__KernelCallDispatch: + int $0x33 + ret + +#elif defined(__DDK_POWER64__) + +/* args r8, r9, r10, r11 */ +__KernelCallDispatch: + /* There is no specific interrupt request id for a system call in POWER. */ + sc + blr + +#elif defined(__DDK_ARM64__) + +/* args x0, x8, x9, x10, x11 is kept to tell that this is a Kernel call */ +__KernelCallDispatch: + /* There is no specific interrupt request id for a system call in ARM64 as well. */ + mov x9, #0x33 + svc #0 + +#endif diff --git a/dev/ddk/src/ddk_rt_cxx.cxx b/dev/ddk/src/ddk_rt_cxx.cxx new file mode 100644 index 00000000..4d5f2563 --- /dev/null +++ b/dev/ddk/src/ddk_rt_cxx.cxx @@ -0,0 +1,29 @@ +/* ------------------------------------------- + + Copyright ZKA Technologies. + + Purpose: DDK C++ runtime. + +------------------------------------------- */ + +#include + +void* operator new(size_t sz) +{ + return KernelAlloc(sz); +} + +void operator delete(void* ptr) +{ + KernelFree(ptr); +} + +void* operator new[](size_t sz) +{ + return KernelAlloc(sz); +} + +void operator delete[](void* ptr) +{ + KernelFree(ptr); +} diff --git a/dev/ddk/src/ddk_str.c b/dev/ddk/src/ddk_str.c new file mode 100644 index 00000000..2969a9e2 --- /dev/null +++ b/dev/ddk/src/ddk_str.c @@ -0,0 +1,39 @@ +/* ------------------------------------------- + + Copyright ZKA Technologies. + + Purpose: DDK Strings. + +------------------------------------------- */ + +#include + +DK_EXTERN size_t KernelStringLength(const char* in) +{ + if (in == nil) + return 0; + if (*in == 0) + return 0; + + size_t index = 0; + + while (in[index] != 0) + { + ++index; + } + + return index; +} + +DK_EXTERN int KernelStringCopy(char* dst, const char* src, size_t len) +{ + size_t index = 0; + + while (index != len) + { + dst[index] = src[index]; + ++index; + } + + return index; +} diff --git a/dev/ddk/src/ddk_ver.c b/dev/ddk/src/ddk_ver.c new file mode 100644 index 00000000..ff27634d --- /dev/null +++ b/dev/ddk/src/ddk_ver.c @@ -0,0 +1,25 @@ +/* ------------------------------------------- + + Copyright ZKA Technologies. + + Purpose: DDK versioning. + +------------------------------------------- */ + +#include + +#ifndef cDDKVersionHighest +#define cDDKVersionHighest 1 +#endif // !cDDKVersionHighest + +#ifndef cDDKVersionLowest +#define cDDKVersionLowest 1 +#endif // !cDDKVersionLowest + +#ifndef cDDKVersion +#define cDDKVersion 1 +#endif // !cDDKVersion + +int32_t c_api_version_highest = cDDKVersionHighest; +int32_t c_api_version_least = cDDKVersionLowest; +int32_t c_api_version = cDDKVersion; diff --git a/dev/ddk/str.h b/dev/ddk/str.h new file mode 100644 index 00000000..0b9bde21 --- /dev/null +++ b/dev/ddk/str.h @@ -0,0 +1,17 @@ +/* ------------------------------------------- + + Copyright ZKA Technologies. + + Purpose: DDK Strings. + +------------------------------------------- */ + +#pragma once + +#include + +/// @brief DDK equivalent of POSIX's string.h +/// @file KernelString.h + +DK_EXTERN size_t KernelStringLength(const char* in); +DK_EXTERN int KernelStringCopy(char* dst, const char* src, size_t len); diff --git a/dev/sci/makefile b/dev/sci/makefile index 05593216..c66d7a78 100644 --- a/dev/sci/makefile +++ b/dev/sci/makefile @@ -5,7 +5,7 @@ CC=g++ FLAGS=-I../ -shared -fPIC -D__ZKA_SYMS__ -OUTPUT=sci.dll +OUTPUT=zka-sci-cxx.dll .PHONY: build-sci build-sci: diff --git a/dev/sci/sci.json b/dev/sci/sci.json index 32a9238b..0b7c6bb7 100644 --- a/dev/sci/sci.json +++ b/dev/sci/sci.json @@ -3,7 +3,7 @@ "compiler_std": "c++20", "headers_path": ["../"], "sources_path": ["src/*.cxx"], - "output_name": "sci.dll", + "output_name": "zka-sci-cxx.dll", "compiler_flags": [ "-fPIC", "-ffreestanding", diff --git a/dev/sci/source_deploy.xml b/dev/sci/source_deploy.xml index a392015c..fda225db 100644 --- a/dev/sci/source_deploy.xml +++ b/dev/sci/source_deploy.xml @@ -1,9 +1,6 @@ - src/*.cxx - *.drawio *.hxx - *.inl *.idl diff --git a/dev/sci/xpcom_sms.idl b/dev/sci/xpcom_sms.idl deleted file mode 100644 index ae37d285..00000000 --- a/dev/sci/xpcom_sms.idl +++ /dev/null @@ -1,34 +0,0 @@ -/* ------------------------------------------- - -Copyright ZKA Technologies. - -File: rt.internal.inl -Purpose: Base code of XPCOM. - -------------------------------------------- */ - -/// @internal - -#ifndef __NDK__ -#define object class -#define protocol class -#define interface private -#define interface_method -#define CONST const -#define CHAR char -#define INT32 __INT32_TYPE__ -#define SIZE_T __SIZE_TYPE__ -#define _Output -#define _Input -#define clsid(X) - -#warning ! You may be using the clang version of the ZKAKit, please be cautious that some features mayn't be present. ! -#endif // !__NDK__ - -clsid("0943A614-0201-4107-8F8D-E909DF7F53C9") -protocol ISMS -{ -interface: - interface_method INT32 SendMessage(_Input CONST CHAR* bytes, _Input SIZE_T bytes_size); - interface_method INT32 RecvMessage(_Output CONST CHAR** bytes_in, _Input SIZE_T bytes_size); -}; diff --git a/dev/zba/amd64-efi.make b/dev/zba/amd64-efi.make index 1dee6a1d..49008035 100644 --- a/dev/zba/amd64-efi.make +++ b/dev/zba/amd64-efi.make @@ -54,8 +54,8 @@ FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mno-red-zone -D__NEWOSKRNL__ -D__NEWOSL BOOT_LOADER=newosldr.exe KERNEL=newoskrnl.exe DDK=ddk.dll -SCI=sci.dll -CRT=ndkcrt.dll +SCI=zka-sci-cxx.dll +CRT=zka-crt-cxx.dll SYS_CHK=syschk.sys STARTUP=startup.sys diff --git a/meta/LICENSE.rtf b/meta/LICENSE.rtf deleted file mode 100644 index 4ca3b7d2..00000000 --- a/meta/LICENSE.rtf +++ /dev/null @@ -1,289 +0,0 @@ -{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31506\stshfloch31506\stshfhich31506\stshfbi31507\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs1025{\fonttbl{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;} -{\f43\fbidi \fswiss\fcharset0\fprq2 Aptos;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} -{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2 Aptos Display;}{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} -{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2 Aptos;}{\fbiminor\f31507\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} -{\f55\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f56\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;}{\f58\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f59\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f60\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);} -{\f61\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\f62\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f63\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f385\fbidi \froman\fcharset238\fprq2 Cambria Math CE;} -{\f386\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}{\f388\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f389\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f392\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;} -{\f393\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}{\f475\fbidi \fswiss\fcharset238\fprq2 Aptos CE;}{\f476\fbidi \fswiss\fcharset204\fprq2 Aptos Cyr;}{\f478\fbidi \fswiss\fcharset161\fprq2 Aptos Greek;} -{\f479\fbidi \fswiss\fcharset162\fprq2 Aptos Tur;}{\f482\fbidi \fswiss\fcharset186\fprq2 Aptos Baltic;}{\f483\fbidi \fswiss\fcharset163\fprq2 Aptos (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} -{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} -{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} -{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} -{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} -{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} -{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Aptos Display CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Aptos Display Cyr;}{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Aptos Display Greek;} -{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Aptos Display Tur;}{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Aptos Display Baltic;}{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Aptos Display (Vietnamese);} -{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} -{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} -{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} -{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} -{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} -{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} -{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} -{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} -{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Aptos CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Aptos Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Aptos Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Aptos Tur;} -{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Aptos Baltic;}{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Aptos (Vietnamese);}{\fbiminor\f31578\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\fbiminor\f31579\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;} -{\fbiminor\f31581\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\fbiminor\f31582\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\fbiminor\f31583\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);} -{\fbiminor\f31584\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\fbiminor\f31585\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\fbiminor\f31586\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);} -{\f45\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f46\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\f48\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f49\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} -{\f50\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f51\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f52\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} -{\f53\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0; -\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green0\blue0;\red0\green0\blue0; -\caccentone\ctint255\cshade191\red15\green71\blue97;\ctextone\ctint166\cshade255\red89\green89\blue89;\ctextone\ctint216\cshade255\red39\green39\blue39;\ctextone\ctint191\cshade255\red64\green64\blue64; -\chyperlink\ctint255\cshade255\red70\green120\blue134;\red96\green94\blue92;\red225\green223\blue221;}{\*\defchp \f31506\fs24\kerning2 }{\*\defpap \ql \li0\ri0\sa160\sl278\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 } -\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl278\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \f31506\fs24\lang1036\langfe1033\kerning2\cgrid\langnp1036\langfenp1033 -\snext0 \sqformat \spriority0 Normal;}{\s1\ql \li0\ri0\sb360\sa80\sl278\slmult1\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs40\alang1025 \ltrch\fcs0 -\fs40\cf19\lang1036\langfe1033\kerning2\loch\f31502\hich\af31502\dbch\af31501\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext0 \slink15 \sqformat \spriority9 \styrsid16647705 heading 1;}{\s2\ql \li0\ri0\sb160\sa80\sl278\slmult1 -\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs32\alang1025 \ltrch\fcs0 -\fs32\cf19\lang1036\langfe1033\kerning2\loch\f31502\hich\af31502\dbch\af31501\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext0 \slink16 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid16647705 heading 2;}{\s3\ql \li0\ri0\sb160\sa80\sl278\slmult1 -\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs28\alang1025 \ltrch\fcs0 -\fs28\cf19\lang1036\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext0 \slink17 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid16647705 heading 3;}{\s4\ql \li0\ri0\sb80\sa40\sl278\slmult1 -\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af31503\afs24\alang1025 \ltrch\fcs0 -\i\fs24\cf19\lang1036\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext0 \slink18 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid16647705 heading 4;}{\s5\ql \li0\ri0\sb80\sa40\sl278\slmult1 -\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel4\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs24\alang1025 \ltrch\fcs0 -\fs24\cf19\lang1036\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext0 \slink19 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid16647705 heading 5;}{\s6\ql \li0\ri0\sb40\sl278\slmult1 -\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel5\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af31503\afs24\alang1025 \ltrch\fcs0 -\i\fs24\cf20\lang1036\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext0 \slink20 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid16647705 heading 6;}{\s7\ql \li0\ri0\sb40\sl278\slmult1 -\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel6\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs24\alang1025 \ltrch\fcs0 -\fs24\cf20\lang1036\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext0 \slink21 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid16647705 heading 7;}{\s8\ql \li0\ri0\sl278\slmult1 -\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel7\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af31503\afs24\alang1025 \ltrch\fcs0 -\i\fs24\cf21\lang1036\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext0 \slink22 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid16647705 heading 8;}{\s9\ql \li0\ri0\sl278\slmult1 -\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel8\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs24\alang1025 \ltrch\fcs0 -\fs24\cf21\lang1036\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext0 \slink23 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid16647705 heading 9;}{\*\cs10 \additive -\sunhideused \spriority1 Default Paragraph Font;}{\* -\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl278\slmult1 -\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \f31506\fs24\lang1033\langfe1033\kerning2\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}{\*\cs15 -\additive \rtlch\fcs1 \af31503\afs40 \ltrch\fcs0 \fs40\cf19\lang1036\langfe0\loch\f31502\hich\af31502\dbch\af31501\langnp1036 \sbasedon10 \slink1 \spriority9 \styrsid16647705 Heading 1 Char;}{\*\cs16 \additive \rtlch\fcs1 \af31503\afs32 \ltrch\fcs0 -\fs32\cf19\lang1036\langfe0\loch\f31502\hich\af31502\dbch\af31501\langnp1036 \sbasedon10 \slink2 \ssemihidden \spriority9 \styrsid16647705 Heading 2 Char;}{\*\cs17 \additive \rtlch\fcs1 \af31503\afs28 \ltrch\fcs0 -\fs28\cf19\lang1036\langfe0\dbch\af31501\langnp1036 \sbasedon10 \slink3 \ssemihidden \spriority9 \styrsid16647705 Heading 3 Char;}{\*\cs18 \additive \rtlch\fcs1 \ai\af31503 \ltrch\fcs0 \i\cf19\lang1036\langfe0\dbch\af31501\langnp1036 -\sbasedon10 \slink4 \ssemihidden \spriority9 \styrsid16647705 Heading 4 Char;}{\*\cs19 \additive \rtlch\fcs1 \af31503 \ltrch\fcs0 \cf19\lang1036\langfe0\dbch\af31501\langnp1036 \sbasedon10 \slink5 \ssemihidden \spriority9 \styrsid16647705 Heading 5 Char;} -{\*\cs20 \additive \rtlch\fcs1 \ai\af31503 \ltrch\fcs0 \i\cf20\lang1036\langfe0\dbch\af31501\langnp1036 \sbasedon10 \slink6 \ssemihidden \spriority9 \styrsid16647705 Heading 6 Char;}{\*\cs21 \additive \rtlch\fcs1 \af31503 \ltrch\fcs0 -\cf20\lang1036\langfe0\dbch\af31501\langnp1036 \sbasedon10 \slink7 \ssemihidden \spriority9 \styrsid16647705 Heading 7 Char;}{\*\cs22 \additive \rtlch\fcs1 \ai\af31503 \ltrch\fcs0 \i\cf21\lang1036\langfe0\dbch\af31501\langnp1036 -\sbasedon10 \slink8 \ssemihidden \spriority9 \styrsid16647705 Heading 8 Char;}{\*\cs23 \additive \rtlch\fcs1 \af31503 \ltrch\fcs0 \cf21\lang1036\langfe0\dbch\af31501\langnp1036 \sbasedon10 \slink9 \ssemihidden \spriority9 \styrsid16647705 Heading 9 Char;} -{\s24\ql \li0\ri0\sa80\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\contextualspace \rtlch\fcs1 \af31503\afs56\alang1025 \ltrch\fcs0 -\fs56\expnd-2\expndtw-10\lang1036\langfe1033\kerning28\loch\f31502\hich\af31502\dbch\af31501\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext0 \slink25 \sqformat \spriority10 \styrsid16647705 Title;}{\*\cs25 \additive \rtlch\fcs1 \af31503\afs56 -\ltrch\fcs0 \fs56\expnd-2\expndtw-10\lang1036\langfe0\kerning28\loch\f31502\hich\af31502\dbch\af31501\langnp1036 \sbasedon10 \slink24 \spriority10 \styrsid16647705 Title Char;}{\s26\ql \li0\ri0\sa160\sl278\slmult1 -\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ilvl1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs28\alang1025 \ltrch\fcs0 \fs28\expnd3\expndtw15\cf20\lang1036\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1036\langfenp1033 -\sbasedon0 \snext0 \slink27 \sqformat \spriority11 \styrsid16647705 Subtitle;}{\*\cs27 \additive \rtlch\fcs1 \af31503\afs28 \ltrch\fcs0 \fs28\expnd3\expndtw15\cf20\lang1036\langfe0\dbch\af31501\langnp1036 -\sbasedon10 \slink26 \spriority11 \styrsid16647705 Subtitle Char;}{\s28\qc \li0\ri0\sb160\sa160\sl278\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af31507\afs24\alang1025 \ltrch\fcs0 -\i\f31506\fs24\cf22\lang1036\langfe1033\kerning2\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext0 \slink29 \sqformat \spriority29 \styrsid16647705 Quote;}{\*\cs29 \additive \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\cf22\lang1036\langfe0\langnp1036 -\sbasedon10 \slink28 \spriority29 \styrsid16647705 Quote Char;}{\s30\ql \li720\ri0\sa160\sl278\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\contextualspace \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 -\f31506\fs24\lang1036\langfe1033\kerning2\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext30 \sqformat \spriority34 \styrsid16647705 List Paragraph;}{\*\cs31 \additive \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\cf19 -\sbasedon10 \sqformat \spriority21 \styrsid16647705 Intense Emphasis;}{\s32\qc \li864\ri864\sb360\sa360\sl278\slmult1\widctlpar\brdrt\brdrs\brdrw10\brsp200\brdrcf19 \brdrb\brdrs\brdrw10\brsp200\brdrcf19 -\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin864\lin864\itap0 \rtlch\fcs1 \ai\af31507\afs24\alang1025 \ltrch\fcs0 \i\f31506\fs24\cf19\lang1036\langfe1033\kerning2\cgrid\langnp1036\langfenp1033 -\sbasedon0 \snext0 \slink33 \sqformat \spriority30 \styrsid16647705 Intense Quote;}{\*\cs33 \additive \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\cf19\lang1036\langfe0\langnp1036 \sbasedon10 \slink32 \spriority30 \styrsid16647705 Intense Quote Char;}{\*\cs34 -\additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\scaps\expnd1\expndtw5\cf19 \sbasedon10 \sqformat \spriority32 \styrsid16647705 Intense Reference;}{\*\cs35 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf23 \sbasedon10 \sunhideused \styrsid16647705 Hyperlink;} -{\*\cs36 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \cf24\chshdng0\chcfpat0\chcbpat25 \sbasedon10 \ssemihidden \sunhideused \styrsid16647705 Unresolved Mention;}}{\*\pgptbl {\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp1\itap0 -\li0\ri0\sb0\sa0}{\pgp\ipgp2\itap0\li0\ri0\sb0\sa0}}{\*\rsidtbl \rsid555945\rsid1209735\rsid2585726\rsid10639840\rsid15544986\rsid16647705}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440 -\mintLim0\mnaryLim1}{\info{\author The geek 64}{\operator The geek 64}{\creatim\yr2024\mo9\dy28\hr10\min8}{\revtim\yr2024\mo9\dy28\hr10\min8}{\version2}{\edmins1}{\nofpages2}{\nofwords284}{\nofchars1625}{\nofcharsws1906}{\vern103}}{\*\xmlnstbl {\xmlns1 ht -tp://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect -\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1\noxlattoyen -\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1440\dgvorigin1440\dghshow1\dgvshow1 -\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct -\asianbrkrule\rsidroot16647705\newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal \nouicompat \fet0 -{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnqc\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnqc\pnstart1\pnindent720\pnhang -{\pntxta .}}{\*\pnseclvl3\pndec\pnqc\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6 -\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9 -\pnlcrm\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\sa160\sl278\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid16647705 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 -\f31506\fs24\lang1036\langfe1033\kerning2\cgrid\langnp1036\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705 ZKA OPERATING SYSTEM AND SDK}{\rtlch\fcs1 \af31507 \ltrch\fcs0 -\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 LICENSE AGREEMENT -\par -\par This License Agreement governs the use of the software product "}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705 ZKA Operating System}{\rtlch\fcs1 \af31507 \ltrch\fcs0 -\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 " (hereinafter referred to as "Software"). By installing or using the Software, you agree to comply with the terms of this agreement. -\par -\par 1. }{\rtlch\fcs1 \ab\af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 Grant of License}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705 ZKA Software B.V }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 -grants you a non-exclusive, non-transferable, revocable license to use the Software solely for personal or internal business purposes. -\par -\par 2. }{\rtlch\fcs1 \ab\af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 Restrictions}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 -\par - You may not copy, modify, or create derivative works of the Software. -\par - You may not distribute, lease, or sublicense the Software without prior written consent from }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705 ZKA Software B.V}{\rtlch\fcs1 \af31507 \ltrch\fcs0 -\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 . -\par - Reverse engineering, decompiling, or disassembling the Software is prohibited. -\par -\par 3. }{\rtlch\fcs1 \ab\af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 Intellectual Property}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 -\par The Software and all associated intellectual property rights are owned by }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705 ZKA Software B.V}{\rtlch\fcs1 \af31507 \ltrch\fcs0 -\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 . This agreement does not grant you any rights to the Software except as expressly set forth herein. -\par -\par 4. }{\rtlch\fcs1 \ab\af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 Termination}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 -\par This license will automatically terminate if you fail to comply with any of its terms. Upon termination, you must destroy all copies of the Software. -\par -\par 5. }{\rtlch\fcs1 \ab\af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 Warranty Disclaimer}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 -\par The Software is provided "AS IS" without warranty of any kind. }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705 ZKA Software B.V}{\rtlch\fcs1 \af31507 \ltrch\fcs0 -\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 makes no warranties, express or implied, and hereby disclaims all warranties, including but not limited to implied warranties of merchantability and fitness for a particular purpose. -\par -\par 6. }{\rtlch\fcs1 \ab\af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 Limitation of Liability}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 -\par In no event shall }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705 ZKA Software B.V}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 - be liable for any damages arising out of the use or inability to use the Software, even if }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705 ZKA Software B.V}{\rtlch\fcs1 \af31507 \ltrch\fcs0 -\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 has been advised of the possibility of such damages. -\par -\par 7. }{\rtlch\fcs1 \ab\af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 Governing Law}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 -\par This License Agreement is governed by the laws of }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705 The Kingdom of the Netherlands}{\rtlch\fcs1 \af31507 \ltrch\fcs0 -\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 , without regard to its conflict of law provisions. -\par -\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 ZKA Software B.V}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 -\par }{\field{\*\fldinst {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1043\langfe1033\langnp1043\insrsid16647705\charrsid16647705 HYPERLINK "http://www.zka-software.com"}}{\fldrslt {\rtlch\fcs1 \af31507 \ltrch\fcs0 -\cs35\ul\cf23\lang1043\langfe1033\langnp1043\insrsid16647705\charrsid16647705 www.zka-software.com}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af31507 \ltrch\fcs0 -\lang1043\langfe1033\langnp1043\insrsid16647705\charrsid16647705 - }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1043\langfe1033\langnp1043\insrsid16647705\charrsid16647705 Siriusdreef 3, }{\rtlch\fcs1 \af31507 \ltrch\fcs0 -\lang1043\langfe1033\langnp1043\insrsid16647705 1337}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1043\langfe1033\langnp1043\insrsid16647705\charrsid16647705 WT Hoofddorp}{\rtlch\fcs1 \af31507 \ltrch\fcs0 -\lang1043\langfe1033\langnp1043\insrsid15544986\charrsid16647705 -\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a -9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad -5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6 -b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0 -0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6 -a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f -c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512 -0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462 -a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865 -6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b -4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b -4757e8d3f729e245eb2b260a0238fd010000ffff0300504b03041400060008000000210094a9528694070000c7200000160000007468656d652f7468656d652f -7468656d65312e786d6cec595f8b1bc9117f0fe43b0cf32e6b66248da4c5f2a1bfdeb3776d63c90ef7d82bb566dadb333d4cb7762d8e83e07bca4b207077e421 -0779cb430839c8418ebce4c3186c92cb874875cf68d42db5bc7f30c184dd7dd1b47e55fd9baaeaaa52f5fdcf5e27d4b9c039272cedb9fe3dcf75703a670b9246 -3df7c56c52ebb80e17285d20ca52dc73d798bb9f3df8e52feea32311e3043b209ff223d4736321b2a37a9dcf6119f17b2cc3297cb7647982043ce6517d91a34b -d09bd07ae079613d4124759d1425a0f6e97249e6d8994995ee838df23185c75470b930a7f954aac68684c22ece7d89e06b3ea4b9738168cf857d16ec72865f0b -d7a1880bf8a2e77aeacfad3fb85f4747a51015076435b989fa2be54a81c579a0f6cca3b36a536f1c749a7ea55f01a8d8c78d3bf2bfd2a700683e87372db8e83a -fd56e8758212ab818a8f16ddddb6df30f19afec61e67bf1b0e82a6a15f810afdcd3dbc37e98e472d03af4005beb587ef7bc1a0db30f00a54e0c33d7c73dc6f07 -6303af403125e9f93e3a6c773a6189ae204b468fadf06e187aed5109dfa2201aaae8925b2c592a0ec55a825eb17c020009a44890d411eb0c2fd11ca2b89f09c6 -9d11e119456bd7c950ca382c7b81ef43e835bda0fa571647471869d2921730e17b4b928fc3e739c944cf7d045a5d0df2eea79fdebef9f1ed9bbfbffdfaebb76f -feea9c902816852a43ee18a5912ef7f39f7ef79fef7fedfcfb6f7ffcf99b6fed78aee3dfffe537effff1cf0fa987a3b635c5bbef7e78ffe30fef7effdb7ffdf9 -1b8bf67e8ece74f88c24983b4ff0a5f39c25f082ca14267f7c96df4c621623a24bf4d388a314c95d2cfac72236d04fd688220b6e804d3bbecc21d5d8800f57af -0cc2d3385f0962d1f8384e0ce0296374c072ab151ecbbd3433cf566964df3c5fe9b8e7085dd8f61ea2d4f0f27895418e253695c3181b349f51940a14e1140b47 -7ec7ce31b6bcdd178418763d25f39c71b614ce17c419206235c98c9c19d1b4153a2609f8656d2308fe366c73fad219306a7beb11be3091703610b5909f616a98 -f1215a0994d854ce504275839f2011db484ed7f95cc78db9004f47983267bcc09cdb649ee6f0be9ad31f23c86e56b79fd27562227341ce6d3a4f10633a72c4ce -87314a321b764ad258c77ececf214491f38c091bfc949927443e831f507ad0dd2f0936dc7d75367801594ea7b40d10f9cd2ab7f8f2216646fc4ed77489b02dd5 -f4f3c448b1fd9c58a363b08a8cd03ec198a24bb4c0d879f1b985c1806586cdb7a41fc590558eb12db01e213356e5738a39f44ab2b9d9cf9327841b213bc5113b -c0e774bd9378d6284d507e48f313f0ba6ef3f1590e87d142e1299d9febc027047a408817ab519e72d0a105f741adcf62641430f9ccedf1bace0dff5de78cc1b9 -7c65d0b8c6b904197c631948ecbacc076d3343d4d8601b3033449c135bba0511c3fd5b11595c95d8ca2ab7340fedd60dd01d194d4f42d22b3aa0ff5de703fdc5 -bb3f7c6f09c18fd3edd8151ba9ea867dcea15472bcd3dd1cc2edf63443962fc8a7dfd28cd02a7d86a18aece7abbb8ee6aea371ffef3b9a43e7f9ae8f39d46ddc -f5312ef417777d4c395af9387dccb67581ae468e178a318f1afa2407673e4b42e954ac293ee16aecc3e1d7cc62028b524ecd3b713503cc62f828cb1c6c60e0a2 -1c29192767e25744c4d31865301bf25da924e2a5ea883b19e3303252cb56dd124f57c9295b14a34e355bf28acaca91d8ae7b2d183a15eb30a612053a6c978b92 -9f9aa7025fc5365263d60d01297b1312da6626898685447bb37805093935fb382cba16161da97ee3aa3d5300b5ca2bf073db811fe93db7d594846046cee7d09a -2fa49f0a576fbcab9cf9313d7dc8984604c058b1781318ca579eee4aae075f4fbe5d116ad7f0b4414239a5082b9384b28c6af0780c3f82cbe894abd7a171535f -77b72e35e84953a8fd20beb734da9d0fb1b8adaf416e3737d054cf1434752e7b6ed86841c8cc51d673973032868f4906b1c3e52f2e4423b877998bbc38f0b7c9 -2c59cec508f1b830b84a3a857b122270ee5092f45cf9fa951b68aa7288e2e60790103e59725d482b9f1a3970bae964bc5ce2b9d0ddaead484b178f90e18b5c61 -fd5689df1e2c25d90adc3d8d1797ce195de5cf118458abed4b032e08879b03bfb0e682c0555895c8b6f1b75398cae4afdf45a9182ad611cd625456143d991770 -554f2a3aeaa9b281f654be33185433495908cf22596075a31ad5b42a5d05878355f76a2169392d696e6ba6915564d5b4673163874d19d8b1e5ed8abcc66a6362 -c8697a852f52f76ecaed6e72dd4e9f505509307865bfdb957e8dda7633839a64bc9f8665ce2e57cddab179c12ba85da74868593fdca8ddb15b5523acdbc1e2ad -2a3fc8ed462d2c2d377da5b2b4ba33d7afb5d9d92b481e23e872575470e54a98ebe608bab2a9ea498ab40147e4b5288f067c725639e9b95f7aad7e7318b48635 -afd31ad79a8da657ebb4fa8d5abfd56af8e396ef8d06c1575058449cf8ade2be7e02d717745ddedaabf5bd9bfb647343736fce923a5337f375455cdddcfbc1e1 -9b7b8740d2f93218fbcda01f0c6bc3911fd69ac128ac75da8d7e6d1884a3a00f293d9cf4bf729d0b05f607a3d164d20a6ae110704dafdfaaf5078d612dec8c07 -c1c41f37471e80cbccf91afa6fb0e9c616f051f17af05f000000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d -652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d -363f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d26245228 -2e3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9 -850528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c0200001300000000000000000000 -000000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b000000000000000000 -00000000300100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000190200 -007468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d001400060008000000210094a9528694070000c720000016000000000000 -00000000000000d60200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b010000270000 -00000000000000000000009e0a00007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000990b00000000} -{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d -617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169 -6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363 -656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e} -{\*\latentstyles\lsdstimax376\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1; -\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4; -\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7; -\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9; -\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3; -\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6; -\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong; -\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Table;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 1; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 3; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 6; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 6; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Contemporary;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Elegant;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Professional; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 2; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Theme;\lsdsemihidden1 \lsdlocked0 Placeholder Text; -\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2; -\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List; -\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1; -\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdlocked0 Revision; -\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1; -\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1; -\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2; -\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2; -\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2; -\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3; -\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3; -\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4; -\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4; -\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4; -\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5; -\lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5; -\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5; -\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6; -\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6; -\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6; -\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis; -\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography; -\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4; -\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4; -\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1; -\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1; -\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2; -\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2; -\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3; -\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4; -\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4; -\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5; -\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5; -\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6; -\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6; -\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark; -\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1; -\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1; -\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2; -\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3; -\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3; -\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4; -\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4; -\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5; -\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5; -\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6; -\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Mention; -\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hashtag;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Unresolved Mention;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Link;}}{\*\datastore 01050000 -02000000180000004d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000 -d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e50000000000000000000000001084 -f4977d11db01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000105000000000000}} \ No newline at end of file diff --git a/meta/sdk_install.iss b/meta/sdk_install.iss index 789bf29e..a22447bb 100644 --- a/meta/sdk_install.iss +++ b/meta/sdk_install.iss @@ -1,7 +1,7 @@ ; Script generated by the Inno Setup Script Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! -#define ZkaAppName "ZKA OS C++ Headers." +#define ZkaAppName "ZKA OS C/C++ and XPCOM Headers." #define ZkaAppVersion "1.00" #define ZkaAppPublisher "ZKA Software B.V" #define ZkaAppURL "https://www.zka-software.com/" @@ -19,7 +19,7 @@ AppSupportURL={#ZkaAppURL} AppUpdatesURL={#ZkaAppURL} DefaultDirName={autopf}\{#ZkaAppName} DefaultGroupName=ZKA OS Headers -LicenseFile=.\LICENSE.rtf +LicenseFile=.\zka_licensing.rtf ; Remove the following line to run in administrative install mode (install for all users.) PrivilegesRequired=lowest OutputBaseFilename=zka-sdk @@ -33,11 +33,12 @@ SetupIconFile=.\setup.ico Name: "english"; MessagesFile: "compiler:Default.isl" [Files] -Source: "..\dev\sci\*.hxx"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs -Source: "..\dev\crt\*.hxx"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs +Source: "..\dev\sci\*.hxx"; DestDir: "{app}\sci"; Flags: ignoreversion recursesubdirs createallsubdirs +Source: "..\dev\crt\*.hxx"; DestDir: "{app}\crt"; Flags: ignoreversion recursesubdirs createallsubdirs +Source: "..\dev\comm\*.idl"; DestDir: "{app}\comm"; Flags: ignoreversion recursesubdirs createallsubdirs ; NOTE: Don't use "Flags: ignoreversion" on any shared system files - + [Files] Source: ".\background.bmp"; Flags: dontcopy @@ -56,4 +57,4 @@ begin BackgroundImage.Stretch := True; ExtractTemporaryFile('background.bmp'); BackgroundImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\background.bmp')); -end; \ No newline at end of file +end; diff --git a/meta/zka_licensing.rtf b/meta/zka_licensing.rtf new file mode 100644 index 00000000..4ca3b7d2 --- /dev/null +++ b/meta/zka_licensing.rtf @@ -0,0 +1,289 @@ +{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31506\stshfloch31506\stshfhich31506\stshfbi31507\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs1025{\fonttbl{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;} +{\f43\fbidi \fswiss\fcharset0\fprq2 Aptos;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2 Aptos Display;}{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2 Aptos;}{\fbiminor\f31507\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} +{\f55\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f56\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;}{\f58\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f59\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f60\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);} +{\f61\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\f62\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f63\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f385\fbidi \froman\fcharset238\fprq2 Cambria Math CE;} +{\f386\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}{\f388\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f389\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f392\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;} +{\f393\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}{\f475\fbidi \fswiss\fcharset238\fprq2 Aptos CE;}{\f476\fbidi \fswiss\fcharset204\fprq2 Aptos Cyr;}{\f478\fbidi \fswiss\fcharset161\fprq2 Aptos Greek;} +{\f479\fbidi \fswiss\fcharset162\fprq2 Aptos Tur;}{\f482\fbidi \fswiss\fcharset186\fprq2 Aptos Baltic;}{\f483\fbidi \fswiss\fcharset163\fprq2 Aptos (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} +{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Aptos Display CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Aptos Display Cyr;}{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Aptos Display Greek;} +{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Aptos Display Tur;}{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Aptos Display Baltic;}{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Aptos Display (Vietnamese);} +{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} +{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} +{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Aptos CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Aptos Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Aptos Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Aptos Tur;} +{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Aptos Baltic;}{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Aptos (Vietnamese);}{\fbiminor\f31578\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\fbiminor\f31579\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;} +{\fbiminor\f31581\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\fbiminor\f31582\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\fbiminor\f31583\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);} +{\fbiminor\f31584\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\fbiminor\f31585\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\fbiminor\f31586\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);} +{\f45\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f46\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\f48\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f49\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\f50\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f51\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f52\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\f53\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0; +\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green0\blue0;\red0\green0\blue0; +\caccentone\ctint255\cshade191\red15\green71\blue97;\ctextone\ctint166\cshade255\red89\green89\blue89;\ctextone\ctint216\cshade255\red39\green39\blue39;\ctextone\ctint191\cshade255\red64\green64\blue64; +\chyperlink\ctint255\cshade255\red70\green120\blue134;\red96\green94\blue92;\red225\green223\blue221;}{\*\defchp \f31506\fs24\kerning2 }{\*\defpap \ql \li0\ri0\sa160\sl278\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 } +\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl278\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \f31506\fs24\lang1036\langfe1033\kerning2\cgrid\langnp1036\langfenp1033 +\snext0 \sqformat \spriority0 Normal;}{\s1\ql \li0\ri0\sb360\sa80\sl278\slmult1\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs40\alang1025 \ltrch\fcs0 +\fs40\cf19\lang1036\langfe1033\kerning2\loch\f31502\hich\af31502\dbch\af31501\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext0 \slink15 \sqformat \spriority9 \styrsid16647705 heading 1;}{\s2\ql \li0\ri0\sb160\sa80\sl278\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs32\alang1025 \ltrch\fcs0 +\fs32\cf19\lang1036\langfe1033\kerning2\loch\f31502\hich\af31502\dbch\af31501\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext0 \slink16 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid16647705 heading 2;}{\s3\ql \li0\ri0\sb160\sa80\sl278\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs28\alang1025 \ltrch\fcs0 +\fs28\cf19\lang1036\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext0 \slink17 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid16647705 heading 3;}{\s4\ql \li0\ri0\sb80\sa40\sl278\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af31503\afs24\alang1025 \ltrch\fcs0 +\i\fs24\cf19\lang1036\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext0 \slink18 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid16647705 heading 4;}{\s5\ql \li0\ri0\sb80\sa40\sl278\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel4\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs24\alang1025 \ltrch\fcs0 +\fs24\cf19\lang1036\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext0 \slink19 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid16647705 heading 5;}{\s6\ql \li0\ri0\sb40\sl278\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel5\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af31503\afs24\alang1025 \ltrch\fcs0 +\i\fs24\cf20\lang1036\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext0 \slink20 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid16647705 heading 6;}{\s7\ql \li0\ri0\sb40\sl278\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel6\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs24\alang1025 \ltrch\fcs0 +\fs24\cf20\lang1036\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext0 \slink21 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid16647705 heading 7;}{\s8\ql \li0\ri0\sl278\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel7\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af31503\afs24\alang1025 \ltrch\fcs0 +\i\fs24\cf21\lang1036\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext0 \slink22 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid16647705 heading 8;}{\s9\ql \li0\ri0\sl278\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel8\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs24\alang1025 \ltrch\fcs0 +\fs24\cf21\lang1036\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext0 \slink23 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid16647705 heading 9;}{\*\cs10 \additive +\sunhideused \spriority1 Default Paragraph Font;}{\* +\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl278\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 \f31506\fs24\lang1033\langfe1033\kerning2\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}{\*\cs15 +\additive \rtlch\fcs1 \af31503\afs40 \ltrch\fcs0 \fs40\cf19\lang1036\langfe0\loch\f31502\hich\af31502\dbch\af31501\langnp1036 \sbasedon10 \slink1 \spriority9 \styrsid16647705 Heading 1 Char;}{\*\cs16 \additive \rtlch\fcs1 \af31503\afs32 \ltrch\fcs0 +\fs32\cf19\lang1036\langfe0\loch\f31502\hich\af31502\dbch\af31501\langnp1036 \sbasedon10 \slink2 \ssemihidden \spriority9 \styrsid16647705 Heading 2 Char;}{\*\cs17 \additive \rtlch\fcs1 \af31503\afs28 \ltrch\fcs0 +\fs28\cf19\lang1036\langfe0\dbch\af31501\langnp1036 \sbasedon10 \slink3 \ssemihidden \spriority9 \styrsid16647705 Heading 3 Char;}{\*\cs18 \additive \rtlch\fcs1 \ai\af31503 \ltrch\fcs0 \i\cf19\lang1036\langfe0\dbch\af31501\langnp1036 +\sbasedon10 \slink4 \ssemihidden \spriority9 \styrsid16647705 Heading 4 Char;}{\*\cs19 \additive \rtlch\fcs1 \af31503 \ltrch\fcs0 \cf19\lang1036\langfe0\dbch\af31501\langnp1036 \sbasedon10 \slink5 \ssemihidden \spriority9 \styrsid16647705 Heading 5 Char;} +{\*\cs20 \additive \rtlch\fcs1 \ai\af31503 \ltrch\fcs0 \i\cf20\lang1036\langfe0\dbch\af31501\langnp1036 \sbasedon10 \slink6 \ssemihidden \spriority9 \styrsid16647705 Heading 6 Char;}{\*\cs21 \additive \rtlch\fcs1 \af31503 \ltrch\fcs0 +\cf20\lang1036\langfe0\dbch\af31501\langnp1036 \sbasedon10 \slink7 \ssemihidden \spriority9 \styrsid16647705 Heading 7 Char;}{\*\cs22 \additive \rtlch\fcs1 \ai\af31503 \ltrch\fcs0 \i\cf21\lang1036\langfe0\dbch\af31501\langnp1036 +\sbasedon10 \slink8 \ssemihidden \spriority9 \styrsid16647705 Heading 8 Char;}{\*\cs23 \additive \rtlch\fcs1 \af31503 \ltrch\fcs0 \cf21\lang1036\langfe0\dbch\af31501\langnp1036 \sbasedon10 \slink9 \ssemihidden \spriority9 \styrsid16647705 Heading 9 Char;} +{\s24\ql \li0\ri0\sa80\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\contextualspace \rtlch\fcs1 \af31503\afs56\alang1025 \ltrch\fcs0 +\fs56\expnd-2\expndtw-10\lang1036\langfe1033\kerning28\loch\f31502\hich\af31502\dbch\af31501\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext0 \slink25 \sqformat \spriority10 \styrsid16647705 Title;}{\*\cs25 \additive \rtlch\fcs1 \af31503\afs56 +\ltrch\fcs0 \fs56\expnd-2\expndtw-10\lang1036\langfe0\kerning28\loch\f31502\hich\af31502\dbch\af31501\langnp1036 \sbasedon10 \slink24 \spriority10 \styrsid16647705 Title Char;}{\s26\ql \li0\ri0\sa160\sl278\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ilvl1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs28\alang1025 \ltrch\fcs0 \fs28\expnd3\expndtw15\cf20\lang1036\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1036\langfenp1033 +\sbasedon0 \snext0 \slink27 \sqformat \spriority11 \styrsid16647705 Subtitle;}{\*\cs27 \additive \rtlch\fcs1 \af31503\afs28 \ltrch\fcs0 \fs28\expnd3\expndtw15\cf20\lang1036\langfe0\dbch\af31501\langnp1036 +\sbasedon10 \slink26 \spriority11 \styrsid16647705 Subtitle Char;}{\s28\qc \li0\ri0\sb160\sa160\sl278\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af31507\afs24\alang1025 \ltrch\fcs0 +\i\f31506\fs24\cf22\lang1036\langfe1033\kerning2\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext0 \slink29 \sqformat \spriority29 \styrsid16647705 Quote;}{\*\cs29 \additive \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\cf22\lang1036\langfe0\langnp1036 +\sbasedon10 \slink28 \spriority29 \styrsid16647705 Quote Char;}{\s30\ql \li720\ri0\sa160\sl278\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\contextualspace \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 +\f31506\fs24\lang1036\langfe1033\kerning2\cgrid\langnp1036\langfenp1033 \sbasedon0 \snext30 \sqformat \spriority34 \styrsid16647705 List Paragraph;}{\*\cs31 \additive \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\cf19 +\sbasedon10 \sqformat \spriority21 \styrsid16647705 Intense Emphasis;}{\s32\qc \li864\ri864\sb360\sa360\sl278\slmult1\widctlpar\brdrt\brdrs\brdrw10\brsp200\brdrcf19 \brdrb\brdrs\brdrw10\brsp200\brdrcf19 +\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin864\lin864\itap0 \rtlch\fcs1 \ai\af31507\afs24\alang1025 \ltrch\fcs0 \i\f31506\fs24\cf19\lang1036\langfe1033\kerning2\cgrid\langnp1036\langfenp1033 +\sbasedon0 \snext0 \slink33 \sqformat \spriority30 \styrsid16647705 Intense Quote;}{\*\cs33 \additive \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\cf19\lang1036\langfe0\langnp1036 \sbasedon10 \slink32 \spriority30 \styrsid16647705 Intense Quote Char;}{\*\cs34 +\additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\scaps\expnd1\expndtw5\cf19 \sbasedon10 \sqformat \spriority32 \styrsid16647705 Intense Reference;}{\*\cs35 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf23 \sbasedon10 \sunhideused \styrsid16647705 Hyperlink;} +{\*\cs36 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \cf24\chshdng0\chcfpat0\chcbpat25 \sbasedon10 \ssemihidden \sunhideused \styrsid16647705 Unresolved Mention;}}{\*\pgptbl {\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp1\itap0 +\li0\ri0\sb0\sa0}{\pgp\ipgp2\itap0\li0\ri0\sb0\sa0}}{\*\rsidtbl \rsid555945\rsid1209735\rsid2585726\rsid10639840\rsid15544986\rsid16647705}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440 +\mintLim0\mnaryLim1}{\info{\author The geek 64}{\operator The geek 64}{\creatim\yr2024\mo9\dy28\hr10\min8}{\revtim\yr2024\mo9\dy28\hr10\min8}{\version2}{\edmins1}{\nofpages2}{\nofwords284}{\nofchars1625}{\nofcharsws1906}{\vern103}}{\*\xmlnstbl {\xmlns1 ht +tp://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect +\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1\noxlattoyen +\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1440\dgvorigin1440\dghshow1\dgvshow1 +\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct +\asianbrkrule\rsidroot16647705\newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal \nouicompat \fet0 +{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnqc\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnqc\pnstart1\pnindent720\pnhang +{\pntxta .}}{\*\pnseclvl3\pndec\pnqc\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6 +\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9 +\pnlcrm\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\sa160\sl278\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid16647705 \rtlch\fcs1 \af31507\afs24\alang1025 \ltrch\fcs0 +\f31506\fs24\lang1036\langfe1033\kerning2\cgrid\langnp1036\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705 ZKA OPERATING SYSTEM AND SDK}{\rtlch\fcs1 \af31507 \ltrch\fcs0 +\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 LICENSE AGREEMENT +\par +\par This License Agreement governs the use of the software product "}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705 ZKA Operating System}{\rtlch\fcs1 \af31507 \ltrch\fcs0 +\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 " (hereinafter referred to as "Software"). By installing or using the Software, you agree to comply with the terms of this agreement. +\par +\par 1. }{\rtlch\fcs1 \ab\af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 Grant of License}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 +\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705 ZKA Software B.V }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 +grants you a non-exclusive, non-transferable, revocable license to use the Software solely for personal or internal business purposes. +\par +\par 2. }{\rtlch\fcs1 \ab\af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 Restrictions}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 +\par - You may not copy, modify, or create derivative works of the Software. +\par - You may not distribute, lease, or sublicense the Software without prior written consent from }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705 ZKA Software B.V}{\rtlch\fcs1 \af31507 \ltrch\fcs0 +\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 . +\par - Reverse engineering, decompiling, or disassembling the Software is prohibited. +\par +\par 3. }{\rtlch\fcs1 \ab\af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 Intellectual Property}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 +\par The Software and all associated intellectual property rights are owned by }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705 ZKA Software B.V}{\rtlch\fcs1 \af31507 \ltrch\fcs0 +\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 . This agreement does not grant you any rights to the Software except as expressly set forth herein. +\par +\par 4. }{\rtlch\fcs1 \ab\af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 Termination}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 +\par This license will automatically terminate if you fail to comply with any of its terms. Upon termination, you must destroy all copies of the Software. +\par +\par 5. }{\rtlch\fcs1 \ab\af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 Warranty Disclaimer}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 +\par The Software is provided "AS IS" without warranty of any kind. }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705 ZKA Software B.V}{\rtlch\fcs1 \af31507 \ltrch\fcs0 +\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 makes no warranties, express or implied, and hereby disclaims all warranties, including but not limited to implied warranties of merchantability and fitness for a particular purpose. +\par +\par 6. }{\rtlch\fcs1 \ab\af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 Limitation of Liability}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 +\par In no event shall }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705 ZKA Software B.V}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 + be liable for any damages arising out of the use or inability to use the Software, even if }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705 ZKA Software B.V}{\rtlch\fcs1 \af31507 \ltrch\fcs0 +\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 has been advised of the possibility of such damages. +\par +\par 7. }{\rtlch\fcs1 \ab\af31507 \ltrch\fcs0 \b\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 Governing Law}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 +\par This License Agreement is governed by the laws of }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705 The Kingdom of the Netherlands}{\rtlch\fcs1 \af31507 \ltrch\fcs0 +\lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 , without regard to its conflict of law provisions. +\par +\par }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 ZKA Software B.V}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid16647705\charrsid16647705 +\par }{\field{\*\fldinst {\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1043\langfe1033\langnp1043\insrsid16647705\charrsid16647705 HYPERLINK "http://www.zka-software.com"}}{\fldrslt {\rtlch\fcs1 \af31507 \ltrch\fcs0 +\cs35\ul\cf23\lang1043\langfe1033\langnp1043\insrsid16647705\charrsid16647705 www.zka-software.com}}}\sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\rtlch\fcs1 \af31507 \ltrch\fcs0 +\lang1043\langfe1033\langnp1043\insrsid16647705\charrsid16647705 - }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1043\langfe1033\langnp1043\insrsid16647705\charrsid16647705 Siriusdreef 3, }{\rtlch\fcs1 \af31507 \ltrch\fcs0 +\lang1043\langfe1033\langnp1043\insrsid16647705 1337}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1043\langfe1033\langnp1043\insrsid16647705\charrsid16647705 WT Hoofddorp}{\rtlch\fcs1 \af31507 \ltrch\fcs0 +\lang1043\langfe1033\langnp1043\insrsid15544986\charrsid16647705 +\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a +9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad +5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6 +b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0 +0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6 +a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f +c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512 +0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462 +a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865 +6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b +4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b +4757e8d3f729e245eb2b260a0238fd010000ffff0300504b03041400060008000000210094a9528694070000c7200000160000007468656d652f7468656d652f +7468656d65312e786d6cec595f8b1bc9117f0fe43b0cf32e6b66248da4c5f2a1bfdeb3776d63c90ef7d82bb566dadb333d4cb7762d8e83e07bca4b207077e421 +0779cb430839c8418ebce4c3186c92cb874875cf68d42db5bc7f30c184dd7dd1b47e55fd9baaeaaa52f5fdcf5e27d4b9c039272cedb9fe3dcf75703a670b9246 +3df7c56c52ebb80e17285d20ca52dc73d798bb9f3df8e52feea32311e3043b209ff223d4736321b2a37a9dcf6119f17b2cc3297cb7647982043ce6517d91a34b +d09bd07ae079613d4124759d1425a0f6e97249e6d8994995ee838df23185c75470b930a7f954aac68684c22ece7d89e06b3ea4b9738168cf857d16ec72865f0b +d7a1880bf8a2e77aeacfad3fb85f4747a51015076435b989fa2be54a81c579a0f6cca3b36a536f1c749a7ea55f01a8d8c78d3bf2bfd2a700683e87372db8e83a +fd56e8758212ab818a8f16ddddb6df30f19afec61e67bf1b0e82a6a15f810afdcd3dbc37e98e472d03af4005beb587ef7bc1a0db30f00a54e0c33d7c73dc6f07 +6303af403125e9f93e3a6c773a6189ae204b468fadf06e187aed5109dfa2201aaae8925b2c592a0ec55a825eb17c020009a44890d411eb0c2fd11ca2b89f09c6 +9d11e119456bd7c950ca382c7b81ef43e835bda0fa571647471869d2921730e17b4b928fc3e739c944cf7d045a5d0df2eea79fdebef9f1ed9bbfbffdfaebb76f +feea9c902816852a43ee18a5912ef7f39f7ef79fef7fedfcfb6f7ffcf99b6fed78aee3dfffe537effff1cf0fa987a3b635c5bbef7e78ffe30fef7effdb7ffdf9 +1b8bf67e8ece74f88c24983b4ff0a5f39c25f082ca14267f7c96df4c621623a24bf4d388a314c95d2cfac72236d04fd688220b6e804d3bbecc21d5d8800f57af +0cc2d3385f0962d1f8384e0ce0296374c072ab151ecbbd3433cf566964df3c5fe9b8e7085dd8f61ea2d4f0f27895418e253695c3181b349f51940a14e1140b47 +7ec7ce31b6bcdd178418763d25f39c71b614ce17c419206235c98c9c19d1b4153a2609f8656d2308fe366c73fad219306a7beb11be3091703610b5909f616a98 +f1215a0994d854ce504275839f2011db484ed7f95cc78db9004f47983267bcc09cdb649ee6f0be9ad31f23c86e56b79fd27562227341ce6d3a4f10633a72c4ce +87314a321b764ad258c77ececf214491f38c091bfc949927443e831f507ad0dd2f0936dc7d75367801594ea7b40d10f9cd2ab7f8f2216646fc4ed77489b02dd5 +f4f3c448b1fd9c58a363b08a8cd03ec198a24bb4c0d879f1b985c1806586cdb7a41fc590558eb12db01e213356e5738a39f44ab2b9d9cf9327841b213bc5113b +c0e774bd9378d6284d507e48f313f0ba6ef3f1590e87d142e1299d9febc027047a408817ab519e72d0a105f741adcf62641430f9ccedf1bace0dff5de78cc1b9 +7c65d0b8c6b904197c631948ecbacc076d3343d4d8601b3033449c135bba0511c3fd5b11595c95d8ca2ab7340fedd60dd01d194d4f42d22b3aa0ff5de703fdc5 +bb3f7c6f09c18fd3edd8151ba9ea867dcea15472bcd3dd1cc2edf63443962fc8a7dfd28cd02a7d86a18aece7abbb8ee6aea371ffef3b9a43e7f9ae8f39d46ddc +f5312ef417777d4c395af9387dccb67581ae468e178a318f1afa2407673e4b42e954ac293ee16aecc3e1d7cc62028b524ecd3b713503cc62f828cb1c6c60e0a2 +1c29192767e25744c4d31865301bf25da924e2a5ea883b19e3303252cb56dd124f57c9295b14a34e355bf28acaca91d8ae7b2d183a15eb30a612053a6c978b92 +9f9aa7025fc5365263d60d01297b1312da6626898685447bb37805093935fb382cba16161da97ee3aa3d5300b5ca2bf073db811fe93db7d594846046cee7d09a +2fa49f0a576fbcab9cf9313d7dc8984604c058b1781318ca579eee4aae075f4fbe5d116ad7f0b4414239a5082b9384b28c6af0780c3f82cbe894abd7a171535f +77b72e35e84953a8fd20beb734da9d0fb1b8adaf416e3737d054cf1434752e7b6ed86841c8cc51d673973032868f4906b1c3e52f2e4423b877998bbc38f0b7c9 +2c59cec508f1b830b84a3a857b122270ee5092f45cf9fa951b68aa7288e2e60790103e59725d482b9f1a3970bae964bc5ce2b9d0ddaead484b178f90e18b5c61 +fd5689df1e2c25d90adc3d8d1797ce195de5cf118458abed4b032e08879b03bfb0e682c0555895c8b6f1b75398cae4afdf45a9182ad611cd625456143d991770 +554f2a3aeaa9b281f654be33185433495908cf22596075a31ad5b42a5d05878355f76a2169392d696e6ba6915564d5b4673163874d19d8b1e5ed8abcc66a6362 +c8697a852f52f76ecaed6e72dd4e9f505509307865bfdb957e8dda7633839a64bc9f8665ce2e57cddab179c12ba85da74868593fdca8ddb15b5523acdbc1e2ad +2a3fc8ed462d2c2d377da5b2b4ba33d7afb5d9d92b481e23e872575470e54a98ebe608bab2a9ea498ab40147e4b5288f067c725639e9b95f7aad7e7318b48635 +afd31ad79a8da657ebb4fa8d5abfd56af8e396ef8d06c1575058449cf8ade2be7e02d717745ddedaabf5bd9bfb647343736fce923a5337f375455cdddcfbc1e1 +9b7b8740d2f93218fbcda01f0c6bc3911fd69ac128ac75da8d7e6d1884a3a00f293d9cf4bf729d0b05f607a3d164d20a6ae110704dafdfaaf5078d612dec8c07 +c1c41f37471e80cbccf91afa6fb0e9c616f051f17af05f000000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d +652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d +363f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d26245228 +2e3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9 +850528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c0200001300000000000000000000 +000000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b000000000000000000 +00000000300100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000190200 +007468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d001400060008000000210094a9528694070000c720000016000000000000 +00000000000000d60200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b010000270000 +00000000000000000000009e0a00007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000990b00000000} +{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d +617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169 +6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363 +656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e} +{\*\latentstyles\lsdstimax376\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9; +\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3; +\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6; +\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong; +\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Table;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 1; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 6; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 6; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Contemporary;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Elegant;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Professional; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Theme;\lsdsemihidden1 \lsdlocked0 Placeholder Text; +\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2; +\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List; +\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1; +\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdlocked0 Revision; +\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1; +\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1; +\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2; +\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2; +\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2; +\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3; +\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3; +\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4; +\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4; +\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4; +\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5; +\lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5; +\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5; +\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6; +\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6; +\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6; +\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis; +\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4; +\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4; +\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1; +\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1; +\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2; +\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2; +\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3; +\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4; +\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4; +\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5; +\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5; +\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6; +\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6; +\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark; +\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1; +\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1; +\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2; +\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3; +\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3; +\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4; +\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4; +\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5; +\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5; +\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6; +\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Mention; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hashtag;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Unresolved Mention;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Link;}}{\*\datastore 01050000 +02000000180000004d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000 +d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e50000000000000000000000001084 +f4977d11db01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000105000000000000}} \ No newline at end of file -- cgit v1.2.3