cryptlib
3.4.1
|
#include "kernel/thread.h"
Go to the source code of this file.
Classes | |
struct | OBJECT_INFO |
struct | OBJECT_STATE_INFO |
struct | MESSAGE_QUEUE_DATA |
struct | SEMAPHORE_INFO |
struct | THREAD_INFO |
struct | KERNEL_DATA |
Macros | |
#define | isValidHandle(handle) ( ( handle ) >= 0 && ( handle ) < krnlData->objectTableSize ) |
#define | isValidObject(handle) |
#define | isFreeObject(handle) |
#define | isInternalObject(handle) ( krnlData->objectTable[ handle ].flags & OBJECT_FLAG_INTERNAL ) |
#define | isObjectAccessValid(objectHandle, message) |
#define | isInvalidObjectState(handle) ( krnlData->objectTable[ ( handle ) ].flags & OBJECT_FLAGMASK_STATUS ) |
#define | isInUse(handle) ( krnlData->objectTable[ ( handle ) ].lockCount > 0 ) |
#define | isObjectOwner(handle) THREAD_SAME( krnlData->objectTable[ ( handle ) ].lockOwner, THREAD_SELF() ) |
#define | isInHighState(handle) ( krnlData->objectTable[ ( handle ) ].flags & OBJECT_FLAG_HIGH ) |
#define | isSameOwningObject(handle1, handle2) |
#define | isValidMessage(message) ( ( message ) > MESSAGE_NONE && ( message ) < MESSAGE_LAST ) |
#define | isInternalMessage(message) ( ( message ) & MESSAGE_FLAG_INTERNAL ) |
#define | isValidType(type) ( ( type ) > OBJECT_TYPE_NONE && ( type ) < OBJECT_TYPE_LAST ) |
#define | isValidSubtype(subtypeMask, subtype) ( ( ( subtypeMask ) & ( subtype ) ) == ( subtype ) ) |
#define | fullObjectCheck(objectHandle, message) |
#define | isParamMessage(message) |
#define | checkObjectOwnership(objectPtr) |
#define | getObjectStatusValue(flags) |
#define | OBJECT_FLAG_NONE 0x0000 /* Non-flag */ |
#define | OBJECT_FLAG_INTERNAL 0x0001 /* Internal-use only */ |
#define | OBJECT_FLAG_NOTINITED 0x0002 /* Still being initialised */ |
#define | OBJECT_FLAG_HIGH 0x0004 /* In 'high' security state */ |
#define | OBJECT_FLAG_SIGNALLED 0x0008 /* In signalled state */ |
#define | OBJECT_FLAG_SECUREMALLOC 0x0010 /* Uses secure memory */ |
#define | OBJECT_FLAG_OWNED 0x0020 /* Object is bound to a thread */ |
#define | OBJECT_FLAG_ATTRLOCKED 0x0040 /* Security properties can't be modified */ |
#define | OBJECT_FLAGMASK_STATUS ( OBJECT_FLAG_NOTINITED | OBJECT_FLAG_SIGNALLED ) |
#define | MESSAGE_QUEUE_SIZE 16 |
#define | CLEAR_KERNEL_DATA() |
#define checkObjectOwnership | ( | objectPtr | ) |
#define CLEAR_KERNEL_DATA | ( | ) |
#define fullObjectCheck | ( | objectHandle, | |
message | |||
) |
#define getObjectStatusValue | ( | flags | ) |
#define isFreeObject | ( | handle | ) |
#define isInHighState | ( | handle | ) | ( krnlData->objectTable[ ( handle ) ].flags & OBJECT_FLAG_HIGH ) |
#define isInternalMessage | ( | message | ) | ( ( message ) & MESSAGE_FLAG_INTERNAL ) |
#define isInternalObject | ( | handle | ) | ( krnlData->objectTable[ handle ].flags & OBJECT_FLAG_INTERNAL ) |
#define isInUse | ( | handle | ) | ( krnlData->objectTable[ ( handle ) ].lockCount > 0 ) |
#define isInvalidObjectState | ( | handle | ) | ( krnlData->objectTable[ ( handle ) ].flags & OBJECT_FLAGMASK_STATUS ) |
#define isObjectAccessValid | ( | objectHandle, | |
message | |||
) |
#define isObjectOwner | ( | handle | ) | THREAD_SAME( krnlData->objectTable[ ( handle ) ].lockOwner, THREAD_SELF() ) |
#define isParamMessage | ( | message | ) |
#define isSameOwningObject | ( | handle1, | |
handle2 | |||
) |
#define isValidHandle | ( | handle | ) | ( ( handle ) >= 0 && ( handle ) < krnlData->objectTableSize ) |
#define isValidMessage | ( | message | ) | ( ( message ) > MESSAGE_NONE && ( message ) < MESSAGE_LAST ) |
#define isValidObject | ( | handle | ) |
#define isValidSubtype | ( | subtypeMask, | |
subtype | |||
) | ( ( ( subtypeMask ) & ( subtype ) ) == ( subtype ) ) |
#define isValidType | ( | type | ) | ( ( type ) > OBJECT_TYPE_NONE && ( type ) < OBJECT_TYPE_LAST ) |
#define OBJECT_FLAG_ATTRLOCKED 0x0040 /* Security properties can't be modified */ |
#define OBJECT_FLAG_HIGH 0x0004 /* In 'high' security state */ |
#define OBJECT_FLAG_INTERNAL 0x0001 /* Internal-use only */ |
#define OBJECT_FLAG_NOTINITED 0x0002 /* Still being initialised */ |
#define OBJECT_FLAG_OWNED 0x0020 /* Object is bound to a thread */ |
#define OBJECT_FLAG_SECUREMALLOC 0x0010 /* Uses secure memory */ |
#define OBJECT_FLAG_SIGNALLED 0x0008 /* In signalled state */ |
#define OBJECT_FLAGMASK_STATUS ( OBJECT_FLAG_NOTINITED | OBJECT_FLAG_SIGNALLED ) |
enum INIT_LEVEL |
enum SEMAPHORE_STATE |
enum SHUTDOWN_LEVEL |
CHECK_RETVAL int checkTargetType | ( | IN_HANDLE const int | objectHandle, |
const long | targets | ||
) |
void clearSemaphore | ( | IN_ENUM(SEMAPHORE) const SEMAPHORE_TYPE | semaphore | ) |
Definition at line 159 of file semaphore.c.
CHECK_RETVAL int cloneObject | ( | IN_HANDLE const int | objectHandle, |
IN_HANDLE const int | clonedObject, | ||
STDC_UNUSED const void * | dummy1, | ||
STDC_UNUSED const BOOLEAN | dummy2 | ||
) |
CHECK_RETVAL int decRefCount | ( | IN_HANDLE const int | objectHandle, |
STDC_UNUSED const int | dummy1, | ||
STDC_UNUSED const void * | dummy2, | ||
const BOOLEAN | isInternal | ||
) |
CHECK_RETVAL int destroyObjectData | ( | IN_HANDLE const int | objectHandle | ) |
CHECK_RETVAL int destroyObjects | ( | void | ) |
void endAttributeACL | ( | void | ) |
Definition at line 4917 of file attr_acl.c.
void endCertMgmtACL | ( | void | ) |
Definition at line 244 of file certm_acl.c.
void endMechanismACL | ( | void | ) |
Definition at line 456 of file mech_acl.c.
void endSemaphores | ( | void | ) |
Definition at line 70 of file semaphore.c.
CHECK_RETVAL_PTR const void* findAttributeACL | ( | IN_ATTRIBUTE const CRYPT_ATTRIBUTE_TYPE | attribute, |
const BOOLEAN | isInternalMessage | ||
) |
Definition at line 4930 of file attr_acl.c.
CHECK_RETVAL int findTargetType | ( | IN_HANDLE const int | originalObjectHandle, |
const long | targets | ||
) |
CHECK_RETVAL IN_MESSAGE const MESSAGE_TYPE IN_BUFFER_C | ( | sizeof(MESSAGE_CERTMGMT_INFO) | ) | const |
CHECK_RETVAL IN_MESSAGE const MESSAGE_TYPE IN_BUFFER_C | ( | sizeof(MESSAGE_KEYMGMT_INFO) | ) | const |
CHECK_RETVAL IN_MESSAGE const MESSAGE_TYPE IN_BUFFER_C | ( | sizeof(MECHANISM_WRAP_INFO) | ) | const |
CHECK_RETVAL IN_MESSAGE const MESSAGE_TYPE IN_BUFFER_C | ( | sizeof(MECHANISM_SIGN_INFO) | ) | const |
CHECK_RETVAL IN_MESSAGE const MESSAGE_TYPE IN_BUFFER_C | ( | sizeof(MECHANISM_DERIVE_INFO) | ) | const |
CHECK_RETVAL IN_MESSAGE const MESSAGE_TYPE IN_BUFFER_C | ( | sizeof(MECHANISM_KDF_INFO) | ) | const |
CHECK_RETVAL IN_MESSAGE const MESSAGE_TYPE IN_BUFFER_C | ( | sizeof(MESSAGE_DATA) | ) | const |
CHECK_RETVAL IN_MESSAGE const MESSAGE_TYPE IN_BUFFER_C | ( | sizeof(MESSAGE_CREATEOBJECT_INFO) | ) | const |
CHECK_RETVAL IN_BUFFER_C | ( | sizeof(int) | ) |
CHECK_RETVAL IN_MESSAGE const MESSAGE_TYPE IN_ENUM | ( | CRYPT_CERTACTION | ) | const |
CHECK_RETVAL IN_MESSAGE const MESSAGE_TYPE IN_ENUM | ( | KEYMGMT_ITEM | ) | const |
CHECK_RETVAL IN_MESSAGE const MESSAGE_TYPE IN_ENUM | ( | MECHANISM | ) | const |
CHECK_RETVAL IN_MESSAGE const MESSAGE_TYPE IN_ENUM | ( | OBJECT | ) | const |
CHECK_RETVAL IN_ENUM | ( | SETDEP_OPTION | ) | const |
CHECK_RETVAL int incRefCount | ( | IN_HANDLE const int | objectHandle, |
STDC_UNUSED const int | dummy1, | ||
STDC_UNUSED const void * | dummy2, | ||
STDC_UNUSED const BOOLEAN | dummy3 | ||
) |
CHECK_RETVAL IN_ATTRIBUTE const CRYPT_ATTRIBUTE_TYPE OUT_BUFFER_FIXED_C | ( | sizeof(int) | ) |
CHECK_RETVAL int postDispatchChangeState | ( | IN_HANDLE const int | objectHandle, |
STDC_UNUSED const MESSAGE_TYPE | dummy1, | ||
STDC_UNUSED const void * | dummy2, | ||
STDC_UNUSED const int | dummy3, | ||
STDC_UNUSED const void * | dummy4 | ||
) |
CHECK_RETVAL int postDispatchChangeStateOpt | ( | IN_HANDLE const int | objectHandle, |
STDC_UNUSED const MESSAGE_TYPE | dummy1, | ||
STDC_UNUSED const void * | dummy2, | ||
const int | messageValue, | ||
IN TYPECAST(ATTRIBUTE_ACL *) const void * | auxInfo | ||
) |
CHECK_RETVAL int postDispatchForwardToDependentObject | ( | IN_HANDLE const int | objectHandle, |
IN_MESSAGE const MESSAGE_TYPE | message, | ||
STDC_UNUSED const void * | dummy1, | ||
IN_ENUM(MESSAGE_CHECK) const int | messageValue, | ||
STDC_UNUSED const void * | dummy2 | ||
) |
CHECK_RETVAL int postDispatchHandleZeroise | ( | IN_HANDLE const int | objectHandle, |
IN_MESSAGE const MESSAGE_TYPE | message, | ||
STDC_UNUSED const void * | dummy2, | ||
IN_ENUM(MESSAGE_USERMGMT) const int | messageValue, | ||
STDC_UNUSED const void * | dummy3 | ||
) |
CHECK_RETVAL int postDispatchMakeObjectExternal | ( | STDC_UNUSED const int | dummy, |
IN_MESSAGE const MESSAGE_TYPE | message, | ||
const void * | messageDataPtr, | ||
const int | messageValue, | ||
const void * | auxInfo | ||
) |
CHECK_RETVAL int postDispatchUpdateUsageCount | ( | IN_HANDLE const int | objectHandle, |
STDC_UNUSED const MESSAGE_TYPE | dummy1, | ||
STDC_UNUSED const void * | dummy2, | ||
STDC_UNUSED const int | dummy3, | ||
STDC_UNUSED const void * | dummy4 | ||
) |
CHECK_RETVAL int preDispatchCheckActionAccess | ( | IN_HANDLE const int | objectHandle, |
IN_MESSAGE const MESSAGE_TYPE | message, | ||
STDC_UNUSED const void * | dummy1, | ||
STDC_UNUSED const int | dummy2, | ||
STDC_UNUSED const void * | dummy3 | ||
) |
CHECK_RETVAL int preDispatchCheckCheckParam | ( | IN_HANDLE const int | objectHandle, |
IN_MESSAGE const MESSAGE_TYPE | message, | ||
STDC_UNUSED const void * | dummy1, | ||
IN_ENUM(MESSAGE_CHECK) const int | messageValue, | ||
STDC_UNUSED const void * | dummy2 | ||
) |
CHECK_RETVAL int preDispatchCheckCompareParam | ( | IN_HANDLE const int | objectHandle, |
IN_MESSAGE const MESSAGE_TYPE | message, | ||
const void * | messageDataPtr, | ||
IN_ENUM(MESSAGE_COMPARE) const int | messageValue, | ||
STDC_UNUSED const void * | dummy2 | ||
) |
CHECK_RETVAL int preDispatchCheckExportAccess | ( | IN_HANDLE const int | objectHandle, |
IN_MESSAGE const MESSAGE_TYPE | message, | ||
const void * | messageDataPtr, | ||
IN_ENUM(CRYPT_CERTFORMAT) const int | messageValue, | ||
STDC_UNUSED const void * | dummy2 | ||
) |
CHECK_RETVAL int preDispatchCheckParamHandleOpt | ( | IN_HANDLE const int | objectHandle, |
IN_MESSAGE const MESSAGE_TYPE | message, | ||
STDC_UNUSED const void * | dummy1, | ||
const int | messageValue, | ||
IN TYPECAST(MESSAGE_ACL *) const void * | auxInfo | ||
) |
CHECK_RETVAL int preDispatchCheckState | ( | IN_HANDLE const int | objectHandle, |
IN_MESSAGE const MESSAGE_TYPE | message, | ||
STDC_UNUSED const void * | dummy1, | ||
STDC_UNUSED const int | dummy2, | ||
STDC_UNUSED const void * | dummy3 | ||
) |
CHECK_RETVAL int preDispatchCheckStateParamHandle | ( | IN_HANDLE const int | objectHandle, |
IN_MESSAGE const MESSAGE_TYPE | message, | ||
STDC_UNUSED const void * | dummy1, | ||
const int | messageValue, | ||
IN TYPECAST(MESSAGE_ACL *) const void * | auxInfo | ||
) |
CHECK_RETVAL int preDispatchCheckTrustMgmtAccess | ( | IN_HANDLE const int | objectHandle, |
IN_MESSAGE const MESSAGE_TYPE | message, | ||
const void * | messageDataPtr, | ||
STDC_UNUSED const int | messageValue, | ||
STDC_UNUSED const void * | dummy | ||
) |
CHECK_RETVAL int preDispatchCheckUserMgmtAccess | ( | IN_HANDLE const int | objectHandle, |
IN_MESSAGE const MESSAGE_TYPE | message, | ||
STDC_UNUSED const void * | dummy1, | ||
IN_ENUM(MESSAGE_USERMGMT) const int | messageValue, | ||
STDC_UNUSED const void * | dummy2 | ||
) |
CHECK_RETVAL int preDispatchSignalDependentObjects | ( | IN_HANDLE const int | objectHandle, |
STDC_UNUSED const MESSAGE_TYPE | dummy1, | ||
STDC_UNUSED const void * | dummy2, | ||
STDC_UNUSED const int | dummy3, | ||
STDC_UNUSED const void * | dummy4 | ||
) |
void setSemaphore | ( | IN_ENUM(SEMAPHORE) const SEMAPHORE_TYPE | semaphore, |
const MUTEX_HANDLE | object | ||
) |
Definition at line 132 of file semaphore.c.
CHECK_RETVAL STDC_NONNULL_ARG | ( | (3) | ) | const |
CHECK_RETVAL STDC_NONNULL_ARG | ( | (5) | ) | const |
CHECK_RETVAL STDC_NONNULL_ARG | ( | (2) | ) | const |
CHECK_RETVAL STDC_NONNULL_ARG | ( | (1) | ) |
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Definition at line 26 of file ctx_attr.c.
CHECK_RETVAL IN_MESSAGE const MESSAGE_TYPE IN_OPT const void IN_ATTRIBUTE const int IN TYPECAST | ( | ATTRIBUTE_ACL * | ) | const |
CHECK_RETVAL IN_ATTRIBUTE const CRYPT_ATTRIBUTE_TYPE attribute |
CHECK_RETVAL STDC_UNUSED const BOOLEAN dummy |
CHECK_RETVAL IN_MESSAGE const MESSAGE_TYPE STDC_UNUSED const int dummy1 |
CHECK_RETVAL IN_MESSAGE const MESSAGE_TYPE STDC_UNUSED const int STDC_UNUSED const void* dummy2 |
CHECK_RETVAL IN_MESSAGE const MESSAGE_TYPE message |
CHECK_RETVAL IN_MESSAGE const MESSAGE_TYPE IN_OPT const void* messageDataPtr |
CHECK_RETVAL IN_MESSAGE const MESSAGE_TYPE IN_OPT const void IN_ATTRIBUTE const int messageValue |
CHECK_RETVAL OUT_PTR OBJECT_INFO** objectInfoPtrPtr |
CHECK_RETVAL const int targetType |